ERC-20
Overview
Max Total Supply
1,000,000 RED
Holders
106
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
1.829621959 REDValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
RedFlagCrypto
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-17 */ //SPDX-License-Identifier: MIT /* Red Flag Crypto - If You Suspect a red flag, let us know! 'If you don't design your own life plan, chances are you'll fall into someone else's plan. And guess what they have planned for you? Not Much!' By the end of this year your life could look completley different if you want it to. A lot can happen in a year. But you need to be intentional about what you want to change. The change starts here with Red Flag. Telegram: http://t.me/RedFlagPortal Twitter: https://twitter.com/RedFlagcrypto Website: https://redflagcrypto.net/ */ pragma solidity 0.8.17; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function 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; constructor(address creatorOwner) { _owner = creatorOwner; } modifier onlyOwner() { require(msg.sender == _owner, "Only contract _owner can call this function"); _; } function transferOwnership(address payable newOwner) external onlyOwner { _owner = newOwner; emit OwnershipTransferred(newOwner); } event OwnershipTransferred(address _owner); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function WETH() external pure returns (address); function factory() external pure returns (address); function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); } contract RedFlagCrypto is IERC20, Auth { uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 1_000_000 * (10**_decimals); string private constant _name = "Red Flag"; string private constant _symbol = "RED"; uint8 private _buyTaxRate = 99; //at launch against botters uint8 private _sellTaxRate = 4; uint16 private _taxSharesMarketing = 4; uint16 private _taxSharesTreasury = 1; uint16 private _taxSharesBurn = 0; uint16 private _taxSharesLP = 0; uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesTreasury + _taxSharesBurn + _taxSharesLP; address payable private _walletMarketing = payable(0xbb82686CE8265b3B4cAD492adc3B0c5753F00cD0); address payable private _walletTreasury = payable(0xEDCFf419647bceEfdC505B017c195e73615c85a4); uint256 private _maxTxAmount = _totalSupply; uint256 private _maxWalletAmount = _totalSupply; uint256 private _taxSwapMin = _totalSupply * 10 / 100000; uint256 private _taxSwapMax = _totalSupply * 85 / 100000; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _noFees; mapping (address => bool) private _noLimits; address constant private _burnWallet = address(0); address private _lpOwner; address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //uniswap v2 router IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress); address private _primaryLP; mapping (address => bool) private _isLP; bool private _tradingOpen; bool private _inTaxSwap = false; modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; } event TokensAirdropped(uint256 totalWallets, uint256 totalTokens); event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount); constructor() Auth(msg.sender) { _lpOwner = msg.sender; _balances[address(this)] = 1_000_000 * (10 ** _decimals); emit Transfer(address(0), address(this), _balances[address(this)]); _balances[_owner] = _totalSupply - _balances[address(this)]; emit Transfer(address(0), _owner, _balances[_owner]); _noFees[_owner] = true; _noFees[address(this)] = true; _noFees[_swapRouterAddress] = true; _noFees[_walletMarketing] = true; _noFees[_walletTreasury] = true; _noFees[_burnWallet] = true; _noLimits[_owner] = true; _noLimits[address(this)] = true; _noLimits[_swapRouterAddress] = true; _noLimits[_walletMarketing] = true; _noLimits[_walletTreasury] = true; _noLimits[_burnWallet] = true; } receive() external payable {} function totalSupply() external pure 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 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 transfer(address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(msg.sender), "Trading not open"); return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(sender), "Trading not open"); if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount; } return _transferFrom(sender, recipient, amount); } function openTrading() external onlyOwner { require(!_tradingOpen, "trading already open"); _openTrading(); } function waveTheFlag() external onlyOwner { require(_tradingOpen, "Trading not open"); require(_buyTaxRate == 99, "Flag already waved"); //set taxes to the default 4/4 values shortly after launch _buyTaxRate = 4; _sellTaxRate = 4; } function _approveRouter(uint256 _tokenAmount) internal { if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) { _allowances[address(this)][_swapRouterAddress] = type(uint256).max; emit Approval(address(this), _swapRouterAddress, type(uint256).max); } } function addInitialLiquidity() external onlyOwner lockTaxSwap { require(_primaryLP == address(0), "LP exists"); require(address(this).balance>0, "No ETH in contract"); require(_balances[address(this)]>0, "No tokens in contract"); _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH()); _addLiquidity(_balances[address(this)], address(this).balance, false); _isLP[_primaryLP] = true; } function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal { address lpTokenRecipient = _lpOwner; if ( autoburn ) { lpTokenRecipient = address(0); } _approveRouter(_tokenAmount); _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp ); } function _openTrading() internal { _maxTxAmount = _totalSupply * 1 / 100; _maxWalletAmount = _totalSupply * 1 / 100; _tradingOpen = true; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(sender != address(0), "No transfers from Zero wallet"); if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); } if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); } if ( sender != address(this) && recipient != address(this) && sender != _owner ) { require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); } uint256 _taxAmount = _calculateTax(sender, recipient, amount); uint256 _transferAmount = amount - _taxAmount; _balances[sender] = _balances[sender] - amount; if ( _taxAmount > 0 ) { _balances[address(this)] = _balances[address(this)] + _taxAmount; } _balances[recipient] = _balances[recipient] + _transferAmount; emit Transfer(sender, recipient, amount); return true; } function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) { bool limitCheckPassed = true; if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) { if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; } else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; } } return limitCheckPassed; } function _checkTradingOpen(address sender) private view returns (bool){ bool checkResult = false; if ( _tradingOpen ) { checkResult = true; } else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; } return checkResult; } function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) { uint256 taxAmount; if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { taxAmount = 0; } else if ( _isLP[sender] ) { taxAmount = amount * _buyTaxRate / 100; } else if ( _isLP[recipient] ) { taxAmount = amount * _sellTaxRate / 100; } return taxAmount; } function getExemptions(address wallet) external view returns (bool noFees, bool noLimits) { return ( _noFees[wallet], _noLimits[wallet] ); } function setExemptions(address wallet, bool noFees, bool noLimits) external onlyOwner { if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); } _noFees[ wallet ] = noFees; _noLimits[ wallet ] = noLimits; } function setExtraLP(address lpContractAddress, bool isLiquidityPool) external onlyOwner { require(lpContractAddress != _primaryLP, "Cannot change the primary LP"); _isLP[lpContractAddress] = isLiquidityPool; if (isLiquidityPool) { _noFees[lpContractAddress] = false; _noLimits[lpContractAddress] = false; } } function isLP(address wallet) external view returns (bool) { return _isLP[wallet]; } function getTaxInfo() external view returns (uint8 buyTax, uint8 sellTax, uint16 sharesMarketing, uint16 sharesTreasury, uint16 sharesLP, uint16 sharesTokenBurn ) { return ( _buyTaxRate, _sellTaxRate, _taxSharesMarketing, _taxSharesTreasury, _taxSharesLP, _taxSharesBurn); } function setTaxRates(uint8 newBuyTax, uint8 newSellTax) external onlyOwner { require(newBuyTax + newSellTax <= 8, "Roundtrip too high"); _buyTaxRate = newBuyTax; _sellTaxRate = newSellTax; } function setTaxDistribution(uint16 sharesTokenBurn, uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment) external onlyOwner { _taxSharesLP = sharesAutoLP; _taxSharesMarketing = sharesMarketing; _taxSharesTreasury = sharesDevelopment; _totalTaxShares = sharesTokenBurn + sharesAutoLP + sharesMarketing + sharesDevelopment; } function getAddresses() external view returns (address owner, address primaryLP, address marketing, address development, address LPowner ) { return ( _owner, _primaryLP, _walletMarketing, _walletTreasury, _lpOwner); } function setTaxWallets(address newMarketing, address newTreasury, address newLpOwner) external onlyOwner { require(!_isLP[newMarketing] && !_isLP[newTreasury] && !_isLP[newLpOwner], "LP cannot be tax wallet"); _walletMarketing = payable(newMarketing); _walletTreasury = payable(newTreasury); _lpOwner = newLpOwner; _noFees[newMarketing] = true; _noFees[newTreasury] = true; _noLimits[newMarketing] = true; _noLimits[newTreasury] = true; } function getLimitsInfo() external view returns (uint256 maxTX, uint256 maxWallet, uint256 taxSwapMin, uint256 taxSwapMax ) { return ( _maxTxAmount, _maxWalletAmount, _taxSwapMin, _taxSwapMax); } function increaseLimits(uint16 maxTxAmtPermile, uint16 maxWalletAmtPermile) external onlyOwner { uint256 newTxAmt = _totalSupply * maxTxAmtPermile / 1000 + 1; require(newTxAmt >= _maxTxAmount, "tx limit too low"); _maxTxAmount = newTxAmt; uint256 newWalletAmt = _totalSupply * maxWalletAmtPermile / 1000 + 1; require(newWalletAmt >= _maxWalletAmount, "wallet limit too low"); _maxWalletAmount = newWalletAmt; } function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner { _taxSwapMin = _totalSupply * minValue / minDivider; _taxSwapMax = _totalSupply * maxValue / maxDivider; require(_taxSwapMax>=_taxSwapMin, "MinMax error"); require(_taxSwapMax>_totalSupply / 100000, "Upper threshold too low"); require(_taxSwapMax<_totalSupply / 100, "Upper threshold too high"); } function _burnTokens(address fromWallet, uint256 amount) private { if ( amount > 0 ) { _balances[fromWallet] -= amount; _balances[_burnWallet] += amount; emit Transfer(fromWallet, _burnWallet, amount); } } function _swapTaxAndLiquify() private lockTaxSwap { uint256 _taxTokensAvailable = balanceOf(address(this)); if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) { if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; } uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2; uint256 _tokensToBurn = _taxTokensAvailable * _taxSharesBurn / _totalTaxShares; _burnTokens(address(this), _tokensToBurn); uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP - _tokensToBurn; if( _tokensToSwap > 10**_decimals ) { uint256 _ethPreSwap = address(this).balance; _swapTaxTokensForEth(_tokensToSwap); uint256 _ethSwapped = address(this).balance - _ethPreSwap; if ( _taxSharesLP > 0 ) { uint256 _ethWeiAmount = _ethSwapped * _taxSharesLP / _totalTaxShares ; _approveRouter(_tokensForLP); _addLiquidity(_tokensForLP, _ethWeiAmount, false); } } uint256 _contractETHBalance = address(this).balance; if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); } } } function _swapTaxTokensForEth(uint256 tokenAmount) private { _approveRouter(tokenAmount); address[] memory path = new address[](2); path[0] = address(this); path[1] = _primarySwapRouter.WETH(); _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp); } function _distributeTaxEth(uint256 amount) private { uint16 _taxShareTotal = _taxSharesMarketing + _taxSharesTreasury; if (_taxShareTotal > 0) { uint256 marketingAmount = amount * _taxSharesMarketing / _taxShareTotal; uint256 treasuryAmount = amount * _taxSharesTreasury / _taxShareTotal; if ( marketingAmount > 0 ) { _walletMarketing.transfer(marketingAmount); } if ( treasuryAmount > 0 ) { _walletTreasury.transfer(treasuryAmount); } } } function manualTaxSwapAndSend(bool swapTokens, bool sendEth) external onlyOwner { if (swapTokens) { uint256 taxTokenBalance = balanceOf(address(this)); require(taxTokenBalance > 0, "No tokens"); _swapTaxTokensForEth(taxTokenBalance); } if (sendEth) { uint256 ethBalance = address(this).balance; require(ethBalance > 0, "No tokens"); _distributeTaxEth(address(this).balance); } } function burnTokens(uint256 amount) external { uint256 _tokensAvailable = balanceOf(msg.sender); require(amount <= _tokensAvailable, "Token balance too low"); _burnTokens(msg.sender, amount); emit TokensBurned(msg.sender, amount); } function airdrop(address[] calldata addresses, uint256[] calldata tokenAmounts) external onlyOwner { require(addresses.length <= 250,"Wallet count over 250 (gas risk)"); require(addresses.length == tokenAmounts.length,"Address and token amount list mismach"); uint256 airdropTotal = 0; for(uint i=0; i < addresses.length; i++){ airdropTotal += (tokenAmounts[i] * 10**_decimals); } require(_balances[msg.sender] >= airdropTotal, "Token balance lower than airdrop total"); for(uint i=0; i < addresses.length; i++){ _balances[msg.sender] -= (tokenAmounts[i] * 10**_decimals); _balances[addresses[i]] += (tokenAmounts[i] * 10**_decimals); emit Transfer(msg.sender, addresses[i], (tokenAmounts[i] * 10**_decimals) ); } emit TokensAirdropped(addresses.length, airdropTotal); } }
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":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","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":"addInitialLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getAddresses","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"primaryLP","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"development","type":"address"},{"internalType":"address","name":"LPowner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getExemptions","outputs":[{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimitsInfo","outputs":[{"internalType":"uint256","name":"maxTX","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxInfo","outputs":[{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesTreasury","type":"uint16"},{"internalType":"uint16","name":"sharesLP","type":"uint16"},{"internalType":"uint16","name":"sharesTokenBurn","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxAmtPermile","type":"uint16"},{"internalType":"uint16","name":"maxWalletAmtPermile","type":"uint16"}],"name":"increaseLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"swapTokens","type":"bool"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpContractAddress","type":"address"},{"internalType":"bool","name":"isLiquidityPool","type":"bool"}],"name":"setExtraLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesTokenBurn","type":"uint16"},{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"}],"name":"setTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"internalType":"uint8","name":"newSellTax","type":"uint8"}],"name":"setTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwapLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketing","type":"address"},{"internalType":"address","name":"newTreasury","type":"address"},{"internalType":"address","name":"newLpOwner","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"waveTheFlag","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526063600060146101000a81548160ff021916908360ff1602179055506004600060156101000a81548160ff021916908360ff1602179055506004600060166101000a81548161ffff021916908361ffff1602179055506001600060186101000a81548161ffff021916908361ffff160217905550600080601a6101000a81548161ffff021916908361ffff160217905550600080601c6101000a81548161ffff021916908361ffff1602179055506000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16600060189054906101000a900461ffff16600060169054906101000a900461ffff1662000102919062000bc0565b6200010e919062000bc0565b6200011a919062000bc0565b6000601e6101000a81548161ffff021916908361ffff16021790555073bb82686ce8265b3b4cad492adc3b0c5753f00cd0600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073edcff419647bceefdc505b017c195e73615c85a4600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620001f0919062000d68565b620f424062000200919062000db9565b6003556009600a62000213919062000d68565b620f424062000223919062000db9565b600455620186a0600a6009600a6200023c919062000d68565b620f42406200024c919062000db9565b62000258919062000db9565b62000264919062000e33565b600555620186a060556009600a6200027d919062000d68565b620f42406200028d919062000db9565b62000299919062000db9565b620002a5919062000e33565b600655737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f60016101000a81548160ff0219169083151502179055503480156200032557600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620003b9919062000d68565b620f4240620003c9919062000db9565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620004ab919062000e7c565b60405180910390a3600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a62000503919062000d68565b620f424062000513919062000db9565b6200051f919062000e99565b600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000663919062000e7c565b60405180910390a36001600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000ed4565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bcd8262000b83565b915062000bda8362000b83565b9250828201905061ffff81111562000bf75762000bf662000b91565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562000c5c5780860481111562000c345762000c3362000b91565b5b600185161562000c445780820291505b808102905062000c548562000bfd565b945062000c14565b94509492505050565b60008262000c77576001905062000d4a565b8162000c87576000905062000d4a565b816001811462000ca0576002811462000cab5762000ce1565b600191505062000d4a565b60ff84111562000cc05762000cbf62000b91565b5b8360020a91508482111562000cda5762000cd962000b91565b5b5062000d4a565b5060208310610133831016604e8410600b841016171562000d1b5782820a90508381111562000d155762000d1462000b91565b5b62000d4a565b62000d2a848484600162000c0a565b9250905081840481111562000d445762000d4362000b91565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d758262000d51565b915062000d828362000d5b565b925062000db17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c65565b905092915050565b600062000dc68262000d51565b915062000dd38362000d51565b925082820262000de38162000d51565b9150828204841483151762000dfd5762000dfc62000b91565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e408262000d51565b915062000e4d8362000d51565b92508262000e605762000e5f62000e04565b5b828204905092915050565b62000e768162000d51565b82525050565b600060208201905062000e93600083018462000e6b565b92915050565b600062000ea68262000d51565b915062000eb38362000d51565b925082820390508181111562000ece5762000ecd62000b91565b5b92915050565b6158ba8062000ee46000396000f3fe6080604052600436106101bb5760003560e01c8063931b68ea116100ec578063d6f155ad1161008a578063e4dbc45b11610064578063e4dbc45b14610610578063f2fde38b14610639578063f9fdeae314610662578063fd9650241461068b576101c2565b8063d6f155ad14610593578063dd62ed3e146105bc578063e209d692146105f9576101c2565b8063a39fac12116100c6578063a39fac12146104e7578063a9059cbb14610516578063b142180314610553578063c9567bf91461057c576101c2565b8063931b68ea1461045557806395d89b41146104935780639fda0581146104be576101c2565b806323b872dd116101595780636d1b229d116101335780636d1b229d146103845780636f013db9146103ad57806370a08231146103db5780637df0f76714610418576101c2565b806323b872dd146102f3578063313ce56714610330578063672434821461035b576101c2565b806318160ddd1161019557806318160ddd1461024657806318839bc31461027157806321c42e111461029a57806322a62e1e146102c3576101c2565b80630210a83d146101c757806306fdde03146101de578063095ea7b314610209576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106b4565b005b3480156101ea57600080fd5b506101f3610b73565b6040516102009190613ebf565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190613f7f565b610bb0565b60405161023d9190613fda565b60405180910390f35b34801561025257600080fd5b5061025b610ca2565b6040516102689190614004565b60405180910390f35b34801561027d57600080fd5b506102986004803603810190610293919061404b565b610cc5565b005b3480156102a657600080fd5b506102c160048036038101906102bc919061409e565b610ea2565b005b3480156102cf57600080fd5b506102d86110d2565b6040516102ea96959493929190614117565b60405180910390f35b3480156102ff57600080fd5b5061031a60048036038101906103159190614178565b611153565b6040516103279190613fda565b60405180910390f35b34801561033c57600080fd5b5061034561135d565b60405161035291906141cb565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d91906142a1565b611366565b005b34801561039057600080fd5b506103ab60048036038101906103a69190614322565b6117be565b005b3480156103b957600080fd5b506103c261186a565b6040516103d2949392919061434f565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190614394565b61188a565b60405161040f9190614004565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a9190614394565b6118d3565b60405161044c9190613fda565b60405180910390f35b34801561046157600080fd5b5061047c60048036038101906104779190614394565b611929565b60405161048a9291906143c1565b60405180910390f35b34801561049f57600080fd5b506104a86119cf565b6040516104b59190613ebf565b60405180910390f35b3480156104ca57600080fd5b506104e560048036038101906104e091906143ea565b611a0c565b005b3480156104f357600080fd5b506104fc611dfb565b60405161050d95949392919061444c565b60405180910390f35b34801561052257600080fd5b5061053d60048036038101906105389190613f7f565b611ec2565b60405161054a9190613fda565b60405180910390f35b34801561055f57600080fd5b5061057a600480360381019061057591906144cb565b611f1f565b005b34801561058857600080fd5b506105916120db565b005b34801561059f57600080fd5b506105ba60048036038101906105b5919061450b565b6121c3565b005b3480156105c857600080fd5b506105e360048036038101906105de919061454b565b61230f565b6040516105f09190614004565b60405180910390f35b34801561060557600080fd5b5061060e612396565b005b34801561061c57600080fd5b50610637600480360381019061063291906145c7565b612502565b005b34801561064557600080fd5b50610660600480360381019061065b919061466c565b61273d565b005b34801561066e57600080fd5b5061068960048036038101906106849190614699565b612845565b005b34801561069757600080fd5b506106b260048036038101906106ad919061472c565b61296e565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610742576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610739906147de565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e59061484a565b60405180910390fd5b60004711610831576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610828906148b6565b60405180910390fd5b6000600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108aa90614922565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610920573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109449190614957565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f19190614957565b6040518363ffffffff1660e01b8152600401610a0e929190614984565b6020604051808303816000875af1158015610a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a519190614957565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610adc600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612a88565b6001600e6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908315150217905550565b60606040518060400160405280600881526020017f52656420466c6167000000000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c909190614004565b60405180910390a36001905092915050565b60006009600a610cb29190614b0f565b620f4240610cc09190614b5a565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4a906147de565b60405180910390fd5b8080610d5c5750815b15610def57600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de590614be8565b60405180910390fd5b5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f27906147de565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb790614c54565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156110ce576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600080600080600080600060149054906101000a900460ff16600060159054906101000a900460ff16600060169054906101000a900461ffff16600060189054906101000a900461ffff166000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16955095509550955095509550909192939495565b600061115e84612b76565b61119d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119490614cc0565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113495781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112c89190614ce0565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611354848484612c51565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113eb906147de565b60405180910390fd5b60fa84849050111561143b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143290614d60565b60405180910390fd5b818190508484905014611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a90614df2565b60405180910390fd5b6000805b858590508110156114e4576009600a6114a09190614b0f565b8484838181106114b3576114b2614e12565b5b905060200201356114c49190614b5a565b826114cf9190614e41565b915080806114dc90614e75565b915050611487565b5080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90614f2f565b60405180910390fd5b60005b8585905081101561177a576009600a6115839190614b0f565b84848381811061159657611595614e12565b5b905060200201356115a79190614b5a565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115f59190614ce0565b925050819055506009600a61160a9190614b0f565b84848381811061161d5761161c614e12565b5b9050602002013561162e9190614b5a565b6007600088888581811061164557611644614e12565b5b905060200201602081019061165a9190614394565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116a39190614e41565b925050819055508585828181106116bd576116bc614e12565b5b90506020020160208101906116d29190614394565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a61172e9190614b0f565b87878681811061174157611740614e12565b5b905060200201356117529190614b5a565b60405161175f9190614004565b60405180910390a3808061177290614e75565b91505061156a565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba9546485859050826040516117af929190614f4f565b60405180910390a15050505050565b60006117c93361188a565b90508082111561180e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180590614fc4565b60405180910390fd5b6118183383613180565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb68360405161185e9190614004565b60405180910390a25050565b600080600080600354600454600554600654935093509350935090919293565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600381526020017f5245440000000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a91906147de565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b3e5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b945750600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bca90615030565b60405180910390fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094509450945094509091929394565b6000611ecd33612b76565b611f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0390614cc0565b60405180910390fd5b611f17338484612c51565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa4906147de565b60405180910390fd5b600060016103e88461ffff166009600a611fc79190614b0f565b620f4240611fd59190614b5a565b611fdf9190614b5a565b611fe9919061507f565b611ff39190614e41565b905060035481101561203a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612031906150fc565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a61205b9190614b0f565b620f42406120699190614b5a565b6120739190614b5a565b61207d919061507f565b6120879190614e41565b90506004548110156120ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c590615168565b60405180910390fd5b8060048190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612169576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612160906147de565b60405180910390fd5b600f60009054906101000a900460ff16156121b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b0906151d4565b60405180910390fd5b6121c16132a0565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612251576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612248906147de565b60405180910390fd5b81156122b25760006122623061188a565b9050600081116122a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229e90615240565b60405180910390fd5b6122b081613331565b505b801561230b57600047905060008111612300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f790615240565b60405180910390fd5b61230947613550565b505b5050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241b906147de565b60405180910390fd5b600f60009054906101000a900460ff16612473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246a90614cc0565b60405180910390fd5b6063600060149054906101000a900460ff1660ff16146124c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bf906152ac565b60405180910390fd5b6004600060146101000a81548160ff021916908360ff1602179055506004600060156101000a81548160ff021916908360ff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612590576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612587906147de565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6125ac9190614b0f565b620f42406125ba9190614b5a565b6125c49190614b5a565b6125ce919061507f565b6005819055508063ffffffff168263ffffffff166009600a6125f09190614b0f565b620f42406125fe9190614b5a565b6126089190614b5a565b612612919061507f565b600681905550600554600654101561265f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265690615318565b60405180910390fd5b620186a06009600a6126719190614b0f565b620f424061267f9190614b5a565b612689919061507f565b600654116126cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c390615384565b60405180910390fd5b60646009600a6126dc9190614b0f565b620f42406126ea9190614b5a565b6126f4919061507f565b60065410612737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272e906153f0565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c2906147de565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161283a919061546f565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ca906147de565b60405180910390fd5b826000601c6101000a81548161ffff021916908361ffff16021790555081600060166101000a81548161ffff021916908361ffff16021790555080600060186101000a81548161ffff021916908361ffff16021790555080828486612938919061548a565b612942919061548a565b61294c919061548a565b6000601e6101000a81548161ffff021916908361ffff16021790555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146129fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f3906147de565b60405180910390fd5b60088183612a0a91906154c0565b60ff161115612a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4590615541565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612aba57600090505b612ac3846136df565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612b2a9695949392919061559c565b60606040518083038185885af1158015612b48573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b6d9190615612565b50505050505050565b60008060009050600f60009054906101000a900460ff1615612b9b5760019050612c48565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c3d5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c4757600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb8906156b1565b60405180910390fd5b600f60009054906101000a900460ff16612db757600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d775750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dad90614cc0565b60405180910390fd5b5b600f60019054906101000a900460ff16158015612e1d5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e2b57612e2a6138c9565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612e9357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612eeb575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612f3b57612efb848484613abf565b612f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f319061571d565b60405180910390fd5b5b6000612f48858585613c56565b905060008184612f589190614ce0565b905083600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa59190614ce0565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156130805781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461303c9190614e41565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130cb9190614e41565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161316b9190614004565b60405180910390a36001925050509392505050565b600081111561329c5780600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131d89190614ce0565b9250508190555080600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461322e9190614e41565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132939190614004565b60405180910390a35b5050565b606460016009600a6132b29190614b0f565b620f42406132c09190614b5a565b6132ca9190614b5a565b6132d4919061507f565b600381905550606460016009600a6132ec9190614b0f565b620f42406132fa9190614b5a565b6133049190614b5a565b61330e919061507f565b6004819055506001600f60006101000a81548160ff021916908315150217905550565b61333a816136df565b6000600267ffffffffffffffff8111156133575761335661573d565b5b6040519080825280602002602001820160405280156133855781602001602082028036833780820191505090505b509050308160008151811061339d5761339c614e12565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134689190614957565b8160018151811061347c5761347b614e12565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161351a95949392919061582a565b600060405180830381600087803b15801561353457600080fd5b505af1158015613548573d6000803e3d6000fd5b505050505050565b60008060189054906101000a900461ffff16600060169054906101000a900461ffff1661357d919061548a565b905060008161ffff1611156136db5760008161ffff16600060169054906101000a900461ffff1661ffff16846135b39190614b5a565b6135bd919061507f565b905060008261ffff16600060189054906101000a900461ffff1661ffff16856135e69190614b5a565b6135f0919061507f565b9050600082111561366557600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613663573d6000803e3d6000fd5b505b60008111156136d857600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156136d6573d6000803e3d6000fd5b505b50505b5050565b80600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156138c6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516138bd9190614004565b60405180910390a35b50565b6001600f60016101000a81548160ff02191690831515021790555060006138ef3061188a565b9050600554811015801561390f5750600f60009054906101000a900460ff165b15613aa15760065481106139235760065490505b600060026000601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff168461395c9190614b5a565b613966919061507f565b613970919061507f565b9050600080601e9054906101000a900461ffff1661ffff166000601a9054906101000a900461ffff1661ffff16846139a89190614b5a565b6139b2919061507f565b90506139be3082613180565b60008183856139cd9190614ce0565b6139d79190614ce0565b90506009600a6139e79190614b0f565b811115613a845760004790506139fc82613331565b60008147613a0a9190614ce0565b9050600080601c9054906101000a900461ffff1661ffff161115613a8157600080601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff1683613a5e9190614b5a565b613a68919061507f565b9050613a73866136df565b613a7f86826000612a88565b505b50505b60004790506000811115613a9c57613a9b81613550565b5b505050505b506000600f60016101000a81548160ff021916908315150217905550565b60008060019050600f60009054906101000a900460ff168015613b2c5750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613b825750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c4b57600354831115613b9a5760009050613c4a565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613c3f575060045483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3d9190614e41565b115b15613c4957600090505b5b5b809150509392505050565b600080600f60009054906101000a900460ff161580613cbe5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80613d125750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d205760009050613e24565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613da3576064600060149054906101000a900460ff1660ff1684613d929190614b5a565b613d9c919061507f565b9050613e23565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e22576064600060159054906101000a900460ff1660ff1684613e159190614b5a565b613e1f919061507f565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e69578082015181840152602081019050613e4e565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e9182613e2f565b613e9b8185613e3a565b9350613eab818560208601613e4b565b613eb481613e75565b840191505092915050565b60006020820190508181036000830152613ed98184613e86565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f1682613eeb565b9050919050565b613f2681613f0b565b8114613f3157600080fd5b50565b600081359050613f4381613f1d565b92915050565b6000819050919050565b613f5c81613f49565b8114613f6757600080fd5b50565b600081359050613f7981613f53565b92915050565b60008060408385031215613f9657613f95613ee1565b5b6000613fa485828601613f34565b9250506020613fb585828601613f6a565b9150509250929050565b60008115159050919050565b613fd481613fbf565b82525050565b6000602082019050613fef6000830184613fcb565b92915050565b613ffe81613f49565b82525050565b60006020820190506140196000830184613ff5565b92915050565b61402881613fbf565b811461403357600080fd5b50565b6000813590506140458161401f565b92915050565b60008060006060848603121561406457614063613ee1565b5b600061407286828701613f34565b935050602061408386828701614036565b925050604061409486828701614036565b9150509250925092565b600080604083850312156140b5576140b4613ee1565b5b60006140c385828601613f34565b92505060206140d485828601614036565b9150509250929050565b600060ff82169050919050565b6140f4816140de565b82525050565b600061ffff82169050919050565b614111816140fa565b82525050565b600060c08201905061412c60008301896140eb565b61413960208301886140eb565b6141466040830187614108565b6141536060830186614108565b6141606080830185614108565b61416d60a0830184614108565b979650505050505050565b60008060006060848603121561419157614190613ee1565b5b600061419f86828701613f34565b93505060206141b086828701613f34565b92505060406141c186828701613f6a565b9150509250925092565b60006020820190506141e060008301846140eb565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261420b5761420a6141e6565b5b8235905067ffffffffffffffff811115614228576142276141eb565b5b602083019150836020820283011115614244576142436141f0565b5b9250929050565b60008083601f840112614261576142606141e6565b5b8235905067ffffffffffffffff81111561427e5761427d6141eb565b5b60208301915083602082028301111561429a576142996141f0565b5b9250929050565b600080600080604085870312156142bb576142ba613ee1565b5b600085013567ffffffffffffffff8111156142d9576142d8613ee6565b5b6142e5878288016141f5565b9450945050602085013567ffffffffffffffff81111561430857614307613ee6565b5b6143148782880161424b565b925092505092959194509250565b60006020828403121561433857614337613ee1565b5b600061434684828501613f6a565b91505092915050565b60006080820190506143646000830187613ff5565b6143716020830186613ff5565b61437e6040830185613ff5565b61438b6060830184613ff5565b95945050505050565b6000602082840312156143aa576143a9613ee1565b5b60006143b884828501613f34565b91505092915050565b60006040820190506143d66000830185613fcb565b6143e36020830184613fcb565b9392505050565b60008060006060848603121561440357614402613ee1565b5b600061441186828701613f34565b935050602061442286828701613f34565b925050604061443386828701613f34565b9150509250925092565b61444681613f0b565b82525050565b600060a082019050614461600083018861443d565b61446e602083018761443d565b61447b604083018661443d565b614488606083018561443d565b614495608083018461443d565b9695505050505050565b6144a8816140fa565b81146144b357600080fd5b50565b6000813590506144c58161449f565b92915050565b600080604083850312156144e2576144e1613ee1565b5b60006144f0858286016144b6565b9250506020614501858286016144b6565b9150509250929050565b6000806040838503121561452257614521613ee1565b5b600061453085828601614036565b925050602061454185828601614036565b9150509250929050565b6000806040838503121561456257614561613ee1565b5b600061457085828601613f34565b925050602061458185828601613f34565b9150509250929050565b600063ffffffff82169050919050565b6145a48161458b565b81146145af57600080fd5b50565b6000813590506145c18161459b565b92915050565b600080600080608085870312156145e1576145e0613ee1565b5b60006145ef878288016145b2565b9450506020614600878288016145b2565b9350506040614611878288016145b2565b9250506060614622878288016145b2565b91505092959194509250565b600061463982613eeb565b9050919050565b6146498161462e565b811461465457600080fd5b50565b60008135905061466681614640565b92915050565b60006020828403121561468257614681613ee1565b5b600061469084828501614657565b91505092915050565b600080600080608085870312156146b3576146b2613ee1565b5b60006146c1878288016144b6565b94505060206146d2878288016144b6565b93505060406146e3878288016144b6565b92505060606146f4878288016144b6565b91505092959194509250565b614709816140de565b811461471457600080fd5b50565b60008135905061472681614700565b92915050565b6000806040838503121561474357614742613ee1565b5b600061475185828601614717565b925050602061476285828601614717565b9150509250929050565b7f4f6e6c7920636f6e7472616374205f6f776e65722063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b60006147c8602b83613e3a565b91506147d38261476c565b604082019050919050565b600060208201905081810360008301526147f7816147bb565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000614834600983613e3a565b915061483f826147fe565b602082019050919050565b6000602082019050818103600083015261486381614827565b9050919050565b7f4e6f2045544820696e20636f6e74726163740000000000000000000000000000600082015250565b60006148a0601283613e3a565b91506148ab8261486a565b602082019050919050565b600060208201905081810360008301526148cf81614893565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b600061490c601583613e3a565b9150614917826148d6565b602082019050919050565b6000602082019050818103600083015261493b816148ff565b9050919050565b60008151905061495181613f1d565b92915050565b60006020828403121561496d5761496c613ee1565b5b600061497b84828501614942565b91505092915050565b6000604082019050614999600083018561443d565b6149a6602083018461443d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614a3357808604811115614a0f57614a0e6149ad565b5b6001851615614a1e5780820291505b8081029050614a2c856149dc565b94506149f3565b94509492505050565b600082614a4c5760019050614b08565b81614a5a5760009050614b08565b8160018114614a705760028114614a7a57614aa9565b6001915050614b08565b60ff841115614a8c57614a8b6149ad565b5b8360020a915084821115614aa357614aa26149ad565b5b50614b08565b5060208310610133831016604e8410600b8410161715614ade5782820a905083811115614ad957614ad86149ad565b5b614b08565b614aeb84848460016149e9565b92509050818404811115614b0257614b016149ad565b5b81810290505b9392505050565b6000614b1a82613f49565b9150614b25836140de565b9250614b527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614a3c565b905092915050565b6000614b6582613f49565b9150614b7083613f49565b9250828202614b7e81613f49565b91508282048414831517614b9557614b946149ad565b5b5092915050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000614bd2601083613e3a565b9150614bdd82614b9c565b602082019050919050565b60006020820190508181036000830152614c0181614bc5565b9050919050565b7f43616e6e6f74206368616e676520746865207072696d617279204c5000000000600082015250565b6000614c3e601c83613e3a565b9150614c4982614c08565b602082019050919050565b60006020820190508181036000830152614c6d81614c31565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000614caa601083613e3a565b9150614cb582614c74565b602082019050919050565b60006020820190508181036000830152614cd981614c9d565b9050919050565b6000614ceb82613f49565b9150614cf683613f49565b9250828203905081811115614d0e57614d0d6149ad565b5b92915050565b7f57616c6c657420636f756e74206f766572203235302028676173207269736b29600082015250565b6000614d4a602083613e3a565b9150614d5582614d14565b602082019050919050565b60006020820190508181036000830152614d7981614d3d565b9050919050565b7f4164647265737320616e6420746f6b656e20616d6f756e74206c697374206d6960008201527f736d616368000000000000000000000000000000000000000000000000000000602082015250565b6000614ddc602583613e3a565b9150614de782614d80565b604082019050919050565b60006020820190508181036000830152614e0b81614dcf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614e4c82613f49565b9150614e5783613f49565b9250828201905080821115614e6f57614e6e6149ad565b5b92915050565b6000614e8082613f49565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614eb257614eb16149ad565b5b600182019050919050565b7f546f6b656e2062616c616e6365206c6f776572207468616e2061697264726f7060008201527f20746f74616c0000000000000000000000000000000000000000000000000000602082015250565b6000614f19602683613e3a565b9150614f2482614ebd565b604082019050919050565b60006020820190508181036000830152614f4881614f0c565b9050919050565b6000604082019050614f646000830185613ff5565b614f716020830184613ff5565b9392505050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b6000614fae601583613e3a565b9150614fb982614f78565b602082019050919050565b60006020820190508181036000830152614fdd81614fa1565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b600061501a601783613e3a565b915061502582614fe4565b602082019050919050565b600060208201905081810360008301526150498161500d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061508a82613f49565b915061509583613f49565b9250826150a5576150a4615050565b5b828204905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b60006150e6601083613e3a565b91506150f1826150b0565b602082019050919050565b60006020820190508181036000830152615115816150d9565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b6000615152601483613e3a565b915061515d8261511c565b602082019050919050565b6000602082019050818103600083015261518181615145565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b60006151be601483613e3a565b91506151c982615188565b602082019050919050565b600060208201905081810360008301526151ed816151b1565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061522a600983613e3a565b9150615235826151f4565b602082019050919050565b600060208201905081810360008301526152598161521d565b9050919050565b7f466c616720616c72656164792077617665640000000000000000000000000000600082015250565b6000615296601283613e3a565b91506152a182615260565b602082019050919050565b600060208201905081810360008301526152c581615289565b9050919050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b6000615302600c83613e3a565b915061530d826152cc565b602082019050919050565b60006020820190508181036000830152615331816152f5565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b600061536e601783613e3a565b915061537982615338565b602082019050919050565b6000602082019050818103600083015261539d81615361565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b60006153da601883613e3a565b91506153e5826153a4565b602082019050919050565b60006020820190508181036000830152615409816153cd565b9050919050565b6000819050919050565b600061543561543061542b84613eeb565b615410565b613eeb565b9050919050565b60006154478261541a565b9050919050565b60006154598261543c565b9050919050565b6154698161544e565b82525050565b60006020820190506154846000830184615460565b92915050565b6000615495826140fa565b91506154a0836140fa565b9250828201905061ffff8111156154ba576154b96149ad565b5b92915050565b60006154cb826140de565b91506154d6836140de565b9250828201905060ff8111156154ef576154ee6149ad565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b600061552b601283613e3a565b9150615536826154f5565b602082019050919050565b6000602082019050818103600083015261555a8161551e565b9050919050565b6000819050919050565b600061558661558161557c84615561565b615410565b613f49565b9050919050565b6155968161556b565b82525050565b600060c0820190506155b1600083018961443d565b6155be6020830188613ff5565b6155cb604083018761558d565b6155d8606083018661558d565b6155e5608083018561443d565b6155f260a0830184613ff5565b979650505050505050565b60008151905061560c81613f53565b92915050565b60008060006060848603121561562b5761562a613ee1565b5b6000615639868287016155fd565b935050602061564a868287016155fd565b925050604061565b868287016155fd565b9150509250925092565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b600061569b601d83613e3a565b91506156a682615665565b602082019050919050565b600060208201905081810360008301526156ca8161568e565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000615707601183613e3a565b9150615712826156d1565b602082019050919050565b60006020820190508181036000830152615736816156fa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157a181613f0b565b82525050565b60006157b38383615798565b60208301905092915050565b6000602082019050919050565b60006157d78261576c565b6157e18185615777565b93506157ec83615788565b8060005b8381101561581d57815161580488826157a7565b975061580f836157bf565b9250506001810190506157f0565b5085935050505092915050565b600060a08201905061583f6000830188613ff5565b61584c602083018761558d565b818103604083015261585e81866157cc565b905061586d606083018561443d565b61587a6080830184613ff5565b969550505050505056fea2646970667358221220df6e924202e7984cc7b3cbd85213f8686fcbfc7f9b874290d31d3044e38f0a7764736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101bb5760003560e01c8063931b68ea116100ec578063d6f155ad1161008a578063e4dbc45b11610064578063e4dbc45b14610610578063f2fde38b14610639578063f9fdeae314610662578063fd9650241461068b576101c2565b8063d6f155ad14610593578063dd62ed3e146105bc578063e209d692146105f9576101c2565b8063a39fac12116100c6578063a39fac12146104e7578063a9059cbb14610516578063b142180314610553578063c9567bf91461057c576101c2565b8063931b68ea1461045557806395d89b41146104935780639fda0581146104be576101c2565b806323b872dd116101595780636d1b229d116101335780636d1b229d146103845780636f013db9146103ad57806370a08231146103db5780637df0f76714610418576101c2565b806323b872dd146102f3578063313ce56714610330578063672434821461035b576101c2565b806318160ddd1161019557806318160ddd1461024657806318839bc31461027157806321c42e111461029a57806322a62e1e146102c3576101c2565b80630210a83d146101c757806306fdde03146101de578063095ea7b314610209576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106b4565b005b3480156101ea57600080fd5b506101f3610b73565b6040516102009190613ebf565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190613f7f565b610bb0565b60405161023d9190613fda565b60405180910390f35b34801561025257600080fd5b5061025b610ca2565b6040516102689190614004565b60405180910390f35b34801561027d57600080fd5b506102986004803603810190610293919061404b565b610cc5565b005b3480156102a657600080fd5b506102c160048036038101906102bc919061409e565b610ea2565b005b3480156102cf57600080fd5b506102d86110d2565b6040516102ea96959493929190614117565b60405180910390f35b3480156102ff57600080fd5b5061031a60048036038101906103159190614178565b611153565b6040516103279190613fda565b60405180910390f35b34801561033c57600080fd5b5061034561135d565b60405161035291906141cb565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d91906142a1565b611366565b005b34801561039057600080fd5b506103ab60048036038101906103a69190614322565b6117be565b005b3480156103b957600080fd5b506103c261186a565b6040516103d2949392919061434f565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190614394565b61188a565b60405161040f9190614004565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a9190614394565b6118d3565b60405161044c9190613fda565b60405180910390f35b34801561046157600080fd5b5061047c60048036038101906104779190614394565b611929565b60405161048a9291906143c1565b60405180910390f35b34801561049f57600080fd5b506104a86119cf565b6040516104b59190613ebf565b60405180910390f35b3480156104ca57600080fd5b506104e560048036038101906104e091906143ea565b611a0c565b005b3480156104f357600080fd5b506104fc611dfb565b60405161050d95949392919061444c565b60405180910390f35b34801561052257600080fd5b5061053d60048036038101906105389190613f7f565b611ec2565b60405161054a9190613fda565b60405180910390f35b34801561055f57600080fd5b5061057a600480360381019061057591906144cb565b611f1f565b005b34801561058857600080fd5b506105916120db565b005b34801561059f57600080fd5b506105ba60048036038101906105b5919061450b565b6121c3565b005b3480156105c857600080fd5b506105e360048036038101906105de919061454b565b61230f565b6040516105f09190614004565b60405180910390f35b34801561060557600080fd5b5061060e612396565b005b34801561061c57600080fd5b50610637600480360381019061063291906145c7565b612502565b005b34801561064557600080fd5b50610660600480360381019061065b919061466c565b61273d565b005b34801561066e57600080fd5b5061068960048036038101906106849190614699565b612845565b005b34801561069757600080fd5b506106b260048036038101906106ad919061472c565b61296e565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610742576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610739906147de565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e59061484a565b60405180910390fd5b60004711610831576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610828906148b6565b60405180910390fd5b6000600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108aa90614922565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610920573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109449190614957565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f19190614957565b6040518363ffffffff1660e01b8152600401610a0e929190614984565b6020604051808303816000875af1158015610a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a519190614957565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610adc600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612a88565b6001600e6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908315150217905550565b60606040518060400160405280600881526020017f52656420466c6167000000000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c909190614004565b60405180910390a36001905092915050565b60006009600a610cb29190614b0f565b620f4240610cc09190614b5a565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4a906147de565b60405180910390fd5b8080610d5c5750815b15610def57600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de590614be8565b60405180910390fd5b5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f27906147de565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb790614c54565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156110ce576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600080600080600080600060149054906101000a900460ff16600060159054906101000a900460ff16600060169054906101000a900461ffff16600060189054906101000a900461ffff166000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16955095509550955095509550909192939495565b600061115e84612b76565b61119d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119490614cc0565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113495781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112c89190614ce0565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611354848484612c51565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113eb906147de565b60405180910390fd5b60fa84849050111561143b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143290614d60565b60405180910390fd5b818190508484905014611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a90614df2565b60405180910390fd5b6000805b858590508110156114e4576009600a6114a09190614b0f565b8484838181106114b3576114b2614e12565b5b905060200201356114c49190614b5a565b826114cf9190614e41565b915080806114dc90614e75565b915050611487565b5080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90614f2f565b60405180910390fd5b60005b8585905081101561177a576009600a6115839190614b0f565b84848381811061159657611595614e12565b5b905060200201356115a79190614b5a565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115f59190614ce0565b925050819055506009600a61160a9190614b0f565b84848381811061161d5761161c614e12565b5b9050602002013561162e9190614b5a565b6007600088888581811061164557611644614e12565b5b905060200201602081019061165a9190614394565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116a39190614e41565b925050819055508585828181106116bd576116bc614e12565b5b90506020020160208101906116d29190614394565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a61172e9190614b0f565b87878681811061174157611740614e12565b5b905060200201356117529190614b5a565b60405161175f9190614004565b60405180910390a3808061177290614e75565b91505061156a565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba9546485859050826040516117af929190614f4f565b60405180910390a15050505050565b60006117c93361188a565b90508082111561180e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180590614fc4565b60405180910390fd5b6118183383613180565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb68360405161185e9190614004565b60405180910390a25050565b600080600080600354600454600554600654935093509350935090919293565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600381526020017f5245440000000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a91906147de565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b3e5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b945750600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bca90615030565b60405180910390fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094509450945094509091929394565b6000611ecd33612b76565b611f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0390614cc0565b60405180910390fd5b611f17338484612c51565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa4906147de565b60405180910390fd5b600060016103e88461ffff166009600a611fc79190614b0f565b620f4240611fd59190614b5a565b611fdf9190614b5a565b611fe9919061507f565b611ff39190614e41565b905060035481101561203a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612031906150fc565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a61205b9190614b0f565b620f42406120699190614b5a565b6120739190614b5a565b61207d919061507f565b6120879190614e41565b90506004548110156120ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c590615168565b60405180910390fd5b8060048190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612169576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612160906147de565b60405180910390fd5b600f60009054906101000a900460ff16156121b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b0906151d4565b60405180910390fd5b6121c16132a0565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612251576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612248906147de565b60405180910390fd5b81156122b25760006122623061188a565b9050600081116122a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229e90615240565b60405180910390fd5b6122b081613331565b505b801561230b57600047905060008111612300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f790615240565b60405180910390fd5b61230947613550565b505b5050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241b906147de565b60405180910390fd5b600f60009054906101000a900460ff16612473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246a90614cc0565b60405180910390fd5b6063600060149054906101000a900460ff1660ff16146124c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bf906152ac565b60405180910390fd5b6004600060146101000a81548160ff021916908360ff1602179055506004600060156101000a81548160ff021916908360ff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612590576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612587906147de565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6125ac9190614b0f565b620f42406125ba9190614b5a565b6125c49190614b5a565b6125ce919061507f565b6005819055508063ffffffff168263ffffffff166009600a6125f09190614b0f565b620f42406125fe9190614b5a565b6126089190614b5a565b612612919061507f565b600681905550600554600654101561265f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265690615318565b60405180910390fd5b620186a06009600a6126719190614b0f565b620f424061267f9190614b5a565b612689919061507f565b600654116126cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c390615384565b60405180910390fd5b60646009600a6126dc9190614b0f565b620f42406126ea9190614b5a565b6126f4919061507f565b60065410612737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272e906153f0565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c2906147de565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161283a919061546f565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ca906147de565b60405180910390fd5b826000601c6101000a81548161ffff021916908361ffff16021790555081600060166101000a81548161ffff021916908361ffff16021790555080600060186101000a81548161ffff021916908361ffff16021790555080828486612938919061548a565b612942919061548a565b61294c919061548a565b6000601e6101000a81548161ffff021916908361ffff16021790555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146129fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f3906147de565b60405180910390fd5b60088183612a0a91906154c0565b60ff161115612a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4590615541565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612aba57600090505b612ac3846136df565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612b2a9695949392919061559c565b60606040518083038185885af1158015612b48573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b6d9190615612565b50505050505050565b60008060009050600f60009054906101000a900460ff1615612b9b5760019050612c48565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c3d5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c4757600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb8906156b1565b60405180910390fd5b600f60009054906101000a900460ff16612db757600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d775750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dad90614cc0565b60405180910390fd5b5b600f60019054906101000a900460ff16158015612e1d5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e2b57612e2a6138c9565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612e9357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612eeb575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612f3b57612efb848484613abf565b612f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f319061571d565b60405180910390fd5b5b6000612f48858585613c56565b905060008184612f589190614ce0565b905083600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa59190614ce0565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156130805781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461303c9190614e41565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130cb9190614e41565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161316b9190614004565b60405180910390a36001925050509392505050565b600081111561329c5780600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131d89190614ce0565b9250508190555080600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461322e9190614e41565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132939190614004565b60405180910390a35b5050565b606460016009600a6132b29190614b0f565b620f42406132c09190614b5a565b6132ca9190614b5a565b6132d4919061507f565b600381905550606460016009600a6132ec9190614b0f565b620f42406132fa9190614b5a565b6133049190614b5a565b61330e919061507f565b6004819055506001600f60006101000a81548160ff021916908315150217905550565b61333a816136df565b6000600267ffffffffffffffff8111156133575761335661573d565b5b6040519080825280602002602001820160405280156133855781602001602082028036833780820191505090505b509050308160008151811061339d5761339c614e12565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134689190614957565b8160018151811061347c5761347b614e12565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161351a95949392919061582a565b600060405180830381600087803b15801561353457600080fd5b505af1158015613548573d6000803e3d6000fd5b505050505050565b60008060189054906101000a900461ffff16600060169054906101000a900461ffff1661357d919061548a565b905060008161ffff1611156136db5760008161ffff16600060169054906101000a900461ffff1661ffff16846135b39190614b5a565b6135bd919061507f565b905060008261ffff16600060189054906101000a900461ffff1661ffff16856135e69190614b5a565b6135f0919061507f565b9050600082111561366557600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613663573d6000803e3d6000fd5b505b60008111156136d857600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156136d6573d6000803e3d6000fd5b505b50505b5050565b80600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156138c6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516138bd9190614004565b60405180910390a35b50565b6001600f60016101000a81548160ff02191690831515021790555060006138ef3061188a565b9050600554811015801561390f5750600f60009054906101000a900460ff165b15613aa15760065481106139235760065490505b600060026000601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff168461395c9190614b5a565b613966919061507f565b613970919061507f565b9050600080601e9054906101000a900461ffff1661ffff166000601a9054906101000a900461ffff1661ffff16846139a89190614b5a565b6139b2919061507f565b90506139be3082613180565b60008183856139cd9190614ce0565b6139d79190614ce0565b90506009600a6139e79190614b0f565b811115613a845760004790506139fc82613331565b60008147613a0a9190614ce0565b9050600080601c9054906101000a900461ffff1661ffff161115613a8157600080601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff1683613a5e9190614b5a565b613a68919061507f565b9050613a73866136df565b613a7f86826000612a88565b505b50505b60004790506000811115613a9c57613a9b81613550565b5b505050505b506000600f60016101000a81548160ff021916908315150217905550565b60008060019050600f60009054906101000a900460ff168015613b2c5750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613b825750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c4b57600354831115613b9a5760009050613c4a565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613c3f575060045483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3d9190614e41565b115b15613c4957600090505b5b5b809150509392505050565b600080600f60009054906101000a900460ff161580613cbe5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80613d125750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d205760009050613e24565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613da3576064600060149054906101000a900460ff1660ff1684613d929190614b5a565b613d9c919061507f565b9050613e23565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e22576064600060159054906101000a900460ff1660ff1684613e159190614b5a565b613e1f919061507f565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e69578082015181840152602081019050613e4e565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e9182613e2f565b613e9b8185613e3a565b9350613eab818560208601613e4b565b613eb481613e75565b840191505092915050565b60006020820190508181036000830152613ed98184613e86565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f1682613eeb565b9050919050565b613f2681613f0b565b8114613f3157600080fd5b50565b600081359050613f4381613f1d565b92915050565b6000819050919050565b613f5c81613f49565b8114613f6757600080fd5b50565b600081359050613f7981613f53565b92915050565b60008060408385031215613f9657613f95613ee1565b5b6000613fa485828601613f34565b9250506020613fb585828601613f6a565b9150509250929050565b60008115159050919050565b613fd481613fbf565b82525050565b6000602082019050613fef6000830184613fcb565b92915050565b613ffe81613f49565b82525050565b60006020820190506140196000830184613ff5565b92915050565b61402881613fbf565b811461403357600080fd5b50565b6000813590506140458161401f565b92915050565b60008060006060848603121561406457614063613ee1565b5b600061407286828701613f34565b935050602061408386828701614036565b925050604061409486828701614036565b9150509250925092565b600080604083850312156140b5576140b4613ee1565b5b60006140c385828601613f34565b92505060206140d485828601614036565b9150509250929050565b600060ff82169050919050565b6140f4816140de565b82525050565b600061ffff82169050919050565b614111816140fa565b82525050565b600060c08201905061412c60008301896140eb565b61413960208301886140eb565b6141466040830187614108565b6141536060830186614108565b6141606080830185614108565b61416d60a0830184614108565b979650505050505050565b60008060006060848603121561419157614190613ee1565b5b600061419f86828701613f34565b93505060206141b086828701613f34565b92505060406141c186828701613f6a565b9150509250925092565b60006020820190506141e060008301846140eb565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261420b5761420a6141e6565b5b8235905067ffffffffffffffff811115614228576142276141eb565b5b602083019150836020820283011115614244576142436141f0565b5b9250929050565b60008083601f840112614261576142606141e6565b5b8235905067ffffffffffffffff81111561427e5761427d6141eb565b5b60208301915083602082028301111561429a576142996141f0565b5b9250929050565b600080600080604085870312156142bb576142ba613ee1565b5b600085013567ffffffffffffffff8111156142d9576142d8613ee6565b5b6142e5878288016141f5565b9450945050602085013567ffffffffffffffff81111561430857614307613ee6565b5b6143148782880161424b565b925092505092959194509250565b60006020828403121561433857614337613ee1565b5b600061434684828501613f6a565b91505092915050565b60006080820190506143646000830187613ff5565b6143716020830186613ff5565b61437e6040830185613ff5565b61438b6060830184613ff5565b95945050505050565b6000602082840312156143aa576143a9613ee1565b5b60006143b884828501613f34565b91505092915050565b60006040820190506143d66000830185613fcb565b6143e36020830184613fcb565b9392505050565b60008060006060848603121561440357614402613ee1565b5b600061441186828701613f34565b935050602061442286828701613f34565b925050604061443386828701613f34565b9150509250925092565b61444681613f0b565b82525050565b600060a082019050614461600083018861443d565b61446e602083018761443d565b61447b604083018661443d565b614488606083018561443d565b614495608083018461443d565b9695505050505050565b6144a8816140fa565b81146144b357600080fd5b50565b6000813590506144c58161449f565b92915050565b600080604083850312156144e2576144e1613ee1565b5b60006144f0858286016144b6565b9250506020614501858286016144b6565b9150509250929050565b6000806040838503121561452257614521613ee1565b5b600061453085828601614036565b925050602061454185828601614036565b9150509250929050565b6000806040838503121561456257614561613ee1565b5b600061457085828601613f34565b925050602061458185828601613f34565b9150509250929050565b600063ffffffff82169050919050565b6145a48161458b565b81146145af57600080fd5b50565b6000813590506145c18161459b565b92915050565b600080600080608085870312156145e1576145e0613ee1565b5b60006145ef878288016145b2565b9450506020614600878288016145b2565b9350506040614611878288016145b2565b9250506060614622878288016145b2565b91505092959194509250565b600061463982613eeb565b9050919050565b6146498161462e565b811461465457600080fd5b50565b60008135905061466681614640565b92915050565b60006020828403121561468257614681613ee1565b5b600061469084828501614657565b91505092915050565b600080600080608085870312156146b3576146b2613ee1565b5b60006146c1878288016144b6565b94505060206146d2878288016144b6565b93505060406146e3878288016144b6565b92505060606146f4878288016144b6565b91505092959194509250565b614709816140de565b811461471457600080fd5b50565b60008135905061472681614700565b92915050565b6000806040838503121561474357614742613ee1565b5b600061475185828601614717565b925050602061476285828601614717565b9150509250929050565b7f4f6e6c7920636f6e7472616374205f6f776e65722063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b60006147c8602b83613e3a565b91506147d38261476c565b604082019050919050565b600060208201905081810360008301526147f7816147bb565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000614834600983613e3a565b915061483f826147fe565b602082019050919050565b6000602082019050818103600083015261486381614827565b9050919050565b7f4e6f2045544820696e20636f6e74726163740000000000000000000000000000600082015250565b60006148a0601283613e3a565b91506148ab8261486a565b602082019050919050565b600060208201905081810360008301526148cf81614893565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b600061490c601583613e3a565b9150614917826148d6565b602082019050919050565b6000602082019050818103600083015261493b816148ff565b9050919050565b60008151905061495181613f1d565b92915050565b60006020828403121561496d5761496c613ee1565b5b600061497b84828501614942565b91505092915050565b6000604082019050614999600083018561443d565b6149a6602083018461443d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614a3357808604811115614a0f57614a0e6149ad565b5b6001851615614a1e5780820291505b8081029050614a2c856149dc565b94506149f3565b94509492505050565b600082614a4c5760019050614b08565b81614a5a5760009050614b08565b8160018114614a705760028114614a7a57614aa9565b6001915050614b08565b60ff841115614a8c57614a8b6149ad565b5b8360020a915084821115614aa357614aa26149ad565b5b50614b08565b5060208310610133831016604e8410600b8410161715614ade5782820a905083811115614ad957614ad86149ad565b5b614b08565b614aeb84848460016149e9565b92509050818404811115614b0257614b016149ad565b5b81810290505b9392505050565b6000614b1a82613f49565b9150614b25836140de565b9250614b527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614a3c565b905092915050565b6000614b6582613f49565b9150614b7083613f49565b9250828202614b7e81613f49565b91508282048414831517614b9557614b946149ad565b5b5092915050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000614bd2601083613e3a565b9150614bdd82614b9c565b602082019050919050565b60006020820190508181036000830152614c0181614bc5565b9050919050565b7f43616e6e6f74206368616e676520746865207072696d617279204c5000000000600082015250565b6000614c3e601c83613e3a565b9150614c4982614c08565b602082019050919050565b60006020820190508181036000830152614c6d81614c31565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000614caa601083613e3a565b9150614cb582614c74565b602082019050919050565b60006020820190508181036000830152614cd981614c9d565b9050919050565b6000614ceb82613f49565b9150614cf683613f49565b9250828203905081811115614d0e57614d0d6149ad565b5b92915050565b7f57616c6c657420636f756e74206f766572203235302028676173207269736b29600082015250565b6000614d4a602083613e3a565b9150614d5582614d14565b602082019050919050565b60006020820190508181036000830152614d7981614d3d565b9050919050565b7f4164647265737320616e6420746f6b656e20616d6f756e74206c697374206d6960008201527f736d616368000000000000000000000000000000000000000000000000000000602082015250565b6000614ddc602583613e3a565b9150614de782614d80565b604082019050919050565b60006020820190508181036000830152614e0b81614dcf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614e4c82613f49565b9150614e5783613f49565b9250828201905080821115614e6f57614e6e6149ad565b5b92915050565b6000614e8082613f49565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614eb257614eb16149ad565b5b600182019050919050565b7f546f6b656e2062616c616e6365206c6f776572207468616e2061697264726f7060008201527f20746f74616c0000000000000000000000000000000000000000000000000000602082015250565b6000614f19602683613e3a565b9150614f2482614ebd565b604082019050919050565b60006020820190508181036000830152614f4881614f0c565b9050919050565b6000604082019050614f646000830185613ff5565b614f716020830184613ff5565b9392505050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b6000614fae601583613e3a565b9150614fb982614f78565b602082019050919050565b60006020820190508181036000830152614fdd81614fa1565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b600061501a601783613e3a565b915061502582614fe4565b602082019050919050565b600060208201905081810360008301526150498161500d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061508a82613f49565b915061509583613f49565b9250826150a5576150a4615050565b5b828204905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b60006150e6601083613e3a565b91506150f1826150b0565b602082019050919050565b60006020820190508181036000830152615115816150d9565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b6000615152601483613e3a565b915061515d8261511c565b602082019050919050565b6000602082019050818103600083015261518181615145565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b60006151be601483613e3a565b91506151c982615188565b602082019050919050565b600060208201905081810360008301526151ed816151b1565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061522a600983613e3a565b9150615235826151f4565b602082019050919050565b600060208201905081810360008301526152598161521d565b9050919050565b7f466c616720616c72656164792077617665640000000000000000000000000000600082015250565b6000615296601283613e3a565b91506152a182615260565b602082019050919050565b600060208201905081810360008301526152c581615289565b9050919050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b6000615302600c83613e3a565b915061530d826152cc565b602082019050919050565b60006020820190508181036000830152615331816152f5565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b600061536e601783613e3a565b915061537982615338565b602082019050919050565b6000602082019050818103600083015261539d81615361565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b60006153da601883613e3a565b91506153e5826153a4565b602082019050919050565b60006020820190508181036000830152615409816153cd565b9050919050565b6000819050919050565b600061543561543061542b84613eeb565b615410565b613eeb565b9050919050565b60006154478261541a565b9050919050565b60006154598261543c565b9050919050565b6154698161544e565b82525050565b60006020820190506154846000830184615460565b92915050565b6000615495826140fa565b91506154a0836140fa565b9250828201905061ffff8111156154ba576154b96149ad565b5b92915050565b60006154cb826140de565b91506154d6836140de565b9250828201905060ff8111156154ef576154ee6149ad565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b600061552b601283613e3a565b9150615536826154f5565b602082019050919050565b6000602082019050818103600083015261555a8161551e565b9050919050565b6000819050919050565b600061558661558161557c84615561565b615410565b613f49565b9050919050565b6155968161556b565b82525050565b600060c0820190506155b1600083018961443d565b6155be6020830188613ff5565b6155cb604083018761558d565b6155d8606083018661558d565b6155e5608083018561443d565b6155f260a0830184613ff5565b979650505050505050565b60008151905061560c81613f53565b92915050565b60008060006060848603121561562b5761562a613ee1565b5b6000615639868287016155fd565b935050602061564a868287016155fd565b925050604061565b868287016155fd565b9150509250925092565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b600061569b601d83613e3a565b91506156a682615665565b602082019050919050565b600060208201905081810360008301526156ca8161568e565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000615707601183613e3a565b9150615712826156d1565b602082019050919050565b60006020820190508181036000830152615736816156fa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157a181613f0b565b82525050565b60006157b38383615798565b60208301905092915050565b6000602082019050919050565b60006157d78261576c565b6157e18185615777565b93506157ec83615788565b8060005b8381101561581d57815161580488826157a7565b975061580f836157bf565b9250506001810190506157f0565b5085935050505092915050565b600060a08201905061583f6000830188613ff5565b61584c602083018761558d565b818103604083015261585e81866157cc565b905061586d606083018561443d565b61587a6080830184613ff5565b969550505050505056fea2646970667358221220df6e924202e7984cc7b3cbd85213f8686fcbfc7f9b874290d31d3044e38f0a7764736f6c63430008110033
Deployed Bytecode Sourcemap
2487:14933:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7255:463;;;;;;;;;;;;;:::i;:::-;;5473:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5802:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5212:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10389:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10625:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11057:279;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;6217:368;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5303:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16505:912;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16254:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12598:199;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;5556:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10963:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10241:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5386:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12128:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11903:222;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;6002:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12800:430;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6590:117;;;;;;;;;;;;;:::i;:::-;;15831:418;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5664:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6712:249;;;;;;;;;;;;;:::i;:::-;;13233:432;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1674:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11543:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11339:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7255:463;1611:6;;;;;;;;;;1597:20;;:10;:20;;;1589:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;4246:4:::1;4233:10;;:17;;;;;;;;;;;;;;;;;;7352:1:::2;7330:24;;:10;;;;;;;;;;;:24;;;7322:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7403:1;7381:21;:23;7373:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;7465:1;7440:9;:24;7458:4;7440:24;;;;;;;;;;;;;;;;:26;7432:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7528:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7510:58;;;7577:4;7584:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7510:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7497:10;;:113;;;;;;;;;;;;;;;;;;7615:69;7629:9;:24;7647:4;7629:24;;;;;;;;;;;;;;;;7655:21;7678:5;7615:13;:69::i;:::-;7709:4;7689:5;:17;7695:10;;;;;;;;;;;7689:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;4268:5:::1;4255:10;;:18;;;;;;;;;;;;;;;;;;7255:463::o:0;5473:80::-;5521:13;5545:5;;;;;;;;;;;;;;;;;5538:12;;5473:80;:::o;5802:195::-;5877:4;5923:6;5888:11;:23;5900:10;5888:23;;;;;;;;;;;;;;;:32;5912:7;5888:32;;;;;;;;;;;;;;;:41;;;;5960:7;5939:37;;5948:10;5939:37;;;5969:6;5939:37;;;;;;:::i;:::-;;;;;;;;5988:4;5981:11;;5802:195;;;;:::o;5212:88::-;5267:7;2570:1;2628:2;:13;;;;:::i;:::-;2615:9;:27;;;;:::i;:::-;5278:19;;5212:88;:::o;10389:233::-;1611:6;;;;;;;;;;1597:20;;:10;:20;;;1589:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10484:8:::1;:18;;;;10496:6;10484:18;10480:72;;;10515:5;:13;10521:6;10515:13;;;;;;;;;;;;;;;;;;;;;;;;;10514:14;10506:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;10480:72;10576:6;10556:7;:17;10565:6;10556:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;10609:8;10587:9;:19;10598:6;10587:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10389:233:::0;;;:::o;10625:335::-;1611:6;;;;;;;;;;1597:20;;:10;:20;;;1589:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10748:10:::1;;;;;;;;;;;10727:31;;:17;:31;;::::0;10719:72:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10823:15;10796:5;:24;10802:17;10796:24;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;10848:15;10844:112;;;10901:5;10872:7;:26;10880:17;10872:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;10944:5;10913:9;:28;10923:17;10913:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;10844:112;10625:335:::0;;:::o;11057:279::-;11102:12;11116:13;11131:22;11155:21;11178:15;11195:22;11234:11;;;;;;;;;;;11247:12;;;;;;;;;;;11261:19;;;;;;;;;;;11282:18;;;;;;;;;;;11302:12;;;;;;;;;;;11316:14;;;;;;;;;;;11225:106;;;;;;;;;;;;11057:279;;;;;;:::o;6217:368::-;6317:4;6336:25;6354:6;6336:17;:25::i;:::-;6328:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6425:17;6390:11;:19;6402:6;6390:19;;;;;;;;;;;;;;;:31;6410:10;6390:31;;;;;;;;;;;;;;;;:52;6387:142;;6517:6;6483:11;:19;6495:6;6483:19;;;;;;;;;;;;;;;:31;6503:10;6483:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6449:11;:19;6461:6;6449:19;;;;;;;;;;;;;;;:31;6469:10;6449:31;;;;;;;;;;;;;;;:74;;;;6387:142;6540:40;6554:6;6562:9;6573:6;6540:13;:40::i;:::-;6533:47;;6217:368;;;;;:::o;5303:80::-;5355:5;2570:1;5364:16;;5303:80;:::o;16505:912::-;1611:6;;;;;;;;;;1597:20;;:10;:20;;;1589:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;16643:3:::1;16623:9;;:16;;:23;;16615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16721:12;;:19;;16701:9;;:16;;:39;16693:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;16794:20;16833:6:::0;16829:116:::1;16847:9;;:16;;16843:1;:20;16829:116;;;2570:1;16919:2;:13;;;;:::i;:::-;16901:12;;16914:1;16901:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;16884:49;;;;;:::i;:::-;;;16865:3;;;;;:::i;:::-;;;;16829:116;;;;16988:12;16963:9;:21;16973:10;16963:21;;;;;;;;;;;;;;;;:37;;16955:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;17060:6;17056:288;17074:9;;:16;;17070:1;:20;17056:288;;;2570:1;17155:2;:13;;;;:::i;:::-;17137:12;;17150:1;17137:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;17111:9;:21;17121:10;17111:21;;;;;;;;;;;;;;;;:58;;;;;;;:::i;:::-;;;;;;;;2570:1;17230:2;:13;;;;:::i;:::-;17212:12;;17225:1;17212:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;17184:9;:23;17194:9;;17204:1;17194:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17184:23;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;17276:9;;17286:1;17276:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17255:70;;17264:10;17255:70;;;2570:1;17309:2;:13;;;;:::i;:::-;17291:12;;17304:1;17291:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;17255:70;;;;;;:::i;:::-;;;;;;;;17092:3;;;;;:::i;:::-;;;;17056:288;;;;17361:48;17378:9;;:16;;17396:12;17361:48;;;;;;;:::i;:::-;;;;;;;;16604:813;16505:912:::0;;;;:::o;16254:246::-;16304:24;16331:21;16341:10;16331:9;:21::i;:::-;16304:48;;16375:16;16365:6;:26;;16357:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;16422:31;16434:10;16446:6;16422:11;:31::i;:::-;16476:10;16463:32;;;16488:6;16463:32;;;;;;:::i;:::-;;;;;;;;16299:201;16254:246;:::o;12598:199::-;12646:13;12661:17;12680:18;12700;12735:12;;12749:16;;12767:11;;12780;;12726:66;;;;;;;;12598:199;;;;:::o;5556:105::-;5622:7;5640:9;:18;5650:7;5640:18;;;;;;;;;;;;;;;;5633:25;;5556:105;;;:::o;10963:89::-;11016:4;11034:5;:13;11040:6;11034:13;;;;;;;;;;;;;;;;;;;;;;;;;11027:20;;10963:89;;;:::o;10241:145::-;10303:11;10316:13;10345:7;:15;10353:6;10345:15;;;;;;;;;;;;;;;;;;;;;;;;;10362:9;:17;10372:6;10362:17;;;;;;;;;;;;;;;;;;;;;;;;;10336:45;;;;10241:145;;;:::o;5386:84::-;5436:13;5460:7;;;;;;;;;;;;;;;;;5453:14;;5386:84;:::o;12128:465::-;1611:6;;;;;;;;;;1597:20;;:10;:20;;;1589:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;12247:5:::1;:19;12253:12;12247:19;;;;;;;;;;;;;;;;;;;;;;;;;12246:20;:43;;;;;12271:5;:18;12277:11;12271:18;;;;;;;;;;;;;;;;;;;;;;;;;12270:19;12246:43;:65;;;;;12294:5;:17;12300:10;12294:17;;;;;;;;;;;;;;;;;;;;;;;;;12293:18;12246:65;12238:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;12371:12;12344:16;;:40;;;;;;;;;;;;;;;;;;12415:11;12389:15;;:38;;;;;;;;;;;;;;;;;;12443:10;12432:8;;:21;;;;;;;;;;;;;;;;;;12482:4;12458:7;:21;12466:12;12458:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;12514:4;12491:7;:20;12499:11;12491:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12549:4;12523:9;:23;12533:12;12523:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;12584:4;12559:9;:22;12569:11;12559:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12128:465:::0;;;:::o;11903:222::-;11950:13;11965:17;11984;12003:19;12024:15;12056:6;;;;;;;;;;;12064:10;;;;;;;;;;;12076:16;;;;;;;;;;;12094:15;;;;;;;;;;;12111:8;;;;;;;;;;;12047:73;;;;;;;;;;11903:222;;;;;:::o;6002:210::-;6082:4;6101:29;6119:10;6101:17;:29::i;:::-;6093:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6163:44;6177:10;6189:9;6200:6;6163:13;:44::i;:::-;6156:51;;6002:210;;;;:::o;12800:430::-;1611:6;;;;;;;;;;1597:20;;:10;:20;;;1589:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;12900:16:::1;12959:1;12952:4;12934:15;12919:30;;2570:1;2628:2;:13;;;;:::i;:::-;2615:9;:27;;;;:::i;:::-;12919:30;;;;:::i;:::-;:37;;;;:::i;:::-;:41;;;;:::i;:::-;12900:60;;12985:12;;12973:8;:24;;12965:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13038:8;13023:12;:23;;;;13051:20;13118:1;13111:4;13089:19;13074:34;;2570:1;2628:2;:13;;;;:::i;:::-;2615:9;:27;;;;:::i;:::-;13074:34;;;;:::i;:::-;:41;;;;:::i;:::-;:45;;;;:::i;:::-;13051:68;;13148:16;;13132:12;:32;;13124:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13213:12;13194:16;:31;;;;12895:335;;12800:430:::0;;:::o;6590:117::-;1611:6;;;;;;;;;;1597:20;;:10;:20;;;1589:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;6646:12:::1;;;;;;;;;;;6645:13;6637:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;6688:14;:12;:14::i;:::-;6590:117::o:0;15831:418::-;1611:6;;;;;;;;;;1597:20;;:10;:20;;;1589:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15920:10:::1;15916:168;;;15938:23;15964:24;15982:4;15964:9;:24::i;:::-;15938:50;;16020:1;16002:15;:19;15994:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;16041:37;16062:15;16041:20;:37::i;:::-;15932:152;15916:168;16092:7;16088:157;;;16108:18;16129:21;16108:42;;16177:1;16164:10;:14;16156:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;16198:40;16216:21;16198:17;:40::i;:::-;16101:144;16088:157;15831:418:::0;;:::o;5664:133::-;5748:7;5766:11;:19;5778:6;5766:19;;;;;;;;;;;;;;;:28;5786:7;5766:28;;;;;;;;;;;;;;;;5759:35;;5664:133;;;;:::o;6712:249::-;1611:6;;;;;;;;;;1597:20;;:10;:20;;;1589:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;6767:12:::1;;;;;;;;;;;6759:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;6828:2;6813:11;;;;;;;;;;;:17;;;6805:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;6934:1;6920:11;;:15;;;;;;;;;;;;;;;;;;6955:1;6940:12;;:16;;;;;;;;;;;;;;;;;;6712:249::o:0;13233:432::-;1611:6;;;;;;;;;;1597:20;;:10;:20;;;1589:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;13395:10:::1;13369:36;;13384:8;13369:23;;2570:1;2628:2;:13;;;;:::i;:::-;2615:9;:27;;;;:::i;:::-;13369:23;;;;:::i;:::-;:36;;;;:::i;:::-;13355:11;:50;;;;13450:10;13424:36;;13439:8;13424:23;;2570:1;2628:2;:13;;;;:::i;:::-;2615:9;:27;;;;:::i;:::-;13424:23;;;;:::i;:::-;:36;;;;:::i;:::-;13410:11;:50;;;;13486:11;;13473;;:24;;13465:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;13554:6;2570:1;2628:2;:13;;;;:::i;:::-;2615:9;:27;;;;:::i;:::-;13539:21;;;;:::i;:::-;13527:11;;:33;13519:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;13628:3;2570:1;2628:2;:13;;;;:::i;:::-;2615:9;:27;;;;:::i;:::-;13613:18;;;;:::i;:::-;13601:11;;:30;13593:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13233:432:::0;;;;:::o;1674:131::-;1611:6;;;;;;;;;;1597:20;;:10;:20;;;1589:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;1757:8:::1;1748:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1772:30;1793:8;1772:30;;;;;;:::i;:::-;;;;;;;;1674:131:::0;:::o;11543:355::-;1611:6;;;;;;;;;;1597:20;;:10;:20;;;1589:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;11705:12:::1;11690;;:27;;;;;;;;;;;;;;;;;;11744:15;11722:19;;:37;;;;;;;;;;;;;;;;;;11785:17;11764:18;;:38;;;;;;;;;;;;;;;;;;11876:17;11858:15;11843:12;11825:15;:30;;;;:::i;:::-;:48;;;;:::i;:::-;:68;;;;:::i;:::-;11807:15;;:86;;;;;;;;;;;;;;;;;;11543:355:::0;;;;:::o;11339:201::-;1611:6;;;;;;;;;;1597:20;;:10;:20;;;1589:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;11453:1:::1;11439:10;11427:9;:22;;;;:::i;:::-;:27;;;;11419:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;11496:9;11482:11;;:23;;;;;;;;;;;;;;;;;;11525:10;11510:12;;:25;;;;;;;;;;;;;;;;;;11339:201:::0;;:::o;7723:358::-;7820:24;7847:8;;;;;;;;;;;7820:35;;7865:8;7860:50;;;7905:1;7878:29;;7860:50;7914:28;7929:12;7914:14;:28::i;:::-;7947:18;;;;;;;;;;;:34;;;7989:13;8014:4;8021:12;8035:1;8038;8041:16;8059:15;7947:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7815:266;7723:358;;;:::o;9589:252::-;9654:4;9664:16;9683:5;9664:24;;9698:12;;;;;;;;;;;9693:118;;;9729:4;9715:18;;9693:118;;;9750:7;:15;9758:6;9750:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;9769:9;:17;9779:6;9769:17;;;;;;;;;;;;;;;;;;;;;;;;;9750:36;9746:65;;;9804:4;9790:18;;9746:65;9693:118;9825:11;9818:18;;;9589:252;;;:::o;8246:883::-;8338:4;8375:1;8357:20;;:6;:20;;;8349:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8421:12;;;;;;;;;;;8416:89;;8445:7;:15;8453:6;8445:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;8464:9;:17;8474:6;8464:17;;;;;;;;;;;;;;;;;;;;;;;;;8445:36;8437:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8416:89;8515:10;;;;;;;;;;;8514:11;:31;;;;;8529:5;:16;8535:9;8529:16;;;;;;;;;;;;;;;;;;;;;;;;;8514:31;8509:64;;;8550:20;:18;:20::i;:::-;8509:64;8604:4;8586:23;;:6;:23;;;;:53;;;;;8634:4;8613:26;;:9;:26;;;;8586:53;:73;;;;;8653:6;;;;;;;;;;8643:16;;:6;:16;;;;8586:73;8581:155;;;8672:39;8685:6;8693:9;8704:6;8672:12;:39::i;:::-;8664:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;8581:155;8740:18;8761:40;8775:6;8783:9;8794:6;8761:13;:40::i;:::-;8740:61;;8806:23;8841:10;8832:6;:19;;;;:::i;:::-;8806:45;;8896:6;8876:9;:17;8886:6;8876:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;8856:9;:17;8866:6;8856:17;;;;;;;;;;;;;;;:46;;;;8925:1;8912:10;:14;8907:91;;;8985:10;8958:9;:24;8976:4;8958:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;8931:9;:24;8949:4;8931:24;;;;;;;;;;;;;;;:64;;;;8907:91;9048:15;9025:9;:20;9035:9;9025:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9002:9;:20;9012:9;9002:20;;;;;;;;;;;;;;;:61;;;;9090:9;9073:35;;9082:6;9073:35;;;9101:6;9073:35;;;;;;:::i;:::-;;;;;;;;9120:4;9113:11;;;;8246:883;;;;;:::o;13670:225::-;13754:1;13745:6;:10;13740:151;;;13789:6;13764:9;:21;13774:10;13764:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;13827:6;13801:9;:22;3822:1;13801:22;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;3822:1;13844:41;;13853:10;13844:41;;;13878:6;13844:41;;;;;;:::i;:::-;;;;;;;;13740:151;13670:225;;:::o;8086:155::-;8162:3;8158:1;2570;2628:2;:13;;;;:::i;:::-;2615:9;:27;;;;:::i;:::-;8143:16;;;;:::i;:::-;:22;;;;:::i;:::-;8124:12;:41;;;;8209:3;8205:1;2570;2628:2;:13;;;;:::i;:::-;2615:9;:27;;;;:::i;:::-;8190:16;;;;:::i;:::-;:22;;;;:::i;:::-;8171:16;:41;;;;8232:4;8217:12;;:19;;;;;;;;;;;;;;;;;;8086:155::o;15022:333::-;15086:27;15101:11;15086:14;:27::i;:::-;15118:21;15156:1;15142:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15118:40;;15181:4;15163;15168:1;15163:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15201:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15191:4;15196:1;15191:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;15231:18;;;;;;;;;;;:69;;;15301:11;15313:1;15315:4;15328;15334:15;15231:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15081:274;15022:333;:::o;15360:466::-;15416:21;15462:18;;;;;;;;;;;15440:19;;;;;;;;;;;:40;;;;:::i;:::-;15416:64;;15506:1;15489:14;:18;;;15485:337;;;15515:23;15572:14;15541:45;;15550:19;;;;;;;;;;;15541:28;;:6;:28;;;;:::i;:::-;:45;;;;:::i;:::-;15515:71;;15592:22;15647:14;15617:44;;15626:18;;;;;;;;;;;15617:27;;:6;:27;;;;:::i;:::-;:44;;;;:::i;:::-;15592:69;;15690:1;15672:15;:19;15667:74;;;15696:16;;;;;;;;;;;:25;;:42;15722:15;15696:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15667:74;15768:1;15751:14;:18;15746:71;;;15774:15;;;;;;;;;;;:24;;:40;15799:14;15774:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15746:71;15509:313;;15485:337;15411:415;15360:466;:::o;6966:284::-;7080:12;7031:11;:26;7051:4;7031:26;;;;;;;;;;;;;;;:46;3912:42;7031:46;;;;;;;;;;;;;;;;:61;7026:220;;;7150:17;7101:11;:26;7121:4;7101:26;;;;;;;;;;;;;;;:46;3912:42;7101:46;;;;;;;;;;;;;;;:66;;;;3912:42;7178:62;;7195:4;7178:62;;;7222:17;7178:62;;;;;;:::i;:::-;;;;;;;;7026:220;6966:284;:::o;13900:1117::-;4246:4;4233:10;;:17;;;;;;;;;;;;;;;;;;13955:27:::1;13985:24;14003:4;13985:9;:24::i;:::-;13955:54;;14044:11;;14021:19;:34;;:50;;;;;14059:12;;;;;;;;;;;14021:50;14016:997;;;14108:11;;14085:19;:34;14080:80;;14146:11;;14124:33;;14080:80;14167:20;14245:1;14227:15;;;;;;;;;;;14190:52;;14212:12;;;;;;;;;;;14190:34;;:19;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;14167:79;;14252:21;14315:15:::0;::::1;;;;;;;;;;14276:54;;14298:14;;;;;;;;;;;14276:36;;:19;:36;;;;:::i;:::-;:54;;;;:::i;:::-;14252:78;;14336:41;14356:4;14363:13;14336:11;:41::i;:::-;14388:21;14449:13;14434:12;14412:19;:34;;;;:::i;:::-;:50;;;;:::i;:::-;14388:74;;2570:1;14488:2;:13;;;;:::i;:::-;14472;:29;14468:407;;;14511:19;14533:21;14511:43;;14561:35;14582:13;14561:20;:35::i;:::-;14603:19;14649:11;14625:21;:35;;;;:::i;:::-;14603:57;;14687:1;14672:12:::0;::::1;;;;;;;;;;:16;;;14667:202;;;14699:21;14752:15:::0;::::1;;;;;;;;;;14723:44;;14737:12;;;;;;;;;;;14723:26;;:11;:26;;;;:::i;:::-;:44;;;;:::i;:::-;14699:68;;14776:28;14791:12;14776:14;:28::i;:::-;14812:49;14826:12;14840:13;14855:5;14812:13;:49::i;:::-;14691:178;14667:202;14504:371;;14468:407;14880:27;14910:21;14880:51;;14962:1;14940:19;:23;14937:71;;;14967:38;14985:19;14967:17;:38::i;:::-;14937:71;14074:939;;;;14016:997;13950:1067;4268:5:::0;4255:10;;:18;;;;;;;;;;;;;;;;;;13900:1117::o;9134:450::-;9238:4;9249:21;9273:4;9249:28;;9287:12;;;;;;;;;;;:34;;;;;9304:9;:17;9314:6;9304:17;;;;;;;;;;;;;;;;;;;;;;;;;9303:18;9287:34;:59;;;;;9326:9;:20;9336:9;9326:20;;;;;;;;;;;;;;;;;;;;;;;;;9325:21;9287:59;9282:270;;;9377:12;;9360:14;:29;9355:192;;;9413:5;9394:24;;9355:192;;;9437:5;:16;9443:9;9437:16;;;;;;;;;;;;;;;;;;;;;;;;;9436:17;:79;;;;;9498:16;;9481:14;9458:9;:20;9468:9;9458:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;9436:79;9431:116;;;9539:5;9520:24;;9431:116;9355:192;9282:270;9563:16;9556:23;;;9134:450;;;;;:::o;9846:388::-;9943:7;9957:17;9985:12;;;;;;;;;;;9984:13;:32;;;;10001:7;:15;10009:6;10001:15;;;;;;;;;;;;;;;;;;;;;;;;;9984:32;:54;;;;10020:7;:18;10028:9;10020:18;;;;;;;;;;;;;;;;;;;;;;;;;9984:54;9979:230;;;10055:1;10043:13;;9979:230;;;10073:5;:13;10079:6;10073:13;;;;;;;;;;;;;;;;;;;;;;;;;10068:141;;;10126:3;10112:11;;;;;;;;;;;10103:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;10091:38;;10068:141;;;10146:5;:16;10152:9;10146:16;;;;;;;;;;;;;;;;;;;;;;;;;10141:68;;;10203:3;10188:12;;;;;;;;;;;10179:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;10167:39;;10141:68;10068:141;9979:230;10220:9;10213:16;;;9846:388;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:607::-;4130:6;4138;4146;4195:2;4183:9;4174:7;4170:23;4166:32;4163:119;;;4201:79;;:::i;:::-;4163:119;4321:1;4346:53;4391:7;4382:6;4371:9;4367:22;4346:53;:::i;:::-;4336:63;;4292:117;4448:2;4474:50;4516:7;4507:6;4496:9;4492:22;4474:50;:::i;:::-;4464:60;;4419:115;4573:2;4599:50;4641:7;4632:6;4621:9;4617:22;4599:50;:::i;:::-;4589:60;;4544:115;4059:607;;;;;:::o;4672:468::-;4737:6;4745;4794:2;4782:9;4773:7;4769:23;4765:32;4762:119;;;4800:79;;:::i;:::-;4762:119;4920:1;4945:53;4990:7;4981:6;4970:9;4966:22;4945:53;:::i;:::-;4935:63;;4891:117;5047:2;5073:50;5115:7;5106:6;5095:9;5091:22;5073:50;:::i;:::-;5063:60;;5018:115;4672:468;;;;;:::o;5146:86::-;5181:7;5221:4;5214:5;5210:16;5199:27;;5146:86;;;:::o;5238:112::-;5321:22;5337:5;5321:22;:::i;:::-;5316:3;5309:35;5238:112;;:::o;5356:89::-;5392:7;5432:6;5425:5;5421:18;5410:29;;5356:89;;;:::o;5451:115::-;5536:23;5553:5;5536:23;:::i;:::-;5531:3;5524:36;5451:115;;:::o;5572:743::-;5789:4;5827:3;5816:9;5812:19;5804:27;;5841:67;5905:1;5894:9;5890:17;5881:6;5841:67;:::i;:::-;5918:68;5982:2;5971:9;5967:18;5958:6;5918:68;:::i;:::-;5996:70;6062:2;6051:9;6047:18;6038:6;5996:70;:::i;:::-;6076;6142:2;6131:9;6127:18;6118:6;6076:70;:::i;:::-;6156:71;6222:3;6211:9;6207:19;6198:6;6156:71;:::i;:::-;6237;6303:3;6292:9;6288:19;6279:6;6237:71;:::i;:::-;5572:743;;;;;;;;;:::o;6321:619::-;6398:6;6406;6414;6463:2;6451:9;6442:7;6438:23;6434:32;6431:119;;;6469:79;;:::i;:::-;6431:119;6589:1;6614:53;6659:7;6650:6;6639:9;6635:22;6614:53;:::i;:::-;6604:63;;6560:117;6716:2;6742:53;6787:7;6778:6;6767:9;6763:22;6742:53;:::i;:::-;6732:63;;6687:118;6844:2;6870:53;6915:7;6906:6;6895:9;6891:22;6870:53;:::i;:::-;6860:63;;6815:118;6321:619;;;;;:::o;6946:214::-;7035:4;7073:2;7062:9;7058:18;7050:26;;7086:67;7150:1;7139:9;7135:17;7126:6;7086:67;:::i;:::-;6946:214;;;;:::o;7166:117::-;7275:1;7272;7265:12;7289:117;7398:1;7395;7388:12;7412:117;7521:1;7518;7511:12;7552:568;7625:8;7635:6;7685:3;7678:4;7670:6;7666:17;7662:27;7652:122;;7693:79;;:::i;:::-;7652:122;7806:6;7793:20;7783:30;;7836:18;7828:6;7825:30;7822:117;;;7858:79;;:::i;:::-;7822:117;7972:4;7964:6;7960:17;7948:29;;8026:3;8018:4;8010:6;8006:17;7996:8;7992:32;7989:41;7986:128;;;8033:79;;:::i;:::-;7986:128;7552:568;;;;;:::o;8143:::-;8216:8;8226:6;8276:3;8269:4;8261:6;8257:17;8253:27;8243:122;;8284:79;;:::i;:::-;8243:122;8397:6;8384:20;8374:30;;8427:18;8419:6;8416:30;8413:117;;;8449:79;;:::i;:::-;8413:117;8563:4;8555:6;8551:17;8539:29;;8617:3;8609:4;8601:6;8597:17;8587:8;8583:32;8580:41;8577:128;;;8624:79;;:::i;:::-;8577:128;8143:568;;;;;:::o;8717:934::-;8839:6;8847;8855;8863;8912:2;8900:9;8891:7;8887:23;8883:32;8880:119;;;8918:79;;:::i;:::-;8880:119;9066:1;9055:9;9051:17;9038:31;9096:18;9088:6;9085:30;9082:117;;;9118:79;;:::i;:::-;9082:117;9231:80;9303:7;9294:6;9283:9;9279:22;9231:80;:::i;:::-;9213:98;;;;9009:312;9388:2;9377:9;9373:18;9360:32;9419:18;9411:6;9408:30;9405:117;;;9441:79;;:::i;:::-;9405:117;9554:80;9626:7;9617:6;9606:9;9602:22;9554:80;:::i;:::-;9536:98;;;;9331:313;8717:934;;;;;;;:::o;9657:329::-;9716:6;9765:2;9753:9;9744:7;9740:23;9736:32;9733:119;;;9771:79;;:::i;:::-;9733:119;9891:1;9916:53;9961:7;9952:6;9941:9;9937:22;9916:53;:::i;:::-;9906:63;;9862:117;9657:329;;;;:::o;9992:553::-;10169:4;10207:3;10196:9;10192:19;10184:27;;10221:71;10289:1;10278:9;10274:17;10265:6;10221:71;:::i;:::-;10302:72;10370:2;10359:9;10355:18;10346:6;10302:72;:::i;:::-;10384;10452:2;10441:9;10437:18;10428:6;10384:72;:::i;:::-;10466;10534:2;10523:9;10519:18;10510:6;10466:72;:::i;:::-;9992:553;;;;;;;:::o;10551:329::-;10610:6;10659:2;10647:9;10638:7;10634:23;10630:32;10627:119;;;10665:79;;:::i;:::-;10627:119;10785:1;10810:53;10855:7;10846:6;10835:9;10831:22;10810:53;:::i;:::-;10800:63;;10756:117;10551:329;;;;:::o;10886:308::-;10995:4;11033:2;11022:9;11018:18;11010:26;;11046:65;11108:1;11097:9;11093:17;11084:6;11046:65;:::i;:::-;11121:66;11183:2;11172:9;11168:18;11159:6;11121:66;:::i;:::-;10886:308;;;;;:::o;11200:619::-;11277:6;11285;11293;11342:2;11330:9;11321:7;11317:23;11313:32;11310:119;;;11348:79;;:::i;:::-;11310:119;11468:1;11493:53;11538:7;11529:6;11518:9;11514:22;11493:53;:::i;:::-;11483:63;;11439:117;11595:2;11621:53;11666:7;11657:6;11646:9;11642:22;11621:53;:::i;:::-;11611:63;;11566:118;11723:2;11749:53;11794:7;11785:6;11774:9;11770:22;11749:53;:::i;:::-;11739:63;;11694:118;11200:619;;;;;:::o;11825:118::-;11912:24;11930:5;11912:24;:::i;:::-;11907:3;11900:37;11825:118;;:::o;11949:664::-;12154:4;12192:3;12181:9;12177:19;12169:27;;12206:71;12274:1;12263:9;12259:17;12250:6;12206:71;:::i;:::-;12287:72;12355:2;12344:9;12340:18;12331:6;12287:72;:::i;:::-;12369;12437:2;12426:9;12422:18;12413:6;12369:72;:::i;:::-;12451;12519:2;12508:9;12504:18;12495:6;12451:72;:::i;:::-;12533:73;12601:3;12590:9;12586:19;12577:6;12533:73;:::i;:::-;11949:664;;;;;;;;:::o;12619:120::-;12691:23;12708:5;12691:23;:::i;:::-;12684:5;12681:34;12671:62;;12729:1;12726;12719:12;12671:62;12619:120;:::o;12745:137::-;12790:5;12828:6;12815:20;12806:29;;12844:32;12870:5;12844:32;:::i;:::-;12745:137;;;;:::o;12888:470::-;12954:6;12962;13011:2;12999:9;12990:7;12986:23;12982:32;12979:119;;;13017:79;;:::i;:::-;12979:119;13137:1;13162:52;13206:7;13197:6;13186:9;13182:22;13162:52;:::i;:::-;13152:62;;13108:116;13263:2;13289:52;13333:7;13324:6;13313:9;13309:22;13289:52;:::i;:::-;13279:62;;13234:117;12888:470;;;;;:::o;13364:462::-;13426:6;13434;13483:2;13471:9;13462:7;13458:23;13454:32;13451:119;;;13489:79;;:::i;:::-;13451:119;13609:1;13634:50;13676:7;13667:6;13656:9;13652:22;13634:50;:::i;:::-;13624:60;;13580:114;13733:2;13759:50;13801:7;13792:6;13781:9;13777:22;13759:50;:::i;:::-;13749:60;;13704:115;13364:462;;;;;:::o;13832:474::-;13900:6;13908;13957:2;13945:9;13936:7;13932:23;13928:32;13925:119;;;13963:79;;:::i;:::-;13925:119;14083:1;14108:53;14153:7;14144:6;14133:9;14129:22;14108:53;:::i;:::-;14098:63;;14054:117;14210:2;14236:53;14281:7;14272:6;14261:9;14257:22;14236:53;:::i;:::-;14226:63;;14181:118;13832:474;;;;;:::o;14312:93::-;14348:7;14388:10;14381:5;14377:22;14366:33;;14312:93;;;:::o;14411:120::-;14483:23;14500:5;14483:23;:::i;:::-;14476:5;14473:34;14463:62;;14521:1;14518;14511:12;14463:62;14411:120;:::o;14537:137::-;14582:5;14620:6;14607:20;14598:29;;14636:32;14662:5;14636:32;:::i;:::-;14537:137;;;;:::o;14680:757::-;14762:6;14770;14778;14786;14835:3;14823:9;14814:7;14810:23;14806:33;14803:120;;;14842:79;;:::i;:::-;14803:120;14962:1;14987:52;15031:7;15022:6;15011:9;15007:22;14987:52;:::i;:::-;14977:62;;14933:116;15088:2;15114:52;15158:7;15149:6;15138:9;15134:22;15114:52;:::i;:::-;15104:62;;15059:117;15215:2;15241:52;15285:7;15276:6;15265:9;15261:22;15241:52;:::i;:::-;15231:62;;15186:117;15342:2;15368:52;15412:7;15403:6;15392:9;15388:22;15368:52;:::i;:::-;15358:62;;15313:117;14680:757;;;;;;;:::o;15443:104::-;15488:7;15517:24;15535:5;15517:24;:::i;:::-;15506:35;;15443:104;;;:::o;15553:138::-;15634:32;15660:5;15634:32;:::i;:::-;15627:5;15624:43;15614:71;;15681:1;15678;15671:12;15614:71;15553:138;:::o;15697:155::-;15751:5;15789:6;15776:20;15767:29;;15805:41;15840:5;15805:41;:::i;:::-;15697:155;;;;:::o;15858:345::-;15925:6;15974:2;15962:9;15953:7;15949:23;15945:32;15942:119;;;15980:79;;:::i;:::-;15942:119;16100:1;16125:61;16178:7;16169:6;16158:9;16154:22;16125:61;:::i;:::-;16115:71;;16071:125;15858:345;;;;:::o;16209:757::-;16291:6;16299;16307;16315;16364:3;16352:9;16343:7;16339:23;16335:33;16332:120;;;16371:79;;:::i;:::-;16332:120;16491:1;16516:52;16560:7;16551:6;16540:9;16536:22;16516:52;:::i;:::-;16506:62;;16462:116;16617:2;16643:52;16687:7;16678:6;16667:9;16663:22;16643:52;:::i;:::-;16633:62;;16588:117;16744:2;16770:52;16814:7;16805:6;16794:9;16790:22;16770:52;:::i;:::-;16760:62;;16715:117;16871:2;16897:52;16941:7;16932:6;16921:9;16917:22;16897:52;:::i;:::-;16887:62;;16842:117;16209:757;;;;;;;:::o;16972:118::-;17043:22;17059:5;17043:22;:::i;:::-;17036:5;17033:33;17023:61;;17080:1;17077;17070:12;17023:61;16972:118;:::o;17096:135::-;17140:5;17178:6;17165:20;17156:29;;17194:31;17219:5;17194:31;:::i;:::-;17096:135;;;;:::o;17237:466::-;17301:6;17309;17358:2;17346:9;17337:7;17333:23;17329:32;17326:119;;;17364:79;;:::i;:::-;17326:119;17484:1;17509:51;17552:7;17543:6;17532:9;17528:22;17509:51;:::i;:::-;17499:61;;17455:115;17609:2;17635:51;17678:7;17669:6;17658:9;17654:22;17635:51;:::i;:::-;17625:61;;17580:116;17237:466;;;;;:::o;17709:230::-;17849:34;17845:1;17837:6;17833:14;17826:58;17918:13;17913:2;17905:6;17901:15;17894:38;17709:230;:::o;17945:366::-;18087:3;18108:67;18172:2;18167:3;18108:67;:::i;:::-;18101:74;;18184:93;18273:3;18184:93;:::i;:::-;18302:2;18297:3;18293:12;18286:19;;17945:366;;;:::o;18317:419::-;18483:4;18521:2;18510:9;18506:18;18498:26;;18570:9;18564:4;18560:20;18556:1;18545:9;18541:17;18534:47;18598:131;18724:4;18598:131;:::i;:::-;18590:139;;18317:419;;;:::o;18742:159::-;18882:11;18878:1;18870:6;18866:14;18859:35;18742:159;:::o;18907:365::-;19049:3;19070:66;19134:1;19129:3;19070:66;:::i;:::-;19063:73;;19145:93;19234:3;19145:93;:::i;:::-;19263:2;19258:3;19254:12;19247:19;;18907:365;;;:::o;19278:419::-;19444:4;19482:2;19471:9;19467:18;19459:26;;19531:9;19525:4;19521:20;19517:1;19506:9;19502:17;19495:47;19559:131;19685:4;19559:131;:::i;:::-;19551:139;;19278:419;;;:::o;19703:168::-;19843:20;19839:1;19831:6;19827:14;19820:44;19703:168;:::o;19877:366::-;20019:3;20040:67;20104:2;20099:3;20040:67;:::i;:::-;20033:74;;20116:93;20205:3;20116:93;:::i;:::-;20234:2;20229:3;20225:12;20218:19;;19877:366;;;:::o;20249:419::-;20415:4;20453:2;20442:9;20438:18;20430:26;;20502:9;20496:4;20492:20;20488:1;20477:9;20473:17;20466:47;20530:131;20656:4;20530:131;:::i;:::-;20522:139;;20249:419;;;:::o;20674:171::-;20814:23;20810:1;20802:6;20798:14;20791:47;20674:171;:::o;20851:366::-;20993:3;21014:67;21078:2;21073:3;21014:67;:::i;:::-;21007:74;;21090:93;21179:3;21090:93;:::i;:::-;21208:2;21203:3;21199:12;21192:19;;20851:366;;;:::o;21223:419::-;21389:4;21427:2;21416:9;21412:18;21404:26;;21476:9;21470:4;21466:20;21462:1;21451:9;21447:17;21440:47;21504:131;21630:4;21504:131;:::i;:::-;21496:139;;21223:419;;;:::o;21648:143::-;21705:5;21736:6;21730:13;21721:22;;21752:33;21779:5;21752:33;:::i;:::-;21648:143;;;;:::o;21797:351::-;21867:6;21916:2;21904:9;21895:7;21891:23;21887:32;21884:119;;;21922:79;;:::i;:::-;21884:119;22042:1;22067:64;22123:7;22114:6;22103:9;22099:22;22067:64;:::i;:::-;22057:74;;22013:128;21797:351;;;;:::o;22154:332::-;22275:4;22313:2;22302:9;22298:18;22290:26;;22326:71;22394:1;22383:9;22379:17;22370:6;22326:71;:::i;:::-;22407:72;22475:2;22464:9;22460:18;22451:6;22407:72;:::i;:::-;22154:332;;;;;:::o;22492:180::-;22540:77;22537:1;22530:88;22637:4;22634:1;22627:15;22661:4;22658:1;22651:15;22678:102;22720:8;22767:5;22764:1;22760:13;22739:34;;22678:102;;;:::o;22786:848::-;22847:5;22854:4;22878:6;22869:15;;22902:5;22893:14;;22916:712;22937:1;22927:8;22924:15;22916:712;;;23032:4;23027:3;23023:14;23017:4;23014:24;23011:50;;;23041:18;;:::i;:::-;23011:50;23091:1;23081:8;23077:16;23074:451;;;23506:4;23499:5;23495:16;23486:25;;23074:451;23556:4;23550;23546:15;23538:23;;23586:32;23609:8;23586:32;:::i;:::-;23574:44;;22916:712;;;22786:848;;;;;;;:::o;23640:1073::-;23694:5;23885:8;23875:40;;23906:1;23897:10;;23908:5;;23875:40;23934:4;23924:36;;23951:1;23942:10;;23953:5;;23924:36;24020:4;24068:1;24063:27;;;;24104:1;24099:191;;;;24013:277;;24063:27;24081:1;24072:10;;24083:5;;;24099:191;24144:3;24134:8;24131:17;24128:43;;;24151:18;;:::i;:::-;24128:43;24200:8;24197:1;24193:16;24184:25;;24235:3;24228:5;24225:14;24222:40;;;24242:18;;:::i;:::-;24222:40;24275:5;;;24013:277;;24399:2;24389:8;24386:16;24380:3;24374:4;24371:13;24367:36;24349:2;24339:8;24336:16;24331:2;24325:4;24322:12;24318:35;24302:111;24299:246;;;24455:8;24449:4;24445:19;24436:28;;24490:3;24483:5;24480:14;24477:40;;;24497:18;;:::i;:::-;24477:40;24530:5;;24299:246;24570:42;24608:3;24598:8;24592:4;24589:1;24570:42;:::i;:::-;24555:57;;;;24644:4;24639:3;24635:14;24628:5;24625:25;24622:51;;;24653:18;;:::i;:::-;24622:51;24702:4;24695:5;24691:16;24682:25;;23640:1073;;;;;;:::o;24719:281::-;24777:5;24801:23;24819:4;24801:23;:::i;:::-;24793:31;;24845:25;24861:8;24845:25;:::i;:::-;24833:37;;24889:104;24926:66;24916:8;24910:4;24889:104;:::i;:::-;24880:113;;24719:281;;;;:::o;25006:410::-;25046:7;25069:20;25087:1;25069:20;:::i;:::-;25064:25;;25103:20;25121:1;25103:20;:::i;:::-;25098:25;;25158:1;25155;25151:9;25180:30;25198:11;25180:30;:::i;:::-;25169:41;;25359:1;25350:7;25346:15;25343:1;25340:22;25320:1;25313:9;25293:83;25270:139;;25389:18;;:::i;:::-;25270:139;25054:362;25006:410;;;;:::o;25422:166::-;25562:18;25558:1;25550:6;25546:14;25539:42;25422:166;:::o;25594:366::-;25736:3;25757:67;25821:2;25816:3;25757:67;:::i;:::-;25750:74;;25833:93;25922:3;25833:93;:::i;:::-;25951:2;25946:3;25942:12;25935:19;;25594:366;;;:::o;25966:419::-;26132:4;26170:2;26159:9;26155:18;26147:26;;26219:9;26213:4;26209:20;26205:1;26194:9;26190:17;26183:47;26247:131;26373:4;26247:131;:::i;:::-;26239:139;;25966:419;;;:::o;26391:178::-;26531:30;26527:1;26519:6;26515:14;26508:54;26391:178;:::o;26575:366::-;26717:3;26738:67;26802:2;26797:3;26738:67;:::i;:::-;26731:74;;26814:93;26903:3;26814:93;:::i;:::-;26932:2;26927:3;26923:12;26916:19;;26575:366;;;:::o;26947:419::-;27113:4;27151:2;27140:9;27136:18;27128:26;;27200:9;27194:4;27190:20;27186:1;27175:9;27171:17;27164:47;27228:131;27354:4;27228:131;:::i;:::-;27220:139;;26947:419;;;:::o;27372:166::-;27512:18;27508:1;27500:6;27496:14;27489:42;27372:166;:::o;27544:366::-;27686:3;27707:67;27771:2;27766:3;27707:67;:::i;:::-;27700:74;;27783:93;27872:3;27783:93;:::i;:::-;27901:2;27896:3;27892:12;27885:19;;27544:366;;;:::o;27916:419::-;28082:4;28120:2;28109:9;28105:18;28097:26;;28169:9;28163:4;28159:20;28155:1;28144:9;28140:17;28133:47;28197:131;28323:4;28197:131;:::i;:::-;28189:139;;27916:419;;;:::o;28341:194::-;28381:4;28401:20;28419:1;28401:20;:::i;:::-;28396:25;;28435:20;28453:1;28435:20;:::i;:::-;28430:25;;28479:1;28476;28472:9;28464:17;;28503:1;28497:4;28494:11;28491:37;;;28508:18;;:::i;:::-;28491:37;28341:194;;;;:::o;28541:182::-;28681:34;28677:1;28669:6;28665:14;28658:58;28541:182;:::o;28729:366::-;28871:3;28892:67;28956:2;28951:3;28892:67;:::i;:::-;28885:74;;28968:93;29057:3;28968:93;:::i;:::-;29086:2;29081:3;29077:12;29070:19;;28729:366;;;:::o;29101:419::-;29267:4;29305:2;29294:9;29290:18;29282:26;;29354:9;29348:4;29344:20;29340:1;29329:9;29325:17;29318:47;29382:131;29508:4;29382:131;:::i;:::-;29374:139;;29101:419;;;:::o;29526:224::-;29666:34;29662:1;29654:6;29650:14;29643:58;29735:7;29730:2;29722:6;29718:15;29711:32;29526:224;:::o;29756:366::-;29898:3;29919:67;29983:2;29978:3;29919:67;:::i;:::-;29912:74;;29995:93;30084:3;29995:93;:::i;:::-;30113:2;30108:3;30104:12;30097:19;;29756:366;;;:::o;30128:419::-;30294:4;30332:2;30321:9;30317:18;30309:26;;30381:9;30375:4;30371:20;30367:1;30356:9;30352:17;30345:47;30409:131;30535:4;30409:131;:::i;:::-;30401:139;;30128:419;;;:::o;30553:180::-;30601:77;30598:1;30591:88;30698:4;30695:1;30688:15;30722:4;30719:1;30712:15;30739:191;30779:3;30798:20;30816:1;30798:20;:::i;:::-;30793:25;;30832:20;30850:1;30832:20;:::i;:::-;30827:25;;30875:1;30872;30868:9;30861:16;;30896:3;30893:1;30890:10;30887:36;;;30903:18;;:::i;:::-;30887:36;30739:191;;;;:::o;30936:233::-;30975:3;30998:24;31016:5;30998:24;:::i;:::-;30989:33;;31044:66;31037:5;31034:77;31031:103;;31114:18;;:::i;:::-;31031:103;31161:1;31154:5;31150:13;31143:20;;30936:233;;;:::o;31175:225::-;31315:34;31311:1;31303:6;31299:14;31292:58;31384:8;31379:2;31371:6;31367:15;31360:33;31175:225;:::o;31406:366::-;31548:3;31569:67;31633:2;31628:3;31569:67;:::i;:::-;31562:74;;31645:93;31734:3;31645:93;:::i;:::-;31763:2;31758:3;31754:12;31747:19;;31406:366;;;:::o;31778:419::-;31944:4;31982:2;31971:9;31967:18;31959:26;;32031:9;32025:4;32021:20;32017:1;32006:9;32002:17;31995:47;32059:131;32185:4;32059:131;:::i;:::-;32051:139;;31778:419;;;:::o;32203:332::-;32324:4;32362:2;32351:9;32347:18;32339:26;;32375:71;32443:1;32432:9;32428:17;32419:6;32375:71;:::i;:::-;32456:72;32524:2;32513:9;32509:18;32500:6;32456:72;:::i;:::-;32203:332;;;;;:::o;32541:171::-;32681:23;32677:1;32669:6;32665:14;32658:47;32541:171;:::o;32718:366::-;32860:3;32881:67;32945:2;32940:3;32881:67;:::i;:::-;32874:74;;32957:93;33046:3;32957:93;:::i;:::-;33075:2;33070:3;33066:12;33059:19;;32718:366;;;:::o;33090:419::-;33256:4;33294:2;33283:9;33279:18;33271:26;;33343:9;33337:4;33333:20;33329:1;33318:9;33314:17;33307:47;33371:131;33497:4;33371:131;:::i;:::-;33363:139;;33090:419;;;:::o;33515:173::-;33655:25;33651:1;33643:6;33639:14;33632:49;33515:173;:::o;33694:366::-;33836:3;33857:67;33921:2;33916:3;33857:67;:::i;:::-;33850:74;;33933:93;34022:3;33933:93;:::i;:::-;34051:2;34046:3;34042:12;34035:19;;33694:366;;;:::o;34066:419::-;34232:4;34270:2;34259:9;34255:18;34247:26;;34319:9;34313:4;34309:20;34305:1;34294:9;34290:17;34283:47;34347:131;34473:4;34347:131;:::i;:::-;34339:139;;34066:419;;;:::o;34491:180::-;34539:77;34536:1;34529:88;34636:4;34633:1;34626:15;34660:4;34657:1;34650:15;34677:185;34717:1;34734:20;34752:1;34734:20;:::i;:::-;34729:25;;34768:20;34786:1;34768:20;:::i;:::-;34763:25;;34807:1;34797:35;;34812:18;;:::i;:::-;34797:35;34854:1;34851;34847:9;34842:14;;34677:185;;;;:::o;34868:166::-;35008:18;35004:1;34996:6;34992:14;34985:42;34868:166;:::o;35040:366::-;35182:3;35203:67;35267:2;35262:3;35203:67;:::i;:::-;35196:74;;35279:93;35368:3;35279:93;:::i;:::-;35397:2;35392:3;35388:12;35381:19;;35040:366;;;:::o;35412:419::-;35578:4;35616:2;35605:9;35601:18;35593:26;;35665:9;35659:4;35655:20;35651:1;35640:9;35636:17;35629:47;35693:131;35819:4;35693:131;:::i;:::-;35685:139;;35412:419;;;:::o;35837:170::-;35977:22;35973:1;35965:6;35961:14;35954:46;35837:170;:::o;36013:366::-;36155:3;36176:67;36240:2;36235:3;36176:67;:::i;:::-;36169:74;;36252:93;36341:3;36252:93;:::i;:::-;36370:2;36365:3;36361:12;36354:19;;36013:366;;;:::o;36385:419::-;36551:4;36589:2;36578:9;36574:18;36566:26;;36638:9;36632:4;36628:20;36624:1;36613:9;36609:17;36602:47;36666:131;36792:4;36666:131;:::i;:::-;36658:139;;36385:419;;;:::o;36810:170::-;36950:22;36946:1;36938:6;36934:14;36927:46;36810:170;:::o;36986:366::-;37128:3;37149:67;37213:2;37208:3;37149:67;:::i;:::-;37142:74;;37225:93;37314:3;37225:93;:::i;:::-;37343:2;37338:3;37334:12;37327:19;;36986:366;;;:::o;37358:419::-;37524:4;37562:2;37551:9;37547:18;37539:26;;37611:9;37605:4;37601:20;37597:1;37586:9;37582:17;37575:47;37639:131;37765:4;37639:131;:::i;:::-;37631:139;;37358:419;;;:::o;37783:159::-;37923:11;37919:1;37911:6;37907:14;37900:35;37783:159;:::o;37948:365::-;38090:3;38111:66;38175:1;38170:3;38111:66;:::i;:::-;38104:73;;38186:93;38275:3;38186:93;:::i;:::-;38304:2;38299:3;38295:12;38288:19;;37948:365;;;:::o;38319:419::-;38485:4;38523:2;38512:9;38508:18;38500:26;;38572:9;38566:4;38562:20;38558:1;38547:9;38543:17;38536:47;38600:131;38726:4;38600:131;:::i;:::-;38592:139;;38319:419;;;:::o;38744:168::-;38884:20;38880:1;38872:6;38868:14;38861:44;38744:168;:::o;38918:366::-;39060:3;39081:67;39145:2;39140:3;39081:67;:::i;:::-;39074:74;;39157:93;39246:3;39157:93;:::i;:::-;39275:2;39270:3;39266:12;39259:19;;38918:366;;;:::o;39290:419::-;39456:4;39494:2;39483:9;39479:18;39471:26;;39543:9;39537:4;39533:20;39529:1;39518:9;39514:17;39507:47;39571:131;39697:4;39571:131;:::i;:::-;39563:139;;39290:419;;;:::o;39715:162::-;39855:14;39851:1;39843:6;39839:14;39832:38;39715:162;:::o;39883:366::-;40025:3;40046:67;40110:2;40105:3;40046:67;:::i;:::-;40039:74;;40122:93;40211:3;40122:93;:::i;:::-;40240:2;40235:3;40231:12;40224:19;;39883:366;;;:::o;40255:419::-;40421:4;40459:2;40448:9;40444:18;40436:26;;40508:9;40502:4;40498:20;40494:1;40483:9;40479:17;40472:47;40536:131;40662:4;40536:131;:::i;:::-;40528:139;;40255:419;;;:::o;40680:173::-;40820:25;40816:1;40808:6;40804:14;40797:49;40680:173;:::o;40859:366::-;41001:3;41022:67;41086:2;41081:3;41022:67;:::i;:::-;41015:74;;41098:93;41187:3;41098:93;:::i;:::-;41216:2;41211:3;41207:12;41200:19;;40859:366;;;:::o;41231:419::-;41397:4;41435:2;41424:9;41420:18;41412:26;;41484:9;41478:4;41474:20;41470:1;41459:9;41455:17;41448:47;41512:131;41638:4;41512:131;:::i;:::-;41504:139;;41231:419;;;:::o;41656:174::-;41796:26;41792:1;41784:6;41780:14;41773:50;41656:174;:::o;41836:366::-;41978:3;41999:67;42063:2;42058:3;41999:67;:::i;:::-;41992:74;;42075:93;42164:3;42075:93;:::i;:::-;42193:2;42188:3;42184:12;42177:19;;41836:366;;;:::o;42208:419::-;42374:4;42412:2;42401:9;42397:18;42389:26;;42461:9;42455:4;42451:20;42447:1;42436:9;42432:17;42425:47;42489:131;42615:4;42489:131;:::i;:::-;42481:139;;42208:419;;;:::o;42633:60::-;42661:3;42682:5;42675:12;;42633:60;;;:::o;42699:142::-;42749:9;42782:53;42800:34;42809:24;42827:5;42809:24;:::i;:::-;42800:34;:::i;:::-;42782:53;:::i;:::-;42769:66;;42699:142;;;:::o;42847:126::-;42897:9;42930:37;42961:5;42930:37;:::i;:::-;42917:50;;42847:126;;;:::o;42979:134::-;43037:9;43070:37;43101:5;43070:37;:::i;:::-;43057:50;;42979:134;;;:::o;43119:147::-;43214:45;43253:5;43214:45;:::i;:::-;43209:3;43202:58;43119:147;;:::o;43272:238::-;43373:4;43411:2;43400:9;43396:18;43388:26;;43424:79;43500:1;43489:9;43485:17;43476:6;43424:79;:::i;:::-;43272:238;;;;:::o;43516:193::-;43555:3;43574:19;43591:1;43574:19;:::i;:::-;43569:24;;43607:19;43624:1;43607:19;:::i;:::-;43602:24;;43649:1;43646;43642:9;43635:16;;43672:6;43667:3;43664:15;43661:41;;;43682:18;;:::i;:::-;43661:41;43516:193;;;;:::o;43715:188::-;43753:3;43772:18;43788:1;43772:18;:::i;:::-;43767:23;;43804:18;43820:1;43804:18;:::i;:::-;43799:23;;43845:1;43842;43838:9;43831:16;;43868:4;43863:3;43860:13;43857:39;;;43876:18;;:::i;:::-;43857:39;43715:188;;;;:::o;43909:168::-;44049:20;44045:1;44037:6;44033:14;44026:44;43909:168;:::o;44083:366::-;44225:3;44246:67;44310:2;44305:3;44246:67;:::i;:::-;44239:74;;44322:93;44411:3;44322:93;:::i;:::-;44440:2;44435:3;44431:12;44424:19;;44083:366;;;:::o;44455:419::-;44621:4;44659:2;44648:9;44644:18;44636:26;;44708:9;44702:4;44698:20;44694:1;44683:9;44679:17;44672:47;44736:131;44862:4;44736:131;:::i;:::-;44728:139;;44455:419;;;:::o;44880:85::-;44925:7;44954:5;44943:16;;44880:85;;;:::o;44971:158::-;45029:9;45062:61;45080:42;45089:32;45115:5;45089:32;:::i;:::-;45080:42;:::i;:::-;45062:61;:::i;:::-;45049:74;;44971:158;;;:::o;45135:147::-;45230:45;45269:5;45230:45;:::i;:::-;45225:3;45218:58;45135:147;;:::o;45288:807::-;45537:4;45575:3;45564:9;45560:19;45552:27;;45589:71;45657:1;45646:9;45642:17;45633:6;45589:71;:::i;:::-;45670:72;45738:2;45727:9;45723:18;45714:6;45670:72;:::i;:::-;45752:80;45828:2;45817:9;45813:18;45804:6;45752:80;:::i;:::-;45842;45918:2;45907:9;45903:18;45894:6;45842:80;:::i;:::-;45932:73;46000:3;45989:9;45985:19;45976:6;45932:73;:::i;:::-;46015;46083:3;46072:9;46068:19;46059:6;46015:73;:::i;:::-;45288:807;;;;;;;;;:::o;46101:143::-;46158:5;46189:6;46183:13;46174:22;;46205:33;46232:5;46205:33;:::i;:::-;46101:143;;;;:::o;46250:663::-;46338:6;46346;46354;46403:2;46391:9;46382:7;46378:23;46374:32;46371:119;;;46409:79;;:::i;:::-;46371:119;46529:1;46554:64;46610:7;46601:6;46590:9;46586:22;46554:64;:::i;:::-;46544:74;;46500:128;46667:2;46693:64;46749:7;46740:6;46729:9;46725:22;46693:64;:::i;:::-;46683:74;;46638:129;46806:2;46832:64;46888:7;46879:6;46868:9;46864:22;46832:64;:::i;:::-;46822:74;;46777:129;46250:663;;;;;:::o;46919:179::-;47059:31;47055:1;47047:6;47043:14;47036:55;46919:179;:::o;47104:366::-;47246:3;47267:67;47331:2;47326:3;47267:67;:::i;:::-;47260:74;;47343:93;47432:3;47343:93;:::i;:::-;47461:2;47456:3;47452:12;47445:19;;47104:366;;;:::o;47476:419::-;47642:4;47680:2;47669:9;47665:18;47657:26;;47729:9;47723:4;47719:20;47715:1;47704:9;47700:17;47693:47;47757:131;47883:4;47757:131;:::i;:::-;47749:139;;47476:419;;;:::o;47901:167::-;48041:19;48037:1;48029:6;48025:14;48018:43;47901:167;:::o;48074:366::-;48216:3;48237:67;48301:2;48296:3;48237:67;:::i;:::-;48230:74;;48313:93;48402:3;48313:93;:::i;:::-;48431:2;48426:3;48422:12;48415:19;;48074:366;;;:::o;48446:419::-;48612:4;48650:2;48639:9;48635:18;48627:26;;48699:9;48693:4;48689:20;48685:1;48674:9;48670:17;48663:47;48727:131;48853:4;48727:131;:::i;:::-;48719:139;;48446:419;;;:::o;48871:180::-;48919:77;48916:1;48909:88;49016:4;49013:1;49006:15;49040:4;49037:1;49030:15;49057:114;49124:6;49158:5;49152:12;49142:22;;49057:114;;;:::o;49177:184::-;49276:11;49310:6;49305:3;49298:19;49350:4;49345:3;49341:14;49326:29;;49177:184;;;;:::o;49367:132::-;49434:4;49457:3;49449:11;;49487:4;49482:3;49478:14;49470:22;;49367:132;;;:::o;49505:108::-;49582:24;49600:5;49582:24;:::i;:::-;49577:3;49570:37;49505:108;;:::o;49619:179::-;49688:10;49709:46;49751:3;49743:6;49709:46;:::i;:::-;49787:4;49782:3;49778:14;49764:28;;49619:179;;;;:::o;49804:113::-;49874:4;49906;49901:3;49897:14;49889:22;;49804:113;;;:::o;49953:732::-;50072:3;50101:54;50149:5;50101:54;:::i;:::-;50171:86;50250:6;50245:3;50171:86;:::i;:::-;50164:93;;50281:56;50331:5;50281:56;:::i;:::-;50360:7;50391:1;50376:284;50401:6;50398:1;50395:13;50376:284;;;50477:6;50471:13;50504:63;50563:3;50548:13;50504:63;:::i;:::-;50497:70;;50590:60;50643:6;50590:60;:::i;:::-;50580:70;;50436:224;50423:1;50420;50416:9;50411:14;;50376:284;;;50380:14;50676:3;50669:10;;50077:608;;;49953:732;;;;:::o;50691:831::-;50954:4;50992:3;50981:9;50977:19;50969:27;;51006:71;51074:1;51063:9;51059:17;51050:6;51006:71;:::i;:::-;51087:80;51163:2;51152:9;51148:18;51139:6;51087:80;:::i;:::-;51214:9;51208:4;51204:20;51199:2;51188:9;51184:18;51177:48;51242:108;51345:4;51336:6;51242:108;:::i;:::-;51234:116;;51360:72;51428:2;51417:9;51413:18;51404:6;51360:72;:::i;:::-;51442:73;51510:3;51499:9;51495:19;51486:6;51442:73;:::i;:::-;50691:831;;;;;;;;:::o
Swarm Source
ipfs://df6e924202e7984cc7b3cbd85213f8686fcbfc7f9b874290d31d3044e38f0a77
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.