Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
420,690,000,000,000 SOLANA
Holders
114
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.2952800555195466 SOLANAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
HarryMaguireKennedyKnuckles69Inu
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-03 */ /** https://www.hmkk69i.com/ https://twitter.com/HMKK69I https://t.me/hmkk69ierc **/ // SPDX-License-Identifier:MIT pragma solidity ^0.8.18; interface IERC20 { function totalSupply() external view returns (uint256); 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 ); } // Dex Factory contract interface interface IDexFactory { function createPair( address tokenA, address tokenB ) external returns (address pair); } // Dex Router contract interface interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = payable(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract HarryMaguireKennedyKnuckles69Inu is Context, IERC20, Ownable { string private _name = "HarryMaguireKennedyKnuckles69Inu"; string private _symbol = "SOLANA"; uint8 private _decimals = 18; uint256 private _totalSupply = 420_690_000_000_000 * 1e18; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) public isExcludedFromFee; mapping(address => bool) public isExcludedFromMaxTxn; mapping(address => bool) public isExcludedFromMaxHolding; uint256 public minTokenToSwap = (_totalSupply * 100) / (10000); // this amount will trigger swap and distribute uint256 public maxHoldLimit = (_totalSupply * 2) / (100); // this is the max wallet holding limit uint256 public maxTxnLimit = (_totalSupply * 100) / (100); // this is the max transaction limit uint256 public percentDivider = 100; uint256 public launchedAt; bool public distributeAndLiquifyStatus; // should be true to turn on to liquidate the pool bool public feesStatus; // enable by default bool public trading; // once enable can't be disable afterwards IDexRouter public dexRouter; // router declaration address public dexPair; // pair address declaration address public marketingWallet; // marketing address declaration address private constant DEAD = address(0xdead); address private constant ZERO = address(0); uint256 public marketingFeeOnBuying = 25; uint256 public marketingFeeOnSelling = 35; event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); constructor() { _balances[owner()] = _totalSupply; marketingWallet = address(0x990e34C65bedBd15984a730d09d0e34CAd06e94c); dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); isExcludedFromFee[address(dexRouter)] = true; isExcludedFromMaxTxn[address(dexRouter)] = true; isExcludedFromMaxHolding[address(dexRouter)] = true; dexPair = IDexFactory(dexRouter.factory()).createPair( address(this), dexRouter.WETH() ); isExcludedFromMaxHolding[dexPair] = true; //exclude owner and this contract from fee isExcludedFromFee[owner()] = true; isExcludedFromFee[address(this)] = true; //exclude owner and this contract from max Txn isExcludedFromMaxTxn[owner()] = true; isExcludedFromMaxTxn[address(this)] = true; //exclude owner and this contract from max hold limit isExcludedFromMaxHolding[owner()] = true; isExcludedFromMaxHolding[address(this)] = true; isExcludedFromMaxHolding[marketingWallet] = true; emit Transfer(address(0), owner(), _totalSupply); } //to receive ETH from dexRouter when swapping receive() external payable {} function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()] - amount ); return true; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + (addedValue) ); return true; } function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue ); return true; } function includeOrExcludeFromFee( address account, bool value ) external onlyOwner { isExcludedFromFee[account] = value; } function includeOrExcludeFromMaxTxn( address account, bool value ) external onlyOwner { isExcludedFromMaxTxn[account] = value; } function includeOrExcludeFromMaxHolding( address account, bool value ) external onlyOwner { isExcludedFromMaxHolding[account] = value; } function setMinTokenToSwap(uint256 _amount) external onlyOwner { minTokenToSwap = _amount * 1e18; } function setMaxHoldLimit(uint256 _amount) external onlyOwner { maxHoldLimit = _amount * 1e18; } function setMaxTxnLimit(uint256 _amount) external onlyOwner { maxTxnLimit = _amount * 1e18; } function setBuyFeePercent(uint256 _marketingFee) external onlyOwner { marketingFeeOnBuying = _marketingFee; } function setSellFeePercent(uint256 _marketingFee) external onlyOwner { marketingFeeOnSelling = _marketingFee; } function setDistributionStatus(bool _value) public onlyOwner { distributeAndLiquifyStatus = _value; } function enableOrDisableFees(bool _value) external onlyOwner { feesStatus = _value; } function updateAddresses(address _marketingWallet) external onlyOwner { marketingWallet = _marketingWallet; } function enableTrading() external onlyOwner { require(!trading, ": already enabled"); trading = true; feesStatus = true; distributeAndLiquifyStatus = true; launchedAt = block.timestamp; } function removeStuckEth(address _receiver) public onlyOwner { payable(_receiver).transfer(address(this).balance); } function totalBuyFeePerTx(uint256 amount) public view returns (uint256) { uint256 fee = (amount * marketingFeeOnBuying) / (percentDivider); return fee; } function totalSellFeePerTx(uint256 amount) public view returns (uint256) { uint256 fee = (amount * marketingFeeOnSelling) / (percentDivider); return fee; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), " approve from the zero address"); require(spender != address(0), "approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "transfer from the zero address"); require(to != address(0), "transfer to the zero address"); require(amount > 0, "Amount must be greater than zero"); if (!isExcludedFromMaxTxn[from] && !isExcludedFromMaxTxn[to]) { require(amount <= maxTxnLimit, " max txn limit exceeds"); // trading disable till launch if (!trading) { require( dexPair != from && dexPair != to, ": trading is disable" ); } } if (!isExcludedFromMaxHolding[to]) { require( (balanceOf(to) + amount) <= maxHoldLimit, ": max hold limit exceeds" ); } // swap and liquify distributeAndLiquify(from, to); //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to isExcludedFromFee account then remove the fee if (isExcludedFromFee[from] || isExcludedFromFee[to] || !feesStatus) { takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from, to, amount, takeFee); } //this method is responsible for taking all fees, if takeFee is true function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (dexPair == sender && takeFee) { uint256 allFee; uint256 tTransferAmount; allFee = totalBuyFeePerTx(amount); tTransferAmount = amount - allFee; _balances[sender] = _balances[sender] - amount; _balances[recipient] = _balances[recipient] + tTransferAmount; emit Transfer(sender, recipient, tTransferAmount); takeTokenFee(sender, allFee); } else if (dexPair == recipient && takeFee) { uint256 allFee = totalSellFeePerTx(amount); uint256 tTransferAmount = amount - allFee; _balances[sender] = _balances[sender] - amount; _balances[recipient] = _balances[recipient] + tTransferAmount; emit Transfer(sender, recipient, tTransferAmount); takeTokenFee(sender, allFee); } else { _balances[sender] = _balances[sender] - amount; _balances[recipient] = _balances[recipient] + (amount); emit Transfer(sender, recipient, amount); } } function takeTokenFee(address sender, uint256 amount) private { _balances[address(this)] = _balances[address(this)] + (amount); emit Transfer(sender, address(this), amount); } // to withdarw ETH from contract function withdrawETH(uint256 _amount) external onlyOwner { require(address(this).balance >= _amount, "Invalid Amount"); payable(msg.sender).transfer(_amount); } // to withdraw ERC20 tokens from contract function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner { require(_token.balanceOf(address(this)) >= _amount, "Invalid Amount"); _token.transfer(msg.sender, _amount); } function distributeAndLiquify(address from, address to) private { uint256 contractTokenBalance = balanceOf(address(this)); bool shouldSell = contractTokenBalance >= minTokenToSwap; if ( shouldSell && from != dexPair && distributeAndLiquifyStatus && !(from == address(this) && to == dexPair) // swap 1 time ) { // approve contract _approve(address(this), address(dexRouter), minTokenToSwap); // now is to lock into liquidty pool Utils.swapTokensForEth(address(dexRouter), minTokenToSwap); uint256 ethForMarketing = address(this).balance; // sending Eth to Marketing wallet if (ethForMarketing > 0) payable(marketingWallet).transfer(ethForMarketing); } } } // Library for swapping on Dex library Utils { function swapTokensForEth( address routerAddress, uint256 tokenAmount ) internal { IDexRouter dexRouter = IDexRouter(routerAddress); // generate the Dex pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); // make the swap dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp + 300 ); } function addLiquidity( address routerAddress, address owner, uint256 tokenAmount, uint256 ethAmount ) internal { IDexRouter dexRouter = IDexRouter(routerAddress); // add the liquidity dexRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner, block.timestamp + 300 ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxHolding","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxHoldLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526040518060400160405280602081526020017f48617272794d6167756972654b656e6e6564794b6e75636b6c65733639496e75815250600190816200004a919062000cbe565b506040518060400160405280600681526020017f534f4c414e4100000000000000000000000000000000000000000000000000008152506002908162000091919062000cbe565b506012600360006101000a81548160ff021916908360ff1602179055506d14bddab3e51a57cff87a500000006004556127106064600454620000d4919062000dd4565b620000e0919062000e4e565b600a5560646002600454620000f6919062000dd4565b62000102919062000e4e565b600b5560648060045462000117919062000dd4565b62000123919062000e4e565b600c556064600d55601960125560236013553480156200014257600080fd5b506200015362000a1360201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600454600560006200022462000a1b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073990e34c65bedbd15984a730d09d0e34cad06e94c601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600f60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050e919062000ef0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000598573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005be919062000ef0565b6040518363ffffffff1660e01b8152600401620005dd92919062000f33565b6020604051808303816000875af1158015620005fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000623919062000ef0565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000620006f362000a1b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000620007b262000a1b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960006200087162000a1b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620009a462000a1b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000a05919062000f71565b60405180910390a362000f8e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ac657607f821691505b60208210810362000adc5762000adb62000a7e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b07565b62000b52868362000b07565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b9f62000b9962000b938462000b6a565b62000b74565b62000b6a565b9050919050565b6000819050919050565b62000bbb8362000b7e565b62000bd362000bca8262000ba6565b84845462000b14565b825550505050565b600090565b62000bea62000bdb565b62000bf781848462000bb0565b505050565b5b8181101562000c1f5762000c1360008262000be0565b60018101905062000bfd565b5050565b601f82111562000c6e5762000c388162000ae2565b62000c438462000af7565b8101602085101562000c53578190505b62000c6b62000c628562000af7565b83018262000bfc565b50505b505050565b600082821c905092915050565b600062000c936000198460080262000c73565b1980831691505092915050565b600062000cae838362000c80565b9150826002028217905092915050565b62000cc98262000a44565b67ffffffffffffffff81111562000ce55762000ce462000a4f565b5b62000cf1825462000aad565b62000cfe82828562000c23565b600060209050601f83116001811462000d36576000841562000d21578287015190505b62000d2d858262000ca0565b86555062000d9d565b601f19841662000d468662000ae2565b60005b8281101562000d705784890151825560018201915060208501945060208101905062000d49565b8683101562000d90578489015162000d8c601f89168262000c80565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000de18262000b6a565b915062000dee8362000b6a565b925082820262000dfe8162000b6a565b9150828204841483151762000e185762000e1762000da5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e5b8262000b6a565b915062000e688362000b6a565b92508262000e7b5762000e7a62000e1f565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000eb88262000e8b565b9050919050565b62000eca8162000eab565b811462000ed657600080fd5b50565b60008151905062000eea8162000ebf565b92915050565b60006020828403121562000f095762000f0862000e86565b5b600062000f198482850162000ed9565b91505092915050565b62000f2d8162000eab565b82525050565b600060408201905062000f4a600083018562000f22565b62000f59602083018462000f22565b9392505050565b62000f6b8162000b6a565b82525050565b600060208201905062000f88600083018462000f60565b92915050565b6141068062000f9e6000396000f3fe60806040526004361061028c5760003560e01c80638da5cb5b1161015a578063b0bc2a2d116100c1578063f097ea1a1161007a578063f097ea1a14610a01578063f14210a614610a2a578063f242ab4114610a53578063f2fde38b14610a7e578063f4b3dbc314610aa7578063fe6f1b0514610ae457610293565b8063b0bc2a2d146108df578063bf56b37114610908578063dd62ed3e14610933578063ea5b9e8514610970578063ec44acf214610999578063ed421429146109c457610293565b80639e281a98116101135780639e281a98146107c1578063a2b8a947146107ea578063a457c2d714610813578063a643c1a014610850578063a7c29b4014610879578063a9059cbb146108a257610293565b80638da5cb5b146106b1578063950eb5d5146106dc57806395d89b411461070557806399b102b5146107305780639a36dfa11461076d5780639b6a27501461079857610293565b8063679a3c59116101fe5780637c6a9a9c116101b75780637c6a9a9c146105b3578063844af78e146105de57806384ea21bc146106095780638756aabd14610646578063879dd3c51461066f5780638a8c523c1461069a57610293565b8063679a3c59146104b5578063681aa362146104de57806370a0823114610509578063715018a61461054657806375f0a8741461055d57806379777b4e1461058857610293565b80631884f1e6116102505780631884f1e61461037f57806323b872dd146103aa5780632d129390146103e7578063313ce56714610410578063395093511461043b5780635342acb41461047857610293565b806306fdde03146102985780630758d924146102c3578063095ea7b3146102ee5780630a2d140c1461032b57806318160ddd1461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b0f565b6040516102ba9190613327565b60405180910390f35b3480156102cf57600080fd5b506102d8610ba1565b6040516102e591906133c8565b60405180910390f35b3480156102fa57600080fd5b506103156004803603810190610310919061345c565b610bc7565b60405161032291906134b7565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d91906134fe565b610be5565b005b34801561036057600080fd5b50610369610c97565b604051610376919061353a565b60405180910390f35b34801561038b57600080fd5b50610394610ca1565b6040516103a1919061353a565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190613555565b610ca7565b6040516103de91906134b7565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906135a8565b610d5f565b005b34801561041c57600080fd5b50610425610e4f565b6040516104329190613604565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d919061345c565b610e66565b60405161046f91906134b7565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a919061361f565b610f12565b6040516104ac91906134b7565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d7919061361f565b610f32565b005b3480156104ea57600080fd5b506104f3611011565b604051610500919061353a565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b919061361f565b611017565b60405161053d919061353a565b60405180910390f35b34801561055257600080fd5b5061055b611060565b005b34801561056957600080fd5b506105726111b3565b60405161057f919061365b565b60405180910390f35b34801561059457600080fd5b5061059d6111d9565b6040516105aa91906134b7565b60405180910390f35b3480156105bf57600080fd5b506105c86111ec565b6040516105d5919061353a565b60405180910390f35b3480156105ea57600080fd5b506105f36111f2565b604051610600919061353a565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b919061361f565b6111f8565b60405161063d91906134b7565b60405180910390f35b34801561065257600080fd5b5061066d60048036038101906106689190613676565b611218565b005b34801561067b57600080fd5b506106846112ca565b60405161069191906134b7565b60405180910390f35b3480156106a657600080fd5b506106af6112dd565b005b3480156106bd57600080fd5b506106c661141c565b6040516106d3919061365b565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190613676565b611445565b005b34801561071157600080fd5b5061071a6114e4565b6040516107279190613327565b60405180910390f35b34801561073c57600080fd5b506107576004803603810190610752919061361f565b611576565b60405161076491906134b7565b60405180910390f35b34801561077957600080fd5b50610782611596565b60405161078f919061353a565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190613676565b61159c565b005b3480156107cd57600080fd5b506107e860048036038101906107e391906136e1565b61164e565b005b3480156107f657600080fd5b50610811600480360381019061080c9190613676565b611822565b005b34801561081f57600080fd5b5061083a6004803603810190610835919061345c565b6118c1565b60405161084791906134b7565b60405180910390f35b34801561085c57600080fd5b506108776004803603810190610872919061361f565b61196d565b005b34801561088557600080fd5b506108a0600480360381019061089b91906135a8565b611a46565b005b3480156108ae57600080fd5b506108c960048036038101906108c4919061345c565b611b36565b6040516108d691906134b7565b60405180910390f35b3480156108eb57600080fd5b50610906600480360381019061090191906134fe565b611b54565b005b34801561091457600080fd5b5061091d611c06565b60405161092a919061353a565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613721565b611c0c565b604051610967919061353a565b60405180910390f35b34801561097c57600080fd5b50610997600480360381019061099291906135a8565b611c93565b005b3480156109a557600080fd5b506109ae611d83565b6040516109bb91906134b7565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190613676565b611d96565b6040516109f8919061353a565b60405180910390f35b348015610a0d57600080fd5b50610a286004803603810190610a239190613676565b611dbf565b005b348015610a3657600080fd5b50610a516004803603810190610a4c9190613676565b611e71565b005b348015610a5f57600080fd5b50610a68611f93565b604051610a75919061365b565b60405180910390f35b348015610a8a57600080fd5b50610aa56004803603810190610aa0919061361f565b611fb9565b005b348015610ab357600080fd5b50610ace6004803603810190610ac99190613676565b61217a565b604051610adb919061353a565b60405180910390f35b348015610af057600080fd5b50610af96121a3565b604051610b06919061353a565b60405180910390f35b606060018054610b1e90613790565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4a90613790565b8015610b975780601f10610b6c57610100808354040283529160200191610b97565b820191906000526020600020905b815481529060010190602001808311610b7a57829003601f168201915b5050505050905090565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bdb610bd46121a9565b84846121b1565b6001905092915050565b610bed6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c719061380d565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6000600454905090565b600a5481565b6000610cb484848461237a565b610d5484610cc06121a9565b84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d0a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d4f919061385c565b6121b1565b600190509392505050565b610d676121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb9061380d565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360009054906101000a900460ff16905090565b6000610f08610e736121a9565b848460066000610e816121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f039190613890565b6121b1565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b610f3a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbe9061380d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561100d573d6000803e3d6000fd5b5050565b600c5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110686121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec9061380d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900460ff1681565b60125481565b60135481565b60096020528060005260406000206000915054906101000a900460ff1681565b6112206121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a49061380d565b60405180910390fd5b670de0b6b3a7640000816112c191906138c4565b600b8190555050565b600f60019054906101000a900460ff1681565b6112e56121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611372576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113699061380d565b60405180910390fd5b600f60029054906101000a900460ff16156113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b990613952565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff02191690831515021790555042600e81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61144d6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d19061380d565b60405180910390fd5b8060128190555050565b6060600280546114f390613790565b80601f016020809104026020016040519081016040528092919081815260200182805461151f90613790565b801561156c5780601f106115415761010080835404028352916020019161156c565b820191906000526020600020905b81548152906001019060200180831161154f57829003601f168201915b5050505050905090565b60086020528060005260406000206000915054906101000a900460ff1681565b600b5481565b6115a46121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116289061380d565b60405180910390fd5b670de0b6b3a76400008161164591906138c4565b600c8190555050565b6116566121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da9061380d565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161171d919061365b565b602060405180830381865afa15801561173a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175e9190613987565b101561179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690613a00565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016117da929190613a20565b6020604051808303816000875af11580156117f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181d9190613a5e565b505050565b61182a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ae9061380d565b60405180910390fd5b8060138190555050565b60006119636118ce6121a9565b8484600660006118dc6121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461195e919061385c565b6121b1565b6001905092915050565b6119756121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f99061380d565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a4e6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad29061380d565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b4a611b436121a9565b848461237a565b6001905092915050565b611b5c6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be09061380d565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b600e5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c9b6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f9061380d565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60029054906101000a900460ff1681565b600080600d5460125484611daa91906138c4565b611db49190613aba565b905080915050919050565b611dc76121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4b9061380d565b60405180910390fd5b670de0b6b3a764000081611e6891906138c4565b600a8190555050565b611e796121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efd9061380d565b60405180910390fd5b80471015611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4090613a00565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f8f573d6000803e3d6000fd5b5050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611fc16121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120459061380d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b490613b5d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600d546013548461218e91906138c4565b6121989190613aba565b905080915050919050565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221790613bc9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361228f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228690613c35565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161236d919061353a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e090613ca1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244f90613d0d565b60405180910390fd5b6000811161249b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249290613d79565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561253f5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561268a57600c54811115612589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258090613de5565b60405180910390fd5b600f60029054906101000a900460ff16612689578273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561264957508173ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613e51565b60405180910390fd5b5b5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661273457600b54816126e884611017565b6126f29190613890565b1115612733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272a90613ebd565b60405180910390fd5b5b61273e8383612819565b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127e55750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127fd5750600f60019054906101000a900460ff16155b1561280757600090505b61281384848484612a16565b50505050565b600061282430611017565b90506000600a54821015905080801561288b5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156128a35750600f60009054906101000a900460ff165b801561293457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156129325750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15612a105761296830600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546121b1565b612996600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54612fba565b60004790506000811115612a0e57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a0c573d6000803e3d6000fd5b505b505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612a705750805b15612c2357600080612a8184611d96565b91508184612a8f919061385c565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc919061385c565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6a9190613890565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c0a919061353a565b60405180910390a3612c1c86836131a0565b5050612fb4565b8273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612c7d5750805b15612e31576000612c8d8361217a565b905060008184612c9d919061385c565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cea919061385c565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d789190613890565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e18919061353a565b60405180910390a3612e2a86836131a0565b5050612fb3565b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e7c919061385c565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f0a9190613890565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612faa919061353a565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff811115612fdc57612fdb613edd565b5b60405190808252806020026020018201604052801561300a5781602001602082028036833780820191505090505b509050308160008151811061302257613021613f0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cb9190613f50565b816001815181106130df576130de613f0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c426131489190613890565b6040518663ffffffff1660e01b8152600401613168959493929190614076565b600060405180830381600087803b15801561318257600080fd5b505af1158015613196573d6000803e3d6000fd5b5050505050505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb9190613890565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161328b919061353a565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132d15780820151818401526020810190506132b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006132f982613297565b61330381856132a2565b93506133138185602086016132b3565b61331c816132dd565b840191505092915050565b6000602082019050818103600083015261334181846132ee565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061338e61338961338484613349565b613369565b613349565b9050919050565b60006133a082613373565b9050919050565b60006133b282613395565b9050919050565b6133c2816133a7565b82525050565b60006020820190506133dd60008301846133b9565b92915050565b600080fd5b60006133f382613349565b9050919050565b613403816133e8565b811461340e57600080fd5b50565b600081359050613420816133fa565b92915050565b6000819050919050565b61343981613426565b811461344457600080fd5b50565b60008135905061345681613430565b92915050565b60008060408385031215613473576134726133e3565b5b600061348185828601613411565b925050602061349285828601613447565b9150509250929050565b60008115159050919050565b6134b18161349c565b82525050565b60006020820190506134cc60008301846134a8565b92915050565b6134db8161349c565b81146134e657600080fd5b50565b6000813590506134f8816134d2565b92915050565b600060208284031215613514576135136133e3565b5b6000613522848285016134e9565b91505092915050565b61353481613426565b82525050565b600060208201905061354f600083018461352b565b92915050565b60008060006060848603121561356e5761356d6133e3565b5b600061357c86828701613411565b935050602061358d86828701613411565b925050604061359e86828701613447565b9150509250925092565b600080604083850312156135bf576135be6133e3565b5b60006135cd85828601613411565b92505060206135de858286016134e9565b9150509250929050565b600060ff82169050919050565b6135fe816135e8565b82525050565b600060208201905061361960008301846135f5565b92915050565b600060208284031215613635576136346133e3565b5b600061364384828501613411565b91505092915050565b613655816133e8565b82525050565b6000602082019050613670600083018461364c565b92915050565b60006020828403121561368c5761368b6133e3565b5b600061369a84828501613447565b91505092915050565b60006136ae826133e8565b9050919050565b6136be816136a3565b81146136c957600080fd5b50565b6000813590506136db816136b5565b92915050565b600080604083850312156136f8576136f76133e3565b5b6000613706858286016136cc565b925050602061371785828601613447565b9150509250929050565b60008060408385031215613738576137376133e3565b5b600061374685828601613411565b925050602061375785828601613411565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137a857607f821691505b6020821081036137bb576137ba613761565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137f76020836132a2565b9150613802826137c1565b602082019050919050565b60006020820190508181036000830152613826816137ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061386782613426565b915061387283613426565b925082820390508181111561388a5761388961382d565b5b92915050565b600061389b82613426565b91506138a683613426565b92508282019050808211156138be576138bd61382d565b5b92915050565b60006138cf82613426565b91506138da83613426565b92508282026138e881613426565b915082820484148315176138ff576138fe61382d565b5b5092915050565b7f3a20616c726561647920656e61626c6564000000000000000000000000000000600082015250565b600061393c6011836132a2565b915061394782613906565b602082019050919050565b6000602082019050818103600083015261396b8161392f565b9050919050565b60008151905061398181613430565b92915050565b60006020828403121561399d5761399c6133e3565b5b60006139ab84828501613972565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b60006139ea600e836132a2565b91506139f5826139b4565b602082019050919050565b60006020820190508181036000830152613a19816139dd565b9050919050565b6000604082019050613a35600083018561364c565b613a42602083018461352b565b9392505050565b600081519050613a58816134d2565b92915050565b600060208284031215613a7457613a736133e3565b5b6000613a8284828501613a49565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ac582613426565b9150613ad083613426565b925082613ae057613adf613a8b565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b476026836132a2565b9150613b5282613aeb565b604082019050919050565b60006020820190508181036000830152613b7681613b3a565b9050919050565b7f20617070726f76652066726f6d20746865207a65726f20616464726573730000600082015250565b6000613bb3601e836132a2565b9150613bbe82613b7d565b602082019050919050565b60006020820190508181036000830152613be281613ba6565b9050919050565b7f617070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b6000613c1f601b836132a2565b9150613c2a82613be9565b602082019050919050565b60006020820190508181036000830152613c4e81613c12565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613c8b601e836132a2565b9150613c9682613c55565b602082019050919050565b60006020820190508181036000830152613cba81613c7e565b9050919050565b7f7472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000613cf7601c836132a2565b9150613d0282613cc1565b602082019050919050565b60006020820190508181036000830152613d2681613cea565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b6000613d636020836132a2565b9150613d6e82613d2d565b602082019050919050565b60006020820190508181036000830152613d9281613d56565b9050919050565b7f206d61782074786e206c696d6974206578636565647300000000000000000000600082015250565b6000613dcf6016836132a2565b9150613dda82613d99565b602082019050919050565b60006020820190508181036000830152613dfe81613dc2565b9050919050565b7f3a2074726164696e672069732064697361626c65000000000000000000000000600082015250565b6000613e3b6014836132a2565b9150613e4682613e05565b602082019050919050565b60006020820190508181036000830152613e6a81613e2e565b9050919050565b7f3a206d617820686f6c64206c696d697420657863656564730000000000000000600082015250565b6000613ea76018836132a2565b9150613eb282613e71565b602082019050919050565b60006020820190508181036000830152613ed681613e9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f4a816133fa565b92915050565b600060208284031215613f6657613f656133e3565b5b6000613f7484828501613f3b565b91505092915050565b6000819050919050565b6000613fa2613f9d613f9884613f7d565b613369565b613426565b9050919050565b613fb281613f87565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fed816133e8565b82525050565b6000613fff8383613fe4565b60208301905092915050565b6000602082019050919050565b600061402382613fb8565b61402d8185613fc3565b935061403883613fd4565b8060005b838110156140695781516140508882613ff3565b975061405b8361400b565b92505060018101905061403c565b5085935050505092915050565b600060a08201905061408b600083018861352b565b6140986020830187613fa9565b81810360408301526140aa8186614018565b90506140b9606083018561364c565b6140c6608083018461352b565b969550505050505056fea264697066735822122023bd895003ab955ad9aee7f594191d709ca33ce6cef3ad81217aa8c0c442d77364736f6c63430008120033
Deployed Bytecode
0x60806040526004361061028c5760003560e01c80638da5cb5b1161015a578063b0bc2a2d116100c1578063f097ea1a1161007a578063f097ea1a14610a01578063f14210a614610a2a578063f242ab4114610a53578063f2fde38b14610a7e578063f4b3dbc314610aa7578063fe6f1b0514610ae457610293565b8063b0bc2a2d146108df578063bf56b37114610908578063dd62ed3e14610933578063ea5b9e8514610970578063ec44acf214610999578063ed421429146109c457610293565b80639e281a98116101135780639e281a98146107c1578063a2b8a947146107ea578063a457c2d714610813578063a643c1a014610850578063a7c29b4014610879578063a9059cbb146108a257610293565b80638da5cb5b146106b1578063950eb5d5146106dc57806395d89b411461070557806399b102b5146107305780639a36dfa11461076d5780639b6a27501461079857610293565b8063679a3c59116101fe5780637c6a9a9c116101b75780637c6a9a9c146105b3578063844af78e146105de57806384ea21bc146106095780638756aabd14610646578063879dd3c51461066f5780638a8c523c1461069a57610293565b8063679a3c59146104b5578063681aa362146104de57806370a0823114610509578063715018a61461054657806375f0a8741461055d57806379777b4e1461058857610293565b80631884f1e6116102505780631884f1e61461037f57806323b872dd146103aa5780632d129390146103e7578063313ce56714610410578063395093511461043b5780635342acb41461047857610293565b806306fdde03146102985780630758d924146102c3578063095ea7b3146102ee5780630a2d140c1461032b57806318160ddd1461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b0f565b6040516102ba9190613327565b60405180910390f35b3480156102cf57600080fd5b506102d8610ba1565b6040516102e591906133c8565b60405180910390f35b3480156102fa57600080fd5b506103156004803603810190610310919061345c565b610bc7565b60405161032291906134b7565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d91906134fe565b610be5565b005b34801561036057600080fd5b50610369610c97565b604051610376919061353a565b60405180910390f35b34801561038b57600080fd5b50610394610ca1565b6040516103a1919061353a565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190613555565b610ca7565b6040516103de91906134b7565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906135a8565b610d5f565b005b34801561041c57600080fd5b50610425610e4f565b6040516104329190613604565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d919061345c565b610e66565b60405161046f91906134b7565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a919061361f565b610f12565b6040516104ac91906134b7565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d7919061361f565b610f32565b005b3480156104ea57600080fd5b506104f3611011565b604051610500919061353a565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b919061361f565b611017565b60405161053d919061353a565b60405180910390f35b34801561055257600080fd5b5061055b611060565b005b34801561056957600080fd5b506105726111b3565b60405161057f919061365b565b60405180910390f35b34801561059457600080fd5b5061059d6111d9565b6040516105aa91906134b7565b60405180910390f35b3480156105bf57600080fd5b506105c86111ec565b6040516105d5919061353a565b60405180910390f35b3480156105ea57600080fd5b506105f36111f2565b604051610600919061353a565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b919061361f565b6111f8565b60405161063d91906134b7565b60405180910390f35b34801561065257600080fd5b5061066d60048036038101906106689190613676565b611218565b005b34801561067b57600080fd5b506106846112ca565b60405161069191906134b7565b60405180910390f35b3480156106a657600080fd5b506106af6112dd565b005b3480156106bd57600080fd5b506106c661141c565b6040516106d3919061365b565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190613676565b611445565b005b34801561071157600080fd5b5061071a6114e4565b6040516107279190613327565b60405180910390f35b34801561073c57600080fd5b506107576004803603810190610752919061361f565b611576565b60405161076491906134b7565b60405180910390f35b34801561077957600080fd5b50610782611596565b60405161078f919061353a565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190613676565b61159c565b005b3480156107cd57600080fd5b506107e860048036038101906107e391906136e1565b61164e565b005b3480156107f657600080fd5b50610811600480360381019061080c9190613676565b611822565b005b34801561081f57600080fd5b5061083a6004803603810190610835919061345c565b6118c1565b60405161084791906134b7565b60405180910390f35b34801561085c57600080fd5b506108776004803603810190610872919061361f565b61196d565b005b34801561088557600080fd5b506108a0600480360381019061089b91906135a8565b611a46565b005b3480156108ae57600080fd5b506108c960048036038101906108c4919061345c565b611b36565b6040516108d691906134b7565b60405180910390f35b3480156108eb57600080fd5b50610906600480360381019061090191906134fe565b611b54565b005b34801561091457600080fd5b5061091d611c06565b60405161092a919061353a565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613721565b611c0c565b604051610967919061353a565b60405180910390f35b34801561097c57600080fd5b50610997600480360381019061099291906135a8565b611c93565b005b3480156109a557600080fd5b506109ae611d83565b6040516109bb91906134b7565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190613676565b611d96565b6040516109f8919061353a565b60405180910390f35b348015610a0d57600080fd5b50610a286004803603810190610a239190613676565b611dbf565b005b348015610a3657600080fd5b50610a516004803603810190610a4c9190613676565b611e71565b005b348015610a5f57600080fd5b50610a68611f93565b604051610a75919061365b565b60405180910390f35b348015610a8a57600080fd5b50610aa56004803603810190610aa0919061361f565b611fb9565b005b348015610ab357600080fd5b50610ace6004803603810190610ac99190613676565b61217a565b604051610adb919061353a565b60405180910390f35b348015610af057600080fd5b50610af96121a3565b604051610b06919061353a565b60405180910390f35b606060018054610b1e90613790565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4a90613790565b8015610b975780601f10610b6c57610100808354040283529160200191610b97565b820191906000526020600020905b815481529060010190602001808311610b7a57829003601f168201915b5050505050905090565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bdb610bd46121a9565b84846121b1565b6001905092915050565b610bed6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c719061380d565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6000600454905090565b600a5481565b6000610cb484848461237a565b610d5484610cc06121a9565b84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d0a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d4f919061385c565b6121b1565b600190509392505050565b610d676121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb9061380d565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360009054906101000a900460ff16905090565b6000610f08610e736121a9565b848460066000610e816121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f039190613890565b6121b1565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b610f3a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbe9061380d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561100d573d6000803e3d6000fd5b5050565b600c5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110686121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec9061380d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900460ff1681565b60125481565b60135481565b60096020528060005260406000206000915054906101000a900460ff1681565b6112206121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a49061380d565b60405180910390fd5b670de0b6b3a7640000816112c191906138c4565b600b8190555050565b600f60019054906101000a900460ff1681565b6112e56121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611372576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113699061380d565b60405180910390fd5b600f60029054906101000a900460ff16156113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b990613952565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff02191690831515021790555042600e81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61144d6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d19061380d565b60405180910390fd5b8060128190555050565b6060600280546114f390613790565b80601f016020809104026020016040519081016040528092919081815260200182805461151f90613790565b801561156c5780601f106115415761010080835404028352916020019161156c565b820191906000526020600020905b81548152906001019060200180831161154f57829003601f168201915b5050505050905090565b60086020528060005260406000206000915054906101000a900460ff1681565b600b5481565b6115a46121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116289061380d565b60405180910390fd5b670de0b6b3a76400008161164591906138c4565b600c8190555050565b6116566121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da9061380d565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161171d919061365b565b602060405180830381865afa15801561173a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175e9190613987565b101561179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690613a00565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016117da929190613a20565b6020604051808303816000875af11580156117f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181d9190613a5e565b505050565b61182a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ae9061380d565b60405180910390fd5b8060138190555050565b60006119636118ce6121a9565b8484600660006118dc6121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461195e919061385c565b6121b1565b6001905092915050565b6119756121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f99061380d565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a4e6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad29061380d565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b4a611b436121a9565b848461237a565b6001905092915050565b611b5c6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be09061380d565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b600e5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c9b6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f9061380d565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60029054906101000a900460ff1681565b600080600d5460125484611daa91906138c4565b611db49190613aba565b905080915050919050565b611dc76121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4b9061380d565b60405180910390fd5b670de0b6b3a764000081611e6891906138c4565b600a8190555050565b611e796121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efd9061380d565b60405180910390fd5b80471015611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4090613a00565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f8f573d6000803e3d6000fd5b5050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611fc16121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120459061380d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b490613b5d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600d546013548461218e91906138c4565b6121989190613aba565b905080915050919050565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221790613bc9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361228f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228690613c35565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161236d919061353a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e090613ca1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244f90613d0d565b60405180910390fd5b6000811161249b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249290613d79565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561253f5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561268a57600c54811115612589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258090613de5565b60405180910390fd5b600f60029054906101000a900460ff16612689578273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561264957508173ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613e51565b60405180910390fd5b5b5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661273457600b54816126e884611017565b6126f29190613890565b1115612733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272a90613ebd565b60405180910390fd5b5b61273e8383612819565b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127e55750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127fd5750600f60019054906101000a900460ff16155b1561280757600090505b61281384848484612a16565b50505050565b600061282430611017565b90506000600a54821015905080801561288b5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156128a35750600f60009054906101000a900460ff165b801561293457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156129325750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15612a105761296830600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546121b1565b612996600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54612fba565b60004790506000811115612a0e57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a0c573d6000803e3d6000fd5b505b505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612a705750805b15612c2357600080612a8184611d96565b91508184612a8f919061385c565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc919061385c565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6a9190613890565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c0a919061353a565b60405180910390a3612c1c86836131a0565b5050612fb4565b8273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612c7d5750805b15612e31576000612c8d8361217a565b905060008184612c9d919061385c565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cea919061385c565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d789190613890565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e18919061353a565b60405180910390a3612e2a86836131a0565b5050612fb3565b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e7c919061385c565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f0a9190613890565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612faa919061353a565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff811115612fdc57612fdb613edd565b5b60405190808252806020026020018201604052801561300a5781602001602082028036833780820191505090505b509050308160008151811061302257613021613f0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cb9190613f50565b816001815181106130df576130de613f0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c426131489190613890565b6040518663ffffffff1660e01b8152600401613168959493929190614076565b600060405180830381600087803b15801561318257600080fd5b505af1158015613196573d6000803e3d6000fd5b5050505050505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb9190613890565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161328b919061353a565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132d15780820151818401526020810190506132b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006132f982613297565b61330381856132a2565b93506133138185602086016132b3565b61331c816132dd565b840191505092915050565b6000602082019050818103600083015261334181846132ee565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061338e61338961338484613349565b613369565b613349565b9050919050565b60006133a082613373565b9050919050565b60006133b282613395565b9050919050565b6133c2816133a7565b82525050565b60006020820190506133dd60008301846133b9565b92915050565b600080fd5b60006133f382613349565b9050919050565b613403816133e8565b811461340e57600080fd5b50565b600081359050613420816133fa565b92915050565b6000819050919050565b61343981613426565b811461344457600080fd5b50565b60008135905061345681613430565b92915050565b60008060408385031215613473576134726133e3565b5b600061348185828601613411565b925050602061349285828601613447565b9150509250929050565b60008115159050919050565b6134b18161349c565b82525050565b60006020820190506134cc60008301846134a8565b92915050565b6134db8161349c565b81146134e657600080fd5b50565b6000813590506134f8816134d2565b92915050565b600060208284031215613514576135136133e3565b5b6000613522848285016134e9565b91505092915050565b61353481613426565b82525050565b600060208201905061354f600083018461352b565b92915050565b60008060006060848603121561356e5761356d6133e3565b5b600061357c86828701613411565b935050602061358d86828701613411565b925050604061359e86828701613447565b9150509250925092565b600080604083850312156135bf576135be6133e3565b5b60006135cd85828601613411565b92505060206135de858286016134e9565b9150509250929050565b600060ff82169050919050565b6135fe816135e8565b82525050565b600060208201905061361960008301846135f5565b92915050565b600060208284031215613635576136346133e3565b5b600061364384828501613411565b91505092915050565b613655816133e8565b82525050565b6000602082019050613670600083018461364c565b92915050565b60006020828403121561368c5761368b6133e3565b5b600061369a84828501613447565b91505092915050565b60006136ae826133e8565b9050919050565b6136be816136a3565b81146136c957600080fd5b50565b6000813590506136db816136b5565b92915050565b600080604083850312156136f8576136f76133e3565b5b6000613706858286016136cc565b925050602061371785828601613447565b9150509250929050565b60008060408385031215613738576137376133e3565b5b600061374685828601613411565b925050602061375785828601613411565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137a857607f821691505b6020821081036137bb576137ba613761565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137f76020836132a2565b9150613802826137c1565b602082019050919050565b60006020820190508181036000830152613826816137ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061386782613426565b915061387283613426565b925082820390508181111561388a5761388961382d565b5b92915050565b600061389b82613426565b91506138a683613426565b92508282019050808211156138be576138bd61382d565b5b92915050565b60006138cf82613426565b91506138da83613426565b92508282026138e881613426565b915082820484148315176138ff576138fe61382d565b5b5092915050565b7f3a20616c726561647920656e61626c6564000000000000000000000000000000600082015250565b600061393c6011836132a2565b915061394782613906565b602082019050919050565b6000602082019050818103600083015261396b8161392f565b9050919050565b60008151905061398181613430565b92915050565b60006020828403121561399d5761399c6133e3565b5b60006139ab84828501613972565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b60006139ea600e836132a2565b91506139f5826139b4565b602082019050919050565b60006020820190508181036000830152613a19816139dd565b9050919050565b6000604082019050613a35600083018561364c565b613a42602083018461352b565b9392505050565b600081519050613a58816134d2565b92915050565b600060208284031215613a7457613a736133e3565b5b6000613a8284828501613a49565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ac582613426565b9150613ad083613426565b925082613ae057613adf613a8b565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b476026836132a2565b9150613b5282613aeb565b604082019050919050565b60006020820190508181036000830152613b7681613b3a565b9050919050565b7f20617070726f76652066726f6d20746865207a65726f20616464726573730000600082015250565b6000613bb3601e836132a2565b9150613bbe82613b7d565b602082019050919050565b60006020820190508181036000830152613be281613ba6565b9050919050565b7f617070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b6000613c1f601b836132a2565b9150613c2a82613be9565b602082019050919050565b60006020820190508181036000830152613c4e81613c12565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613c8b601e836132a2565b9150613c9682613c55565b602082019050919050565b60006020820190508181036000830152613cba81613c7e565b9050919050565b7f7472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000613cf7601c836132a2565b9150613d0282613cc1565b602082019050919050565b60006020820190508181036000830152613d2681613cea565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b6000613d636020836132a2565b9150613d6e82613d2d565b602082019050919050565b60006020820190508181036000830152613d9281613d56565b9050919050565b7f206d61782074786e206c696d6974206578636565647300000000000000000000600082015250565b6000613dcf6016836132a2565b9150613dda82613d99565b602082019050919050565b60006020820190508181036000830152613dfe81613dc2565b9050919050565b7f3a2074726164696e672069732064697361626c65000000000000000000000000600082015250565b6000613e3b6014836132a2565b9150613e4682613e05565b602082019050919050565b60006020820190508181036000830152613e6a81613e2e565b9050919050565b7f3a206d617820686f6c64206c696d697420657863656564730000000000000000600082015250565b6000613ea76018836132a2565b9150613eb282613e71565b602082019050919050565b60006020820190508181036000830152613ed681613e9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f4a816133fa565b92915050565b600060208284031215613f6657613f656133e3565b5b6000613f7484828501613f3b565b91505092915050565b6000819050919050565b6000613fa2613f9d613f9884613f7d565b613369565b613426565b9050919050565b613fb281613f87565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fed816133e8565b82525050565b6000613fff8383613fe4565b60208301905092915050565b6000602082019050919050565b600061402382613fb8565b61402d8185613fc3565b935061403883613fd4565b8060005b838110156140695781516140508882613ff3565b975061405b8361400b565b92505060018101905061403c565b5085935050505092915050565b600060a08201905061408b600083018861352b565b6140986020830187613fa9565b81810360408301526140aa8186614018565b90506140b9606083018561364c565b6140c6608083018461352b565b969550505050505056fea264697066735822122023bd895003ab955ad9aee7f594191d709ca33ce6cef3ad81217aa8c0c442d77364736f6c63430008120033
Deployed Bytecode Sourcemap
3234:11903:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6244:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4438:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7132:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9430:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6521:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3824:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7326:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8632:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6430:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7684:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3644:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10038:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4044:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6629:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2781:157;;;;;;;;;;;;;:::i;:::-;;4553:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4221:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4728:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4777:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3759:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8934:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4317:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9791:239;;;;;;;;;;;;;:::i;:::-;;2567:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9166:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6335:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3700:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3941:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9051:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14047:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9297:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7984:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9660:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8459:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6756:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9553:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4187:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6956:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8292:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4367:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10175:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8813:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13809:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4496:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2946:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10359:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4145:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6244:83;6281:13;6314:5;6307:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6244:83;:::o;4438:27::-;;;;;;;;;;;;;:::o;7132:186::-;7232:4;7249:39;7258:12;:10;:12::i;:::-;7272:7;7281:6;7249:8;:39::i;:::-;7306:4;7299:11;;7132:186;;;;:::o;9430:115::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9531:6:::1;9502:26;;:35;;;;;;;;;;;;;;;;;;9430:115:::0;:::o;6521:100::-;6574:7;6601:12;;6594:19;;6521:100;:::o;3824:62::-;;;;:::o;7326:350::-;7458:4;7475:36;7485:6;7493:9;7504:6;7475:9;:36::i;:::-;7522:124;7545:6;7566:12;:10;:12::i;:::-;7629:6;7593:11;:19;7605:6;7593:19;;;;;;;;;;;;;;;:33;7613:12;:10;:12::i;:::-;7593:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;7522:8;:124::i;:::-;7664:4;7657:11;;7326:350;;;;;:::o;8632:173::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8792:5:::1;8756:24;:33;8781:7;8756:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;8632:173:::0;;:::o;6430:83::-;6471:5;6496:9;;;;;;;;;;;6489:16;;6430:83;:::o;7684:292::-;7797:4;7814:132;7837:12;:10;:12::i;:::-;7864:7;7924:10;7886:11;:25;7898:12;:10;:12::i;:::-;7886:25;;;;;;;;;;;;;;;:34;7912:7;7886:34;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;7814:8;:132::i;:::-;7964:4;7957:11;;7684:292;;;;:::o;3644:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;10038:129::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10117:9:::1;10109:27;;:50;10137:21;10109:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10038:129:::0;:::o;4044:57::-;;;;:::o;6629:119::-;6695:7;6722:9;:18;6732:7;6722:18;;;;;;;;;;;;;;;;6715:25;;6629:119;;;:::o;2781:157::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2888:1:::1;2851:40;;2872:6;::::0;::::1;;;;;;;;2851:40;;;;;;;;;;;;2927:1;2902:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;2781:157::o:0;4553:30::-;;;;;;;;;;;;;:::o;4221:38::-;;;;;;;;;;;;;:::o;4728:40::-;;;;:::o;4777:41::-;;;;:::o;3759:56::-;;;;;;;;;;;;;;;;;;;;;;:::o;8934:109::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9031:4:::1;9021:7;:14;;;;:::i;:::-;9006:12;:29;;;;8934:109:::0;:::o;4317:22::-;;;;;;;;;;;;;:::o;9791:239::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9855:7:::1;;;;;;;;;;;9854:8;9846:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9907:4;9897:7;;:14;;;;;;;;;;;;;;;;;;9935:4;9922:10;;:17;;;;;;;;;;;;;;;;;;9979:4;9950:26;;:33;;;;;;;;;;;;;;;;;;10007:15;9994:10;:28;;;;9791:239::o:0;2567:79::-;2605:7;2632:6;;;;;;;;;;;2625:13;;2567:79;:::o;9166:123::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9268:13:::1;9245:20;:36;;;;9166:123:::0;:::o;6335:87::-;6374:13;6407:7;6400:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6335:87;:::o;3700:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;3941:56::-;;;;:::o;9051:107::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9146:4:::1;9136:7;:14;;;;:::i;:::-;9122:11;:28;;;;9051:107:::0;:::o;14047:209::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14175:7:::1;14140:6;:16;;;14165:4;14140:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;14132:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;14212:6;:15;;;14228:10;14240:7;14212:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14047:209:::0;;:::o;9297:125::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9401:13:::1;9377:21;:37;;;;9297:125:::0;:::o;7984:300::-;8102:4;8119:135;8142:12;:10;:12::i;:::-;8169:7;8228:15;8191:11;:25;8203:12;:10;:12::i;:::-;8191:25;;;;;;;;;;;;;;;:34;8217:7;8191:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;8119:8;:135::i;:::-;8272:4;8265:11;;7984:300;;;;:::o;9660:123::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9759:16:::1;9741:15;;:34;;;;;;;;;;;;;;;;;;9660:123:::0;:::o;8459:165::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8611:5:::1;8579:20;:29;8600:7;8579:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;8459:165:::0;;:::o;6756:192::-;6859:4;6876:42;6886:12;:10;:12::i;:::-;6900:9;6911:6;6876:9;:42::i;:::-;6936:4;6929:11;;6756:192;;;;:::o;9553:99::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9638:6:::1;9625:10;;:19;;;;;;;;;;;;;;;;;;9553:99:::0;:::o;4187:25::-;;;;:::o;6956:168::-;7062:7;7089:11;:18;7101:5;7089:18;;;;;;;;;;;;;;;:27;7108:7;7089:27;;;;;;;;;;;;;;;;7082:34;;6956:168;;;;:::o;8292:159::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8438:5:::1;8409:17;:26;8427:7;8409:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;8292:159:::0;;:::o;4367:19::-;;;;;;;;;;;;;:::o;10175:176::-;10238:7;10258:11;10307:14;;10282:20;;10273:6;:29;;;;:::i;:::-;10272:50;;;;:::i;:::-;10258:64;;10340:3;10333:10;;;10175:176;;;:::o;8813:113::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8914:4:::1;8904:7;:14;;;;:::i;:::-;8887;:31;;;;8813:113:::0;:::o;13809:183::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13910:7:::1;13885:21;:32;;13877:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13955:10;13947:28;;:37;13976:7;13947:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13809:183:::0;:::o;4496:22::-;;;;;;;;;;;;;:::o;2946:281::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3069:1:::1;3049:22;;:8;:22;;::::0;3027:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3182:8;3153:38;;3174:6;::::0;::::1;;;;;;;;3153:38;;;;;;;;;;;;3211:8;3202:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2946:281:::0;:::o;10359:178::-;10423:7;10443:11;10493:14;;10467:21;;10458:6;:30;;;;:::i;:::-;10457:51;;;;:::i;:::-;10443:65;;10526:3;10519:10;;;10359:178;;;:::o;4145:35::-;;;;:::o;1903:115::-;1956:15;1999:10;1984:26;;1903:115;:::o;10545:324::-;10655:1;10638:19;;:5;:19;;;10630:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10730:1;10711:21;;:7;:21;;;10703:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;10807:6;10777:11;:18;10789:5;10777:18;;;;;;;;;;;;;;;:27;10796:7;10777:27;;;;;;;;;;;;;;;:36;;;;10845:7;10829:32;;10838:5;10829:32;;;10854:6;10829:32;;;;;;:::i;:::-;;;;;;;;10545:324;;;:::o;10877:1364::-;10981:1;10965:18;;:4;:18;;;10957:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;11051:1;11037:16;;:2;:16;;;11029:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11114:1;11105:6;:10;11097:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;11168:20;:26;11189:4;11168:26;;;;;;;;;;;;;;;;;;;;;;;;;11167:27;:56;;;;;11199:20;:24;11220:2;11199:24;;;;;;;;;;;;;;;;;;;;;;;;;11198:25;11167:56;11163:380;;;11258:11;;11248:6;:21;;11240:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11362:7;;;;;;;;;;;11357:175;;11431:4;11420:15;;:7;;;;;;;;;;;:15;;;;:32;;;;;11450:2;11439:13;;:7;;;;;;;;;;;:13;;;;11420:32;11390:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;11357:175;11163:380;11560:24;:28;11585:2;11560:28;;;;;;;;;;;;;;;;;;;;;;;;;11555:188;;11659:12;;11648:6;11632:13;11642:2;11632:9;:13::i;:::-;:22;;;;:::i;:::-;11631:40;;11605:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;11555:188;11784:30;11805:4;11811:2;11784:20;:30::i;:::-;11888:12;11903:4;11888:19;;12007:17;:23;12025:4;12007:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;12034:17;:21;12052:2;12034:21;;;;;;;;;;;;;;;;;;;;;;;;;12007:48;:63;;;;12060:10;;;;;;;;;;;12059:11;12007:63;12003:111;;;12097:5;12087:15;;12003:111;12192:41;12207:4;12213:2;12217:6;12225:7;12192:14;:41::i;:::-;10946:1295;10877:1364;;;:::o;14264:870::-;14339:28;14370:24;14388:4;14370:9;:24::i;:::-;14339:55;;14407:15;14449:14;;14425:20;:38;;14407:56;;14494:10;:42;;;;;14529:7;;;;;;;;;;;14521:15;;:4;:15;;;;14494:42;:85;;;;;14553:26;;;;;;;;;;;14494:85;:143;;;;;14614:4;14598:21;;:4;:21;;;:38;;;;;14629:7;;;;;;;;;;;14623:13;;:2;:13;;;14598:38;14596:41;14494:143;14476:651;;;14712:59;14729:4;14744:9;;;;;;;;;;;14756:14;;14712:8;:59::i;:::-;14838:58;14869:9;;;;;;;;;;;14881:14;;14838:22;:58::i;:::-;14911:23;14937:21;14911:47;;15045:1;15027:15;:19;15023:92;;;15073:15;;;;;;;;;;;15065:33;;:50;15099:15;15065:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15023:92;14664:463;14476:651;14328:806;;14264:870;;:::o;12323:1232::-;12489:6;12478:17;;:7;;;;;;;;;;;:17;;;:28;;;;;12499:7;12478:28;12474:1074;;;12523:14;12552:23;12599:24;12616:6;12599:16;:24::i;:::-;12590:33;;12665:6;12656;:15;;;;:::i;:::-;12638:33;;12728:6;12708:9;:17;12718:6;12708:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;12688:9;:17;12698:6;12688:17;;;;;;;;;;;;;;;:46;;;;12795:15;12772:9;:20;12782:9;12772:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;12749:9;:20;12759:9;12749:20;;;;;;;;;;;;;;;:61;;;;12847:9;12830:44;;12839:6;12830:44;;;12858:15;12830:44;;;;;;:::i;:::-;;;;;;;;12891:28;12904:6;12912;12891:12;:28::i;:::-;12508:423;;12474:1074;;;12952:9;12941:20;;:7;;;;;;;;;;;:20;;;:31;;;;;12965:7;12941:31;12937:611;;;12989:14;13006:25;13024:6;13006:17;:25::i;:::-;12989:42;;13046:23;13081:6;13072;:15;;;;:::i;:::-;13046:41;;13142:6;13122:9;:17;13132:6;13122:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;13102:9;:17;13112:6;13102:17;;;;;;;;;;;;;;;:46;;;;13209:15;13186:9;:20;13196:9;13186:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;13163:9;:20;13173:9;13163:20;;;;;;;;;;;;;;;:61;;;;13261:9;13244:44;;13253:6;13244:44;;;13272:15;13244:44;;;;;;:::i;:::-;;;;;;;;13305:28;13318:6;13326;13305:12;:28::i;:::-;12974:371;;12937:611;;;13406:6;13386:9;:17;13396:6;13386:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;13366:9;:17;13376:6;13366:17;;;;;;;;;;;;;;;:46;;;;13474:6;13450:9;:20;13460:9;13450:20;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;13427:9;:20;13437:9;13427:20;;;;;;;;;;;;;;;:54;;;;13518:9;13501:35;;13510:6;13501:35;;;13529:6;13501:35;;;;;;:::i;:::-;;;;;;;;12937:611;12474:1074;12323:1232;;;;:::o;15194:614::-;15309:20;15343:13;15309:48;;15426:21;15464:1;15450:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15426:40;;15495:4;15477;15482:1;15477:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15521:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15511:4;15516:1;15511:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;15576:9;:60;;;15651:11;15677:1;15721:4;15748;15786:3;15768:15;:21;;;;:::i;:::-;15576:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15298:510;;15194:614;;:::o;13563:200::-;13691:6;13663:9;:24;13681:4;13663:24;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;13636:9;:24;13654:4;13636:24;;;;;;;;;;;;;;;:62;;;;13741:4;13716:39;;13725:6;13716:39;;;13748:6;13716:39;;;;;;:::i;:::-;;;;;;;;13563:200;;:::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;1349:126::-;1386:7;1426:42;1419:5;1415:54;1404:65;;1349:126;;;:::o;1481:60::-;1509:3;1530:5;1523:12;;1481:60;;;:::o;1547:142::-;1597:9;1630:53;1648:34;1657:24;1675:5;1657:24;:::i;:::-;1648:34;:::i;:::-;1630:53;:::i;:::-;1617:66;;1547:142;;;:::o;1695:126::-;1745:9;1778:37;1809:5;1778:37;:::i;:::-;1765:50;;1695:126;;;:::o;1827:144::-;1895:9;1928:37;1959:5;1928:37;:::i;:::-;1915:50;;1827:144;;;:::o;1977:167::-;2082:55;2131:5;2082:55;:::i;:::-;2077:3;2070:68;1977:167;;:::o;2150:258::-;2261:4;2299:2;2288:9;2284:18;2276:26;;2312:89;2398:1;2387:9;2383:17;2374:6;2312:89;:::i;:::-;2150:258;;;;:::o;2495:117::-;2604:1;2601;2594:12;2741:96;2778:7;2807:24;2825:5;2807:24;:::i;:::-;2796:35;;2741:96;;;:::o;2843:122::-;2916:24;2934:5;2916:24;:::i;:::-;2909:5;2906:35;2896:63;;2955:1;2952;2945:12;2896:63;2843:122;:::o;2971:139::-;3017:5;3055:6;3042:20;3033:29;;3071:33;3098:5;3071:33;:::i;:::-;2971:139;;;;:::o;3116:77::-;3153:7;3182:5;3171:16;;3116:77;;;:::o;3199:122::-;3272:24;3290:5;3272:24;:::i;:::-;3265:5;3262:35;3252:63;;3311:1;3308;3301:12;3252:63;3199:122;:::o;3327:139::-;3373:5;3411:6;3398:20;3389:29;;3427:33;3454:5;3427:33;:::i;:::-;3327:139;;;;:::o;3472:474::-;3540:6;3548;3597:2;3585:9;3576:7;3572:23;3568:32;3565:119;;;3603:79;;:::i;:::-;3565:119;3723:1;3748:53;3793:7;3784:6;3773:9;3769:22;3748:53;:::i;:::-;3738:63;;3694:117;3850:2;3876:53;3921:7;3912:6;3901:9;3897:22;3876:53;:::i;:::-;3866:63;;3821:118;3472:474;;;;;:::o;3952:90::-;3986:7;4029:5;4022:13;4015:21;4004:32;;3952:90;;;:::o;4048:109::-;4129:21;4144:5;4129:21;:::i;:::-;4124:3;4117:34;4048:109;;:::o;4163:210::-;4250:4;4288:2;4277:9;4273:18;4265:26;;4301:65;4363:1;4352:9;4348:17;4339:6;4301:65;:::i;:::-;4163:210;;;;:::o;4379:116::-;4449:21;4464:5;4449:21;:::i;:::-;4442:5;4439:32;4429:60;;4485:1;4482;4475:12;4429:60;4379:116;:::o;4501:133::-;4544:5;4582:6;4569:20;4560:29;;4598:30;4622:5;4598:30;:::i;:::-;4501:133;;;;:::o;4640:323::-;4696:6;4745:2;4733:9;4724:7;4720:23;4716:32;4713:119;;;4751:79;;:::i;:::-;4713:119;4871:1;4896:50;4938:7;4929:6;4918:9;4914:22;4896:50;:::i;:::-;4886:60;;4842:114;4640:323;;;;:::o;4969:118::-;5056:24;5074:5;5056:24;:::i;:::-;5051:3;5044:37;4969:118;;:::o;5093:222::-;5186:4;5224:2;5213:9;5209:18;5201:26;;5237:71;5305:1;5294:9;5290:17;5281:6;5237:71;:::i;:::-;5093:222;;;;:::o;5321:619::-;5398:6;5406;5414;5463:2;5451:9;5442:7;5438:23;5434:32;5431:119;;;5469:79;;:::i;:::-;5431:119;5589:1;5614:53;5659:7;5650:6;5639:9;5635:22;5614:53;:::i;:::-;5604:63;;5560:117;5716:2;5742:53;5787:7;5778:6;5767:9;5763:22;5742:53;:::i;:::-;5732:63;;5687:118;5844:2;5870:53;5915:7;5906:6;5895:9;5891:22;5870:53;:::i;:::-;5860:63;;5815:118;5321:619;;;;;:::o;5946:468::-;6011:6;6019;6068:2;6056:9;6047:7;6043:23;6039:32;6036:119;;;6074:79;;:::i;:::-;6036:119;6194:1;6219:53;6264:7;6255:6;6244:9;6240:22;6219:53;:::i;:::-;6209:63;;6165:117;6321:2;6347:50;6389:7;6380:6;6369:9;6365:22;6347:50;:::i;:::-;6337:60;;6292:115;5946:468;;;;;:::o;6420:86::-;6455:7;6495:4;6488:5;6484:16;6473:27;;6420:86;;;:::o;6512:112::-;6595:22;6611:5;6595:22;:::i;:::-;6590:3;6583:35;6512:112;;:::o;6630:214::-;6719:4;6757:2;6746:9;6742:18;6734:26;;6770:67;6834:1;6823:9;6819:17;6810:6;6770:67;:::i;:::-;6630:214;;;;:::o;6850:329::-;6909:6;6958:2;6946:9;6937:7;6933:23;6929:32;6926:119;;;6964:79;;:::i;:::-;6926:119;7084:1;7109:53;7154:7;7145:6;7134:9;7130:22;7109:53;:::i;:::-;7099:63;;7055:117;6850:329;;;;:::o;7185:118::-;7272:24;7290:5;7272:24;:::i;:::-;7267:3;7260:37;7185:118;;:::o;7309:222::-;7402:4;7440:2;7429:9;7425:18;7417:26;;7453:71;7521:1;7510:9;7506:17;7497:6;7453:71;:::i;:::-;7309:222;;;;:::o;7537:329::-;7596:6;7645:2;7633:9;7624:7;7620:23;7616:32;7613:119;;;7651:79;;:::i;:::-;7613:119;7771:1;7796:53;7841:7;7832:6;7821:9;7817:22;7796:53;:::i;:::-;7786:63;;7742:117;7537:329;;;;:::o;7872:109::-;7922:7;7951:24;7969:5;7951:24;:::i;:::-;7940:35;;7872:109;;;:::o;7987:148::-;8073:37;8104:5;8073:37;:::i;:::-;8066:5;8063:48;8053:76;;8125:1;8122;8115:12;8053:76;7987:148;:::o;8141:165::-;8200:5;8238:6;8225:20;8216:29;;8254:46;8294:5;8254:46;:::i;:::-;8141:165;;;;:::o;8312:500::-;8393:6;8401;8450:2;8438:9;8429:7;8425:23;8421:32;8418:119;;;8456:79;;:::i;:::-;8418:119;8576:1;8601:66;8659:7;8650:6;8639:9;8635:22;8601:66;:::i;:::-;8591:76;;8547:130;8716:2;8742:53;8787:7;8778:6;8767:9;8763:22;8742:53;:::i;:::-;8732:63;;8687:118;8312:500;;;;;:::o;8818:474::-;8886:6;8894;8943:2;8931:9;8922:7;8918:23;8914:32;8911:119;;;8949:79;;:::i;:::-;8911:119;9069:1;9094:53;9139:7;9130:6;9119:9;9115:22;9094:53;:::i;:::-;9084:63;;9040:117;9196:2;9222:53;9267:7;9258:6;9247:9;9243:22;9222:53;:::i;:::-;9212:63;;9167:118;8818:474;;;;;:::o;9298:180::-;9346:77;9343:1;9336:88;9443:4;9440:1;9433:15;9467:4;9464:1;9457:15;9484:320;9528:6;9565:1;9559:4;9555:12;9545:22;;9612:1;9606:4;9602:12;9633:18;9623:81;;9689:4;9681:6;9677:17;9667:27;;9623:81;9751:2;9743:6;9740:14;9720:18;9717:38;9714:84;;9770:18;;:::i;:::-;9714:84;9535:269;9484:320;;;:::o;9810:182::-;9950:34;9946:1;9938:6;9934:14;9927:58;9810:182;:::o;9998:366::-;10140:3;10161:67;10225:2;10220:3;10161:67;:::i;:::-;10154:74;;10237:93;10326:3;10237:93;:::i;:::-;10355:2;10350:3;10346:12;10339:19;;9998:366;;;:::o;10370:419::-;10536:4;10574:2;10563:9;10559:18;10551:26;;10623:9;10617:4;10613:20;10609:1;10598:9;10594:17;10587:47;10651:131;10777:4;10651:131;:::i;:::-;10643:139;;10370:419;;;:::o;10795:180::-;10843:77;10840:1;10833:88;10940:4;10937:1;10930:15;10964:4;10961:1;10954:15;10981:194;11021:4;11041:20;11059:1;11041:20;:::i;:::-;11036:25;;11075:20;11093:1;11075:20;:::i;:::-;11070:25;;11119:1;11116;11112:9;11104:17;;11143:1;11137:4;11134:11;11131:37;;;11148:18;;:::i;:::-;11131:37;10981:194;;;;:::o;11181:191::-;11221:3;11240:20;11258:1;11240:20;:::i;:::-;11235:25;;11274:20;11292:1;11274:20;:::i;:::-;11269:25;;11317:1;11314;11310:9;11303:16;;11338:3;11335:1;11332:10;11329:36;;;11345:18;;:::i;:::-;11329:36;11181:191;;;;:::o;11378:410::-;11418:7;11441:20;11459:1;11441:20;:::i;:::-;11436:25;;11475:20;11493:1;11475:20;:::i;:::-;11470:25;;11530:1;11527;11523:9;11552:30;11570:11;11552:30;:::i;:::-;11541:41;;11731:1;11722:7;11718:15;11715:1;11712:22;11692:1;11685:9;11665:83;11642:139;;11761:18;;:::i;:::-;11642:139;11426:362;11378:410;;;;:::o;11794:167::-;11934:19;11930:1;11922:6;11918:14;11911:43;11794:167;:::o;11967:366::-;12109:3;12130:67;12194:2;12189:3;12130:67;:::i;:::-;12123:74;;12206:93;12295:3;12206:93;:::i;:::-;12324:2;12319:3;12315:12;12308:19;;11967:366;;;:::o;12339:419::-;12505:4;12543:2;12532:9;12528:18;12520:26;;12592:9;12586:4;12582:20;12578:1;12567:9;12563:17;12556:47;12620:131;12746:4;12620:131;:::i;:::-;12612:139;;12339:419;;;:::o;12764:143::-;12821:5;12852:6;12846:13;12837:22;;12868:33;12895:5;12868:33;:::i;:::-;12764:143;;;;:::o;12913:351::-;12983:6;13032:2;13020:9;13011:7;13007:23;13003:32;13000:119;;;13038:79;;:::i;:::-;13000:119;13158:1;13183:64;13239:7;13230:6;13219:9;13215:22;13183:64;:::i;:::-;13173:74;;13129:128;12913:351;;;;:::o;13270:164::-;13410:16;13406:1;13398:6;13394:14;13387:40;13270:164;:::o;13440:366::-;13582:3;13603:67;13667:2;13662:3;13603:67;:::i;:::-;13596:74;;13679:93;13768:3;13679:93;:::i;:::-;13797:2;13792:3;13788:12;13781:19;;13440:366;;;:::o;13812:419::-;13978:4;14016:2;14005:9;14001:18;13993:26;;14065:9;14059:4;14055:20;14051:1;14040:9;14036:17;14029:47;14093:131;14219:4;14093:131;:::i;:::-;14085:139;;13812:419;;;:::o;14237:332::-;14358:4;14396:2;14385:9;14381:18;14373:26;;14409:71;14477:1;14466:9;14462:17;14453:6;14409:71;:::i;:::-;14490:72;14558:2;14547:9;14543:18;14534:6;14490:72;:::i;:::-;14237:332;;;;;:::o;14575:137::-;14629:5;14660:6;14654:13;14645:22;;14676:30;14700:5;14676:30;:::i;:::-;14575:137;;;;:::o;14718:345::-;14785:6;14834:2;14822:9;14813:7;14809:23;14805:32;14802:119;;;14840:79;;:::i;:::-;14802:119;14960:1;14985:61;15038:7;15029:6;15018:9;15014:22;14985:61;:::i;:::-;14975:71;;14931:125;14718:345;;;;:::o;15069:180::-;15117:77;15114:1;15107:88;15214:4;15211:1;15204:15;15238:4;15235:1;15228:15;15255:185;15295:1;15312:20;15330:1;15312:20;:::i;:::-;15307:25;;15346:20;15364:1;15346:20;:::i;:::-;15341:25;;15385:1;15375:35;;15390:18;;:::i;:::-;15375:35;15432:1;15429;15425:9;15420:14;;15255:185;;;;:::o;15446:225::-;15586:34;15582:1;15574:6;15570:14;15563:58;15655:8;15650:2;15642:6;15638:15;15631:33;15446:225;:::o;15677:366::-;15819:3;15840:67;15904:2;15899:3;15840:67;:::i;:::-;15833:74;;15916:93;16005:3;15916:93;:::i;:::-;16034:2;16029:3;16025:12;16018:19;;15677:366;;;:::o;16049:419::-;16215:4;16253:2;16242:9;16238:18;16230:26;;16302:9;16296:4;16292:20;16288:1;16277:9;16273:17;16266:47;16330:131;16456:4;16330:131;:::i;:::-;16322:139;;16049:419;;;:::o;16474:180::-;16614:32;16610:1;16602:6;16598:14;16591:56;16474:180;:::o;16660:366::-;16802:3;16823:67;16887:2;16882:3;16823:67;:::i;:::-;16816:74;;16899:93;16988:3;16899:93;:::i;:::-;17017:2;17012:3;17008:12;17001:19;;16660:366;;;:::o;17032:419::-;17198:4;17236:2;17225:9;17221:18;17213:26;;17285:9;17279:4;17275:20;17271:1;17260:9;17256:17;17249:47;17313:131;17439:4;17313:131;:::i;:::-;17305:139;;17032:419;;;:::o;17457:177::-;17597:29;17593:1;17585:6;17581:14;17574:53;17457:177;:::o;17640:366::-;17782:3;17803:67;17867:2;17862:3;17803:67;:::i;:::-;17796:74;;17879:93;17968:3;17879:93;:::i;:::-;17997:2;17992:3;17988:12;17981:19;;17640:366;;;:::o;18012:419::-;18178:4;18216:2;18205:9;18201:18;18193:26;;18265:9;18259:4;18255:20;18251:1;18240:9;18236:17;18229:47;18293:131;18419:4;18293:131;:::i;:::-;18285:139;;18012:419;;;:::o;18437:180::-;18577:32;18573:1;18565:6;18561:14;18554:56;18437:180;:::o;18623:366::-;18765:3;18786:67;18850:2;18845:3;18786:67;:::i;:::-;18779:74;;18862:93;18951:3;18862:93;:::i;:::-;18980:2;18975:3;18971:12;18964:19;;18623:366;;;:::o;18995:419::-;19161:4;19199:2;19188:9;19184:18;19176:26;;19248:9;19242:4;19238:20;19234:1;19223:9;19219:17;19212:47;19276:131;19402:4;19276:131;:::i;:::-;19268:139;;18995:419;;;:::o;19420:178::-;19560:30;19556:1;19548:6;19544:14;19537:54;19420:178;:::o;19604:366::-;19746:3;19767:67;19831:2;19826:3;19767:67;:::i;:::-;19760:74;;19843:93;19932:3;19843:93;:::i;:::-;19961:2;19956:3;19952:12;19945:19;;19604:366;;;:::o;19976:419::-;20142:4;20180:2;20169:9;20165:18;20157:26;;20229:9;20223:4;20219:20;20215:1;20204:9;20200:17;20193:47;20257:131;20383:4;20257:131;:::i;:::-;20249:139;;19976:419;;;:::o;20401:182::-;20541:34;20537:1;20529:6;20525:14;20518:58;20401:182;:::o;20589:366::-;20731:3;20752:67;20816:2;20811:3;20752:67;:::i;:::-;20745:74;;20828:93;20917:3;20828:93;:::i;:::-;20946:2;20941:3;20937:12;20930:19;;20589:366;;;:::o;20961:419::-;21127:4;21165:2;21154:9;21150:18;21142:26;;21214:9;21208:4;21204:20;21200:1;21189:9;21185:17;21178:47;21242:131;21368:4;21242:131;:::i;:::-;21234:139;;20961:419;;;:::o;21386:172::-;21526:24;21522:1;21514:6;21510:14;21503:48;21386:172;:::o;21564:366::-;21706:3;21727:67;21791:2;21786:3;21727:67;:::i;:::-;21720:74;;21803:93;21892:3;21803:93;:::i;:::-;21921:2;21916:3;21912:12;21905:19;;21564:366;;;:::o;21936:419::-;22102:4;22140:2;22129:9;22125:18;22117:26;;22189:9;22183:4;22179:20;22175:1;22164:9;22160:17;22153:47;22217:131;22343:4;22217:131;:::i;:::-;22209:139;;21936:419;;;:::o;22361:170::-;22501:22;22497:1;22489:6;22485:14;22478:46;22361:170;:::o;22537:366::-;22679:3;22700:67;22764:2;22759:3;22700:67;:::i;:::-;22693:74;;22776:93;22865:3;22776:93;:::i;:::-;22894:2;22889:3;22885:12;22878:19;;22537:366;;;:::o;22909:419::-;23075:4;23113:2;23102:9;23098:18;23090:26;;23162:9;23156:4;23152:20;23148:1;23137:9;23133:17;23126:47;23190:131;23316:4;23190:131;:::i;:::-;23182:139;;22909:419;;;:::o;23334:174::-;23474:26;23470:1;23462:6;23458:14;23451:50;23334:174;:::o;23514:366::-;23656:3;23677:67;23741:2;23736:3;23677:67;:::i;:::-;23670:74;;23753:93;23842:3;23753:93;:::i;:::-;23871:2;23866:3;23862:12;23855:19;;23514:366;;;:::o;23886:419::-;24052:4;24090:2;24079:9;24075:18;24067:26;;24139:9;24133:4;24129:20;24125:1;24114:9;24110:17;24103:47;24167:131;24293:4;24167:131;:::i;:::-;24159:139;;23886:419;;;:::o;24311:180::-;24359:77;24356:1;24349:88;24456:4;24453:1;24446:15;24480:4;24477:1;24470:15;24497:180;24545:77;24542:1;24535:88;24642:4;24639:1;24632:15;24666:4;24663:1;24656:15;24683:143;24740:5;24771:6;24765:13;24756:22;;24787:33;24814:5;24787:33;:::i;:::-;24683:143;;;;:::o;24832:351::-;24902:6;24951:2;24939:9;24930:7;24926:23;24922:32;24919:119;;;24957:79;;:::i;:::-;24919:119;25077:1;25102:64;25158:7;25149:6;25138:9;25134:22;25102:64;:::i;:::-;25092:74;;25048:128;24832:351;;;;:::o;25189:85::-;25234:7;25263:5;25252:16;;25189:85;;;:::o;25280:158::-;25338:9;25371:61;25389:42;25398:32;25424:5;25398:32;:::i;:::-;25389:42;:::i;:::-;25371:61;:::i;:::-;25358:74;;25280:158;;;:::o;25444:147::-;25539:45;25578:5;25539:45;:::i;:::-;25534:3;25527:58;25444:147;;:::o;25597:114::-;25664:6;25698:5;25692:12;25682:22;;25597:114;;;:::o;25717:184::-;25816:11;25850:6;25845:3;25838:19;25890:4;25885:3;25881:14;25866:29;;25717:184;;;;:::o;25907:132::-;25974:4;25997:3;25989:11;;26027:4;26022:3;26018:14;26010:22;;25907:132;;;:::o;26045:108::-;26122:24;26140:5;26122:24;:::i;:::-;26117:3;26110:37;26045:108;;:::o;26159:179::-;26228:10;26249:46;26291:3;26283:6;26249:46;:::i;:::-;26327:4;26322:3;26318:14;26304:28;;26159:179;;;;:::o;26344:113::-;26414:4;26446;26441:3;26437:14;26429:22;;26344:113;;;:::o;26493:732::-;26612:3;26641:54;26689:5;26641:54;:::i;:::-;26711:86;26790:6;26785:3;26711:86;:::i;:::-;26704:93;;26821:56;26871:5;26821:56;:::i;:::-;26900:7;26931:1;26916:284;26941:6;26938:1;26935:13;26916:284;;;27017:6;27011:13;27044:63;27103:3;27088:13;27044:63;:::i;:::-;27037:70;;27130:60;27183:6;27130:60;:::i;:::-;27120:70;;26976:224;26963:1;26960;26956:9;26951:14;;26916:284;;;26920:14;27216:3;27209:10;;26617:608;;;26493:732;;;;:::o;27231:831::-;27494:4;27532:3;27521:9;27517:19;27509:27;;27546:71;27614:1;27603:9;27599:17;27590:6;27546:71;:::i;:::-;27627:80;27703:2;27692:9;27688:18;27679:6;27627:80;:::i;:::-;27754:9;27748:4;27744:20;27739:2;27728:9;27724:18;27717:48;27782:108;27885:4;27876:6;27782:108;:::i;:::-;27774:116;;27900:72;27968:2;27957:9;27953:18;27944:6;27900:72;:::i;:::-;27982:73;28050:3;28039:9;28035:19;28026:6;27982:73;:::i;:::-;27231:831;;;;;;;;:::o
Swarm Source
ipfs://23bd895003ab955ad9aee7f594191d709ca33ce6cef3ad81217aa8c0c442d773
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.