ERC-20
Overview
Max Total Supply
100,000,000,000 DPS
Holders
10
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DPSToken
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-11 */ // SPDX-License-Identifier: MIT /** *https://twitter.com/elonmusk/status/1624161276284006400?s=20&t=xBmUCdckkrQKVNhEhaPw3w */ pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } 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); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; //hash address of empty contract assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function isOwner() public view returns (bool) { return msg.sender == _owner; } function renouncedOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD)); _owner = address(0x000000000000000000000000000000000000dEaD); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract DPSToken is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; string private _name = "Durrito Pyramid Scheme"; string private _symbol = "DPS"; uint8 private _decimals = 18; address public marketingWallet = 0xAd77394F2a35DEF08d7Bc33a0093A9493eB0e806; address public developerWallet = 0xAd77394F2a35DEF08d7Bc33a0093A9493eB0e806; address public liquidityReciever; address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; address public immutable zeroAddress = 0x0000000000000000000000000000000000000000; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isMarketPair; mapping (address => bool) public isWalletLimitExempt; mapping (address => bool) public isTxLimitExempt; mapping (address => bool) public blacklisted; uint256 _buyLiquidityFee = 0; uint256 _buyMarketingFee = 50; uint256 _buyDeveloperFee = 0; uint256 _sellLiquidityFee = 0; uint256 _sellMarketingFee = 50; uint256 _sellDeveloperFee = 0; uint256 totalBuy; uint256 totalSell; uint256 denominator = 1000; uint256 private _totalSupply = 100000_000_000 * 10**_decimals; uint256 public minimumTokensBeforeSwap = 1000 * 10**_decimals; uint256 public _maxTxAmount = _totalSupply.mul(15).div(denominator); //1.5% uint256 public _walletMax = _totalSupply.mul(30).div(denominator); //3.0% bool public burnSwitch = false; bool public EnableTxLimit = true; bool public checkWalletLimit = true; IUniswapV2Router02 public uniswapV2Router; address public uniswapPair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { address _owner = 0xbb0E80C707C1b37ed234F44622C073220eB2fe0B; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0); isExcludedFromFee[address(this)] = true; isExcludedFromFee[_owner] = true; isExcludedFromFee[marketingWallet] = true; isExcludedFromFee[developerWallet] = true; isMarketPair[address(uniswapPair)] = true; isWalletLimitExempt[msg.sender] = true; isWalletLimitExempt[address(uniswapPair)] = true; isWalletLimitExempt[address(this)] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[address(this)] = true; totalBuy = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee); totalSell = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee); transferOwnership(_owner); _balances[_owner] = _totalSupply; emit Transfer(address(0), _owner, _totalSupply); } /*==================================== | Getters | ====================================*/ 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 allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress)); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, 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()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!blacklisted[sender] && !blacklisted[recipient],"Error: Blacklist Bots/Contracts not Allowed!!"); if(inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } else { if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap; if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) { swapAndLiquify(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = shouldTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount); if(checkWalletLimit && !isWalletLimitExempt[recipient]) { require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Max Wallet Limit Exceeded!!"); } _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function swapAndLiquify() private lockTheSwap { uint256 contractBalance = balanceOf(address(this)); if(contractBalance == 0) return; uint256 totalShares = totalBuy.add(totalSell); uint256 _liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee); uint256 _MarketingShare = _buyMarketingFee.add(_sellMarketingFee); uint256 tokensForLP = contractBalance.mul(_liquidityShare).div(totalShares).div(2); uint256 tokensForSwap = contractBalance.sub(tokensForLP); uint256 initialBalance = address(this).balance; swapTokensForEth(tokensForSwap); uint256 amountReceived = address(this).balance.sub(initialBalance); uint256 totalBNBFee = totalShares.sub(_liquidityShare.div(2)); uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2); uint256 amountBNBMarketing = amountReceived.mul(_MarketingShare).div(totalBNBFee); uint256 amountBNBDeveloper = amountReceived.sub(amountBNBLiquidity).sub(amountBNBMarketing); if(amountBNBMarketing > 0) transferToAddressETH(marketingWallet, amountBNBMarketing); if(amountBNBDeveloper > 0) transferToAddressETH(developerWallet, amountBNBDeveloper); if(amountBNBLiquidity > 0 && tokensForLP > 0) addLiquidity(tokensForLP, amountBNBLiquidity); } function transferToAddressETH(address recipient, uint256 amount) private { payable(recipient).transfer(amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable liquidityReciever, block.timestamp ); } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) { return true; } else if (isMarketPair[sender] || isMarketPair[recipient]) { return false; } else { return false; } } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint feeAmount; unchecked { if(isMarketPair[sender]) { feeAmount = amount.mul(totalBuy).div(denominator); } else if(isMarketPair[recipient]) { feeAmount = amount.mul(totalSell).div(denominator); } if(feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return amount.sub(feeAmount); } } function burnToken(uint256 _amount) external { address account = msg.sender; require(burnSwitch,"Error: Burning is Currently Off!"); require(balanceOf(account) >= _amount,"Error: Amount Exceeded from balance!"); _balances[account] = _balances[account].sub(_amount); _totalSupply = _totalSupply.sub(_amount); } /*==================================== | Setters | ====================================*/ //To Block Bots to trade function blacklistBot(address _adr,bool _status) public onlyOwner { require(Address.isContract(_adr),"Error: BlackList Applicable For Bot/Contracts!!"); blacklisted[_adr] = _status; } //To Rescue Stucked Balance function rescueFunds() public onlyOwner { (bool os,) = payable(msg.sender).call{value: address(this).balance}(""); require(os,"Transaction Failed!!"); } //To Rescue Stucked Tokens function rescueTokens(IERC20 adr,address recipient,uint amount) public onlyOwner { adr.transfer(recipient,amount); } function setBuyFee(uint _newLP , uint _newMarket , uint _newDeveloper) public onlyOwner { _buyLiquidityFee = _newLP; _buyMarketingFee = _newMarket; _buyDeveloperFee = _newDeveloper; totalBuy = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee); } function setSellFee(uint _newLP , uint _newMarket , uint _newDeveloper) public onlyOwner { _sellLiquidityFee = _newLP; _sellMarketingFee = _newMarket; _sellDeveloperFee = _newDeveloper; totalSell = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee); } function setWallets(address _market,address _developer,address _liquidityRec) public onlyOwner { marketingWallet = _market; developerWallet = _developer; liquidityReciever = _liquidityRec; } function setExcludeFromFee(address _adr,bool _status) public onlyOwner { require(isExcludedFromFee[_adr] != _status,"Not Changed!!"); isExcludedFromFee[_adr] = _status; } function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner { minimumTokensBeforeSwap = newLimit; } function enableBurn(bool _status) external onlyOwner { require(burnSwitch != _status,"Error: Not Change"); burnSwitch = _status; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function excludeWalletLimit(address _adr,bool _status) public onlyOwner { require(isWalletLimitExempt[_adr] != _status,"Not Changed!!"); isWalletLimitExempt[_adr] = _status; } function excludeTxLimit(address _adr,bool _status) public onlyOwner { require(isTxLimitExempt[_adr] != _status,"Not Changed!!"); isTxLimitExempt[_adr] = _status; } function setMarketPair(address _pair, bool _status) public onlyOwner { isMarketPair[_pair] = _status; } function ExcludeWalletLimit(address _adr,bool _status) public onlyOwner { require(isWalletLimitExempt[_adr] != _status,"Not Changed!!"); isWalletLimitExempt[_adr] = _status; } function ExcludeTxLimit(address _adr,bool _status) public onlyOwner { require(isTxLimitExempt[_adr] != _status,"Not Changed!!"); isTxLimitExempt[_adr] = _status; } function enableTxLimit(bool _status) public onlyOwner { EnableTxLimit = _status; } function enableWalletLimit(bool _status) public onlyOwner { checkWalletLimit = _status; } function setMaxWalletLimit(uint256 newLimit) external onlyOwner() { _walletMax = newLimit; } function setTxLimit(uint256 newLimit) external onlyOwner() { _maxTxAmount = newLimit; } function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH()); if(newPairAddress == address(0)) //Create If Doesnt exist { newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); } uniswapPair = newPairAddress; //Set new pair address uniswapV2Router = _uniswapV2Router; //Set new router address isMarketPair[address(uniswapPair)] = true; } }
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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"blacklistBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnSwitch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burnToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"developerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","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":"renouncedOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"adr","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"},{"internalType":"uint256","name":"_newDeveloper","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"},{"internalType":"uint256","name":"_newDeveloper","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_market","type":"address"},{"internalType":"address","name":"_developer","type":"address"},{"internalType":"address","name":"_liquidityRec","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526040518060400160405280601681526020017f4475727269746f20507972616d696420536368656d6500000000000000000000815250600190805190602001906200005192919062000fa1565b506040518060400160405280600381526020017f4450530000000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000fa1565b506012600360006101000a81548160ff021916908360ff16021790555073ad77394f2a35def08d7bc33a0093a9493eb0e806600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ad77394f2a35def08d7bc33a0093a9493eb0e806600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506000600d556032600e556000600f556000601055603260115560006012556103e8601555600360009054906101000a900460ff16600a62000217919062001395565b64174876e800620002299190620014d2565b601655600360009054906101000a900460ff16600a6200024a919062001395565b6103e8620002599190620014d2565b6017556200029460155462000280600f60165462000c2860201b620032eb1790919060201c565b62000cac60201b620033661790919060201c565b601855620002cf601554620002bb601e60165462000c2860201b620032eb1790919060201c565b62000cac60201b620033661790919060201c565b6019556000601a60006101000a81548160ff0219169083151502179055506001601a60016101000a81548160ff0219169083151502179055506001601a60026101000a81548160ff0219169083151502179055506001601b60156101000a81548160ff0219169083151502179055503480156200034b57600080fd5b5060006200035e62000cfe60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073bb0e80c707c1b37ed234f44622c073220eb2fe0b90506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200047557600080fd5b505afa1580156200048a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b0919062001068565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200051357600080fd5b505afa15801562000528573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054e919062001068565b6040518363ffffffff1660e01b81526004016200056d92919062001193565b602060405180830381600087803b1580156200058857600080fd5b505af11580156200059d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c3919062001068565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000b1a600f5462000b06600e54600d5462000d0660201b620033b01790919060201c565b62000d0660201b620033b01790919060201c565b60138190555062000b5960125462000b4560115460105462000d0660201b620033b01790919060201c565b62000d0660201b620033b01790919060201c565b60148190555062000b708262000d6960201b60201c565b601654600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60165460405162000c1891906200126c565b60405180910390a350506200179f565b60008083141562000c3d576000905062000ca6565b6000828462000c4d9190620014d2565b905082848262000c5e919062001302565b1462000ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c989062001228565b60405180910390fd5b809150505b92915050565b600062000cf683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000f3960201b60201c565b905092915050565b600033905090565b600080828462000d179190620012a5565b90508381101562000d5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d569062001206565b60405180910390fd5b8091505092915050565b62000d7962000cfe60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000e09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e00906200124a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000e7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e7390620011e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808311829062000f83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f7a9190620011c0565b60405180910390fd5b506000838562000f94919062001302565b9050809150509392505050565b82805462000faf90620015b4565b90600052602060002090601f01602090048101928262000fd357600085556200101f565b82601f1062000fee57805160ff19168380011785556200101f565b828001600101855582156200101f579182015b828111156200101e57825182559160200191906001019062001001565b5b5090506200102e919062001032565b5090565b5b808211156200104d57600081600090555060010162001033565b5090565b600081519050620010628162001785565b92915050565b6000602082840312156200107b57600080fd5b60006200108b8482850162001051565b91505092915050565b6200109f8162001533565b82525050565b6000620010b28262001289565b620010be818562001294565b9350620010d08185602086016200157e565b620010db8162001677565b840191505092915050565b6000620010f560268362001294565b9150620011028262001695565b604082019050919050565b60006200111c601b8362001294565b91506200112982620016e4565b602082019050919050565b60006200114360218362001294565b915062001150826200170d565b604082019050919050565b60006200116a60208362001294565b915062001177826200175c565b602082019050919050565b6200118d8162001567565b82525050565b6000604082019050620011aa600083018562001094565b620011b9602083018462001094565b9392505050565b60006020820190508181036000830152620011dc8184620010a5565b905092915050565b60006020820190508181036000830152620011ff81620010e6565b9050919050565b6000602082019050818103600083015262001221816200110d565b9050919050565b60006020820190508181036000830152620012438162001134565b9050919050565b6000602082019050818103600083015262001265816200115b565b9050919050565b600060208201905062001283600083018462001182565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620012b28262001567565b9150620012bf8362001567565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620012f757620012f6620015ea565b5b828201905092915050565b60006200130f8262001567565b91506200131c8362001567565b9250826200132f576200132e62001619565b5b828204905092915050565b6000808291508390505b60018511156200138c57808604811115620013645762001363620015ea565b5b6001851615620013745780820291505b8081029050620013848562001688565b945062001344565b94509492505050565b6000620013a28262001567565b9150620013af8362001571565b9250620013de7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013e6565b905092915050565b600082620013f85760019050620014cb565b81620014085760009050620014cb565b81600181146200142157600281146200142c5762001462565b6001915050620014cb565b60ff841115620014415762001440620015ea565b5b8360020a9150848211156200145b576200145a620015ea565b5b50620014cb565b5060208310610133831016604e8410600b84101617156200149c5782820a905083811115620014965762001495620015ea565b5b620014cb565b620014ab84848460016200133a565b92509050818404811115620014c557620014c4620015ea565b5b81810290505b9392505050565b6000620014df8262001567565b9150620014ec8362001567565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620015285762001527620015ea565b5b828202905092915050565b6000620015408262001547565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200159e57808201518184015260208101905062001581565b83811115620015ae576000848401525b50505050565b60006002820490506001821680620015cd57607f821691505b60208210811415620015e457620015e362001648565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b620017908162001533565b81146200179c57600080fd5b50565b60805160601c60a05160601c615e11620017d960003960008181610e11015261144701526000818161141b01526114730152615e116000f3fe60806040526004361061036f5760003560e01c806375f0a874116101c6578063b6970204116100f7578063dbac26e911610095578063ee828db31161006f578063ee828db314610cd7578063f229abbd14610d00578063f2fde38b14610d29578063f872858a14610d5257610376565b8063dbac26e914610c46578063dd62ed3e14610c83578063e6b2603b14610cc057610376565b8063c816841b116100d1578063c816841b14610b8a578063c867d60b14610bb5578063cea9d26f14610bf2578063d2d7ad8314610c1b57610376565b8063b697020414610b0d578063c16dd4a414610b38578063c49b9a8014610b6157610376565b80638f32d59b11610164578063a457c2d71161013e578063a457c2d714610a41578063a9059cbb14610a7e578063ae85ade614610abb578063af9549e014610ae457610376565b80638f32d59b146109c057806395d89b41146109eb57806398e944c814610a1657610376565b8063807c2d9c116101a0578063807c2d9c146109045780638236802e1461092f5780638b42507f146109585780638da5cb5b1461099557610376565b806375f0a874146108855780637b47ec1a146108b05780637d1db4a5146108d957610376565b806338ec0b11116102a05780635881f3ef1161023e578063651a898711610218578063651a8987146107cd57806370a08231146107f6578063728d41c91461083357806375cb1bd11461085c57610376565b80635881f3ef1461073c5780635c85974f146107795780635e42358c146107a257610376565b80633ecad2711161027a5780633ecad2711461066e5780634974d88f146106ab5780634a74bb02146106d45780635342acb4146106ff57610376565b806338ec0b11146105df57806339509351146106085780633b97084a1461064557610376565b80631d865c301161030d57806325519cf2116102e757806325519cf21461053557806327c8f8351461055e5780632b112e4914610589578063313ce567146105b457610376565b80631d865c30146104b857806320365d5f146104e157806323b872dd146104f857610376565b806313ea1d891161034957806313ea1d891461040e5780631694505e1461043757806318160ddd14610462578063185870f91461048d57610376565b806306fdde031461037b5780630930907b146103a6578063095ea7b3146103d157610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d7d565b60405161039d9190615274565b60405180910390f35b3480156103b257600080fd5b506103bb610e0f565b6040516103c89190615170565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190614c06565b610e33565b604051610405919061523e565b60405180910390f35b34801561041a57600080fd5b5061043560048036038101906104309190614bca565b610e51565b005b34801561044357600080fd5b5061044c610fd4565b6040516104599190615259565b60405180910390f35b34801561046e57600080fd5b50610477610ffa565b60405161048491906154d6565b60405180910390f35b34801561049957600080fd5b506104a2611004565b6040516104af9190615170565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da9190614d0c565b61102a565b005b3480156104ed57600080fd5b506104f661110a565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614b7b565b61125f565b60405161052c919061523e565b60405180910390f35b34801561054157600080fd5b5061055c60048036038101906105579190614d0c565b611339565b005b34801561056a57600080fd5b50610573611419565b6040516105809190615170565b60405180910390f35b34801561059557600080fd5b5061059e61143d565b6040516105ab91906154d6565b60405180910390f35b3480156105c057600080fd5b506105c96114bb565b6040516105d6919061557b565b60405180910390f35b3480156105eb57600080fd5b5061060660048036038101906106019190614bca565b6114d2565b005b34801561061457600080fd5b5061062f600480360381019061062a9190614c06565b611655565b60405161063c919061523e565b60405180910390f35b34801561065157600080fd5b5061066c60048036038101906106679190614ce3565b611708565b005b34801561067a57600080fd5b5061069560048036038101906106909190614a9e565b6117a7565b6040516106a2919061523e565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd9190614c42565b6117c7565b005b3480156106e057600080fd5b506106e9611879565b6040516106f6919061523e565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614a9e565b61188c565b604051610733919061523e565b60405180910390f35b34801561074857600080fd5b50610763600480360381019061075e9190614a9e565b6118ac565b6040516107709190615170565b60405180910390f35b34801561078557600080fd5b506107a0600480360381019061079b9190614ce3565b611d90565b005b3480156107ae57600080fd5b506107b7611e2f565b6040516107c4919061523e565b60405180910390f35b3480156107d957600080fd5b506107f460048036038101906107ef9190614bca565b611e42565b005b34801561080257600080fd5b5061081d60048036038101906108189190614a9e565b611fc5565b60405161082a91906154d6565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190614ce3565b61200e565b005b34801561086857600080fd5b50610883600480360381019061087e9190614b2c565b6120ad565b005b34801561089157600080fd5b5061089a61220a565b6040516108a79190615170565b60405180910390f35b3480156108bc57600080fd5b506108d760048036038101906108d29190614ce3565b612230565b005b3480156108e557600080fd5b506108ee612383565b6040516108fb91906154d6565b60405180910390f35b34801561091057600080fd5b50610919612389565b60405161092691906154d6565b60405180910390f35b34801561093b57600080fd5b5061095660048036038101906109519190614bca565b61238f565b005b34801561096457600080fd5b5061097f600480360381019061097a9190614a9e565b6124c7565b60405161098c919061523e565b60405180910390f35b3480156109a157600080fd5b506109aa6124e7565b6040516109b79190615170565b60405180910390f35b3480156109cc57600080fd5b506109d5612510565b6040516109e2919061523e565b60405180910390f35b3480156109f757600080fd5b50610a00612567565b604051610a0d9190615274565b60405180910390f35b348015610a2257600080fd5b50610a2b6125f9565b604051610a389190615170565b60405180910390f35b348015610a4d57600080fd5b50610a686004803603810190610a639190614c06565b61261f565b604051610a75919061523e565b60405180910390f35b348015610a8a57600080fd5b50610aa56004803603810190610aa09190614c06565b6126ec565b604051610ab2919061523e565b60405180910390f35b348015610ac757600080fd5b50610ae26004803603810190610add9190614bca565b61270b565b005b348015610af057600080fd5b50610b0b6004803603810190610b069190614bca565b61288e565b005b348015610b1957600080fd5b50610b22612a11565b604051610b2f919061523e565b60405180910390f35b348015610b4457600080fd5b50610b5f6004803603810190610b5a9190614bca565b612a24565b005b348015610b6d57600080fd5b50610b886004803603810190610b839190614c42565b612b14565b005b348015610b9657600080fd5b50610b9f612bfd565b604051610bac9190615170565b60405180910390f35b348015610bc157600080fd5b50610bdc6004803603810190610bd79190614a9e565b612c23565b604051610be9919061523e565b60405180910390f35b348015610bfe57600080fd5b50610c196004803603810190610c149190614c94565b612c43565b005b348015610c2757600080fd5b50610c30612d6b565b604051610c3d91906154d6565b60405180910390f35b348015610c5257600080fd5b50610c6d6004803603810190610c689190614a9e565b612d71565b604051610c7a919061523e565b60405180910390f35b348015610c8f57600080fd5b50610caa6004803603810190610ca59190614af0565b612d91565b604051610cb791906154d6565b60405180910390f35b348015610ccc57600080fd5b50610cd5612e18565b005b348015610ce357600080fd5b50610cfe6004803603810190610cf99190614c42565b612f5c565b005b348015610d0c57600080fd5b50610d276004803603810190610d229190614c42565b61300e565b005b348015610d3557600080fd5b50610d506004803603810190610d4b9190614a9e565b613116565b005b348015610d5e57600080fd5b50610d676132d8565b604051610d74919061523e565b60405180910390f35b606060018054610d8c906157db565b80601f0160208091040260200160405190810160405280929190818152602001828054610db8906157db565b8015610e055780601f10610dda57610100808354040283529160200191610e05565b820191906000526020600020905b815481529060010190602001808311610de857829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610e47610e4061340e565b8484613416565b6001905092915050565b610e5961340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edd906153d6565b60405180910390fd5b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7090615376565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601654905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61103261340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b6906153d6565b60405180910390fd5b8260108190555081601181905550806012819055506110ff6012546110f16011546010546133b090919063ffffffff16565b6133b090919063ffffffff16565b601481905550505050565b61111261340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611196906153d6565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061126c8484846135e1565b5061132e8461127961340e565b61132985604051806060016040528060288152602001615d8f60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112df61340e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c879092919063ffffffff16565b613416565b600190509392505050565b61134161340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c5906153d6565b60405180910390fd5b82600d8190555081600e8190555080600f8190555061140e600f54611400600e54600d546133b090919063ffffffff16565b6133b090919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006114b661146b7f0000000000000000000000000000000000000000000000000000000000000000611fc5565b6114a86114977f0000000000000000000000000000000000000000000000000000000000000000611fc5565b601654613ceb90919063ffffffff16565b613ceb90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b6114da61340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e906153d6565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f190615376565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006116fe61166261340e565b846116f9856007600061167361340e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b090919063ffffffff16565b613416565b6001905092915050565b61171061340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611794906153d6565b60405180910390fd5b8060178190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b6117cf61340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461185c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611853906153d6565b60405180910390fd5b80601a60026101000a81548160ff02191690831515021790555050565b601b60159054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60006118b661340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a906153d6565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561198e57600080fd5b505afa1580156119a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c69190614ac7565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a2857600080fd5b505afa158015611a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a609190614ac7565b6040518363ffffffff1660e01b8152600401611a7d92919061518b565b60206040518083038186803b158015611a9557600080fd5b505afa158015611aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acd9190614ac7565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c8e578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b4a57600080fd5b505afa158015611b5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b829190614ac7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611be457600080fd5b505afa158015611bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1c9190614ac7565b6040518363ffffffff1660e01b8152600401611c3992919061518b565b602060405180830381600087803b158015611c5357600080fd5b505af1158015611c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8b9190614ac7565b91505b81601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611d9861340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c906153d6565b60405180910390fd5b8060188190555050565b601a60019054906101000a900460ff1681565b611e4a61340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ece906153d6565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6190615376565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61201661340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209a906153d6565b60405180910390fd5b8060198190555050565b6120b561340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612142576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612139906153d6565b60405180910390fd5b82600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000339050601a60009054906101000a900460ff16612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b906152b6565b60405180910390fd5b8161228e82611fc5565b10156122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c690615356565b60405180910390fd5b61232182600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ceb90919063ffffffff16565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061237982601654613ceb90919063ffffffff16565b6016819055505050565b60185481565b60195481565b61239761340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241b906153d6565b60405180910390fd5b61242d82613d35565b61246c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246390615496565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060028054612576906157db565b80601f01602080910402602001604051908101604052809291908181526020018280546125a2906157db565b80156125ef5780601f106125c4576101008083540402835291602001916125ef565b820191906000526020600020905b8154815290600101906020018083116125d257829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006126e261262c61340e565b846126dd85604051806060016040528060258152602001615db7602591396007600061265661340e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c879092919063ffffffff16565b613416565b6001905092915050565b60006127006126f961340e565b84846135e1565b506001905092915050565b61271361340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612797906153d6565b60405180910390fd5b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90615376565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61289661340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291a906153d6565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156129b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ad90615376565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900460ff1681565b612a2c61340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab0906153d6565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612b1c61340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba0906153d6565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612bf2919061523e565b60405180910390a150565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b612c4b61340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccf906153d6565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612d139291906151b4565b602060405180830381600087803b158015612d2d57600080fd5b505af1158015612d41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d659190614c6b565b50505050565b60175481565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612e2061340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea4906153d6565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612ed39061515b565b60006040518083038185875af1925050503d8060008114612f10576040519150601f19603f3d011682016040523d82523d6000602084013e612f15565b606091505b5050905080612f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f50906154b6565b60405180910390fd5b50565b612f6461340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe8906153d6565b60405180910390fd5b80601a60016101000a81548160ff02191690831515021790555050565b61301661340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309a906153d6565b60405180910390fd5b801515601a60009054906101000a900460ff16151514156130f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f090615476565b60405180910390fd5b80601a60006101000a81548160ff02191690831515021790555050565b61311e61340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a2906153d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561321b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613212906152f6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a60029054906101000a900460ff1681565b6000808314156132fe5760009050613360565b6000828461330c919061567d565b905082848261331b919061564c565b1461335b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613352906153b6565b60405180910390fd5b809150505b92915050565b60006133a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d80565b905092915050565b60008082846133bf91906155f6565b905083811015613404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133fb90615336565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347d90615436565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156134f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ed90615316565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516135d491906154d6565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364990615416565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156136c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136b990615296565b60405180910390fd5b60008211613705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136fc906153f6565b60405180910390fd5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137a95750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6137e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137df90615456565b60405180910390fd5b601b60149054906101000a900460ff161561380f57613808848484613de3565b9050613c80565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138b35750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138cb5750601a60019054906101000a900460ff165b1561391657601854821115613915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161390c90615396565b60405180910390fd5b5b600061392130611fc5565b9050600060175482101590508080156139475750601b60149054906101000a900460ff16155b801561399d5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139b55750601b60159054906101000a900460ff165b156139c3576139c2613fb6565b5b613a4c846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c879092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613a9b8787614224565b613aaf57613aaa87878761438f565b613ab1565b845b9050601a60029054906101000a900460ff168015613b195750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613b7e57601954613b3c82613b2e89611fc5565b6133b090919063ffffffff16565b1115613b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b74906152d6565b60405180910390fd5b5b613bd081600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b090919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c7091906154d6565b60405180910390a3600193505050505b9392505050565b6000838311158290613ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cc69190615274565b60405180910390fd5b5060008385613cde91906156d7565b9050809150509392505050565b6000613d2d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613c87565b905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015613d7757506000801b8214155b92505050919050565b60008083118290613dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dbe9190615274565b60405180910390fd5b5060008385613dd6919061564c565b9050809150509392505050565b6000613e6e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c879092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f0382600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fa391906154d6565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff0219169083151502179055506000613fdc30611fc5565b90506000811415613fed5750614207565b60006140066014546013546133b090919063ffffffff16565b90506000614021601054600d546133b090919063ffffffff16565b9050600061403c601154600e546133b090919063ffffffff16565b90506000614078600261406a8661405c878a6132eb90919063ffffffff16565b61336690919063ffffffff16565b61336690919063ffffffff16565b9050600061408f8287613ceb90919063ffffffff16565b9050600047905061409f826145b4565b60006140b48247613ceb90919063ffffffff16565b905060006140de6140cf60028961336690919063ffffffff16565b89613ceb90919063ffffffff16565b9050600061411a600261410c846140fe8c886132eb90919063ffffffff16565b61336690919063ffffffff16565b61336690919063ffffffff16565b90506000614143836141358a876132eb90919063ffffffff16565b61336690919063ffffffff16565b9050600061416c8261415e8588613ceb90919063ffffffff16565b613ceb90919063ffffffff16565b905060008211156141a4576141a3600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836148b1565b5b60008111156141da576141d9600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826148b1565b5b6000831180156141ea5750600088115b156141fa576141f988846148fc565b5b5050505050505050505050505b6000601b60146101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806142c75750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156142d55760019050614389565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806143765750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156143845760009050614389565b600090505b92915050565b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156144145761440d6015546143ff601354866132eb90919063ffffffff16565b61336690919063ffffffff16565b9050614493565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156144925761448f601554614481601454866132eb90919063ffffffff16565b61336690919063ffffffff16565b90505b5b6000811115614597576144ee81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b090919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161458e91906154d6565b60405180910390a35b6145aa8184613ceb90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156145f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156146255781602001602082028036833780820191505090505b5090503081600081518110614663577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561470557600080fd5b505afa158015614719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061473d9190614ac7565b81600181518110614777577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506147de30601a60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613416565b601a60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614842959493929190615521565b600060405180830381600087803b15801561485c57600080fd5b505af1158015614870573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516148a59291906154f1565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156148f7573d6000803e3d6000fd5b505050565b61492930601a60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613416565b601a60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016149b2969594939291906151dd565b6060604051808303818588803b1580156149cb57600080fd5b505af11580156149df573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614a049190614d5b565b5050505050565b600081359050614a1a81615d32565b92915050565b600081519050614a2f81615d32565b92915050565b600081359050614a4481615d49565b92915050565b600081519050614a5981615d49565b92915050565b600081359050614a6e81615d60565b92915050565b600081359050614a8381615d77565b92915050565b600081519050614a9881615d77565b92915050565b600060208284031215614ab057600080fd5b6000614abe84828501614a0b565b91505092915050565b600060208284031215614ad957600080fd5b6000614ae784828501614a20565b91505092915050565b60008060408385031215614b0357600080fd5b6000614b1185828601614a0b565b9250506020614b2285828601614a0b565b9150509250929050565b600080600060608486031215614b4157600080fd5b6000614b4f86828701614a0b565b9350506020614b6086828701614a0b565b9250506040614b7186828701614a0b565b9150509250925092565b600080600060608486031215614b9057600080fd5b6000614b9e86828701614a0b565b9350506020614baf86828701614a0b565b9250506040614bc086828701614a74565b9150509250925092565b60008060408385031215614bdd57600080fd5b6000614beb85828601614a0b565b9250506020614bfc85828601614a35565b9150509250929050565b60008060408385031215614c1957600080fd5b6000614c2785828601614a0b565b9250506020614c3885828601614a74565b9150509250929050565b600060208284031215614c5457600080fd5b6000614c6284828501614a35565b91505092915050565b600060208284031215614c7d57600080fd5b6000614c8b84828501614a4a565b91505092915050565b600080600060608486031215614ca957600080fd5b6000614cb786828701614a5f565b9350506020614cc886828701614a0b565b9250506040614cd986828701614a74565b9150509250925092565b600060208284031215614cf557600080fd5b6000614d0384828501614a74565b91505092915050565b600080600060608486031215614d2157600080fd5b6000614d2f86828701614a74565b9350506020614d4086828701614a74565b9250506040614d5186828701614a74565b9150509250925092565b600080600060608486031215614d7057600080fd5b6000614d7e86828701614a89565b9350506020614d8f86828701614a89565b9250506040614da086828701614a89565b9150509250925092565b6000614db68383614dc2565b60208301905092915050565b614dcb8161570b565b82525050565b614dda8161570b565b82525050565b6000614deb826155a6565b614df581856155c9565b9350614e0083615596565b8060005b83811015614e31578151614e188882614daa565b9750614e23836155bc565b925050600181019050614e04565b5085935050505092915050565b614e478161571d565b82525050565b614e5681615772565b82525050565b614e6581615796565b82525050565b6000614e76826155b1565b614e8081856155e5565b9350614e908185602086016157a8565b614e998161589a565b840191505092915050565b6000614eb16023836155e5565b9150614ebc826158ab565b604082019050919050565b6000614ed46020836155e5565b9150614edf826158fa565b602082019050919050565b6000614ef7601b836155e5565b9150614f0282615923565b602082019050919050565b6000614f1a6026836155e5565b9150614f258261594c565b604082019050919050565b6000614f3d6022836155e5565b9150614f488261599b565b604082019050919050565b6000614f60601b836155e5565b9150614f6b826159ea565b602082019050919050565b6000614f836024836155e5565b9150614f8e82615a13565b604082019050919050565b6000614fa6600d836155e5565b9150614fb182615a62565b602082019050919050565b6000614fc96028836155e5565b9150614fd482615a8b565b604082019050919050565b6000614fec6021836155e5565b9150614ff782615ada565b604082019050919050565b600061500f6020836155e5565b915061501a82615b29565b602082019050919050565b60006150326029836155e5565b915061503d82615b52565b604082019050919050565b60006150556025836155e5565b915061506082615ba1565b604082019050919050565b60006150786000836155da565b915061508382615bf0565b600082019050919050565b600061509b6024836155e5565b91506150a682615bf3565b604082019050919050565b60006150be602d836155e5565b91506150c982615c42565b604082019050919050565b60006150e16011836155e5565b91506150ec82615c91565b602082019050919050565b6000615104602f836155e5565b915061510f82615cba565b604082019050919050565b60006151276014836155e5565b915061513282615d09565b602082019050919050565b6151468161575b565b82525050565b61515581615765565b82525050565b60006151668261506b565b9150819050919050565b60006020820190506151856000830184614dd1565b92915050565b60006040820190506151a06000830185614dd1565b6151ad6020830184614dd1565b9392505050565b60006040820190506151c96000830185614dd1565b6151d6602083018461513d565b9392505050565b600060c0820190506151f26000830189614dd1565b6151ff602083018861513d565b61520c6040830187614e5c565b6152196060830186614e5c565b6152266080830185614dd1565b61523360a083018461513d565b979650505050505050565b60006020820190506152536000830184614e3e565b92915050565b600060208201905061526e6000830184614e4d565b92915050565b6000602082019050818103600083015261528e8184614e6b565b905092915050565b600060208201905081810360008301526152af81614ea4565b9050919050565b600060208201905081810360008301526152cf81614ec7565b9050919050565b600060208201905081810360008301526152ef81614eea565b9050919050565b6000602082019050818103600083015261530f81614f0d565b9050919050565b6000602082019050818103600083015261532f81614f30565b9050919050565b6000602082019050818103600083015261534f81614f53565b9050919050565b6000602082019050818103600083015261536f81614f76565b9050919050565b6000602082019050818103600083015261538f81614f99565b9050919050565b600060208201905081810360008301526153af81614fbc565b9050919050565b600060208201905081810360008301526153cf81614fdf565b9050919050565b600060208201905081810360008301526153ef81615002565b9050919050565b6000602082019050818103600083015261540f81615025565b9050919050565b6000602082019050818103600083015261542f81615048565b9050919050565b6000602082019050818103600083015261544f8161508e565b9050919050565b6000602082019050818103600083015261546f816150b1565b9050919050565b6000602082019050818103600083015261548f816150d4565b9050919050565b600060208201905081810360008301526154af816150f7565b9050919050565b600060208201905081810360008301526154cf8161511a565b9050919050565b60006020820190506154eb600083018461513d565b92915050565b6000604082019050615506600083018561513d565b81810360208301526155188184614de0565b90509392505050565b600060a082019050615536600083018861513d565b6155436020830187614e5c565b81810360408301526155558186614de0565b90506155646060830185614dd1565b615571608083018461513d565b9695505050505050565b6000602082019050615590600083018461514c565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006156018261575b565b915061560c8361575b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156156415761564061580d565b5b828201905092915050565b60006156578261575b565b91506156628361575b565b9250826156725761567161583c565b5b828204905092915050565b60006156888261575b565b91506156938361575b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156156cc576156cb61580d565b5b828202905092915050565b60006156e28261575b565b91506156ed8361575b565b925082821015615700576156ff61580d565b5b828203905092915050565b60006157168261573b565b9050919050565b60008115159050919050565b60006157348261570b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061577d82615784565b9050919050565b600061578f8261573b565b9050919050565b60006157a18261575b565b9050919050565b60005b838110156157c65780820151818401526020810190506157ab565b838111156157d5576000848401525b50505050565b600060028204905060018216806157f357607f821691505b602082108114156158075761580661586b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204275726e696e672069732043757272656e746c79204f666621600082015250565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4572726f723a20416d6f756e742045786365656465642066726f6d2062616c6160008201527f6e63652100000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20426c61636b6c69737420426f74732f436f6e7472616374732060008201527f6e6f7420416c6c6f776564212100000000000000000000000000000000000000602082015250565b7f4572726f723a204e6f74204368616e6765000000000000000000000000000000600082015250565b7f4572726f723a20426c61636b4c697374204170706c696361626c6520466f722060008201527f426f742f436f6e74726163747321210000000000000000000000000000000000602082015250565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b615d3b8161570b565b8114615d4657600080fd5b50565b615d528161571d565b8114615d5d57600080fd5b50565b615d6981615729565b8114615d7457600080fd5b50565b615d808161575b565b8114615d8b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220353234dc9a0e770b9c30a97e48111a3c04f10b698a6a63212469f66f871d6b3664736f6c63430008040033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c806375f0a874116101c6578063b6970204116100f7578063dbac26e911610095578063ee828db31161006f578063ee828db314610cd7578063f229abbd14610d00578063f2fde38b14610d29578063f872858a14610d5257610376565b8063dbac26e914610c46578063dd62ed3e14610c83578063e6b2603b14610cc057610376565b8063c816841b116100d1578063c816841b14610b8a578063c867d60b14610bb5578063cea9d26f14610bf2578063d2d7ad8314610c1b57610376565b8063b697020414610b0d578063c16dd4a414610b38578063c49b9a8014610b6157610376565b80638f32d59b11610164578063a457c2d71161013e578063a457c2d714610a41578063a9059cbb14610a7e578063ae85ade614610abb578063af9549e014610ae457610376565b80638f32d59b146109c057806395d89b41146109eb57806398e944c814610a1657610376565b8063807c2d9c116101a0578063807c2d9c146109045780638236802e1461092f5780638b42507f146109585780638da5cb5b1461099557610376565b806375f0a874146108855780637b47ec1a146108b05780637d1db4a5146108d957610376565b806338ec0b11116102a05780635881f3ef1161023e578063651a898711610218578063651a8987146107cd57806370a08231146107f6578063728d41c91461083357806375cb1bd11461085c57610376565b80635881f3ef1461073c5780635c85974f146107795780635e42358c146107a257610376565b80633ecad2711161027a5780633ecad2711461066e5780634974d88f146106ab5780634a74bb02146106d45780635342acb4146106ff57610376565b806338ec0b11146105df57806339509351146106085780633b97084a1461064557610376565b80631d865c301161030d57806325519cf2116102e757806325519cf21461053557806327c8f8351461055e5780632b112e4914610589578063313ce567146105b457610376565b80631d865c30146104b857806320365d5f146104e157806323b872dd146104f857610376565b806313ea1d891161034957806313ea1d891461040e5780631694505e1461043757806318160ddd14610462578063185870f91461048d57610376565b806306fdde031461037b5780630930907b146103a6578063095ea7b3146103d157610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d7d565b60405161039d9190615274565b60405180910390f35b3480156103b257600080fd5b506103bb610e0f565b6040516103c89190615170565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190614c06565b610e33565b604051610405919061523e565b60405180910390f35b34801561041a57600080fd5b5061043560048036038101906104309190614bca565b610e51565b005b34801561044357600080fd5b5061044c610fd4565b6040516104599190615259565b60405180910390f35b34801561046e57600080fd5b50610477610ffa565b60405161048491906154d6565b60405180910390f35b34801561049957600080fd5b506104a2611004565b6040516104af9190615170565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da9190614d0c565b61102a565b005b3480156104ed57600080fd5b506104f661110a565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614b7b565b61125f565b60405161052c919061523e565b60405180910390f35b34801561054157600080fd5b5061055c60048036038101906105579190614d0c565b611339565b005b34801561056a57600080fd5b50610573611419565b6040516105809190615170565b60405180910390f35b34801561059557600080fd5b5061059e61143d565b6040516105ab91906154d6565b60405180910390f35b3480156105c057600080fd5b506105c96114bb565b6040516105d6919061557b565b60405180910390f35b3480156105eb57600080fd5b5061060660048036038101906106019190614bca565b6114d2565b005b34801561061457600080fd5b5061062f600480360381019061062a9190614c06565b611655565b60405161063c919061523e565b60405180910390f35b34801561065157600080fd5b5061066c60048036038101906106679190614ce3565b611708565b005b34801561067a57600080fd5b5061069560048036038101906106909190614a9e565b6117a7565b6040516106a2919061523e565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd9190614c42565b6117c7565b005b3480156106e057600080fd5b506106e9611879565b6040516106f6919061523e565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614a9e565b61188c565b604051610733919061523e565b60405180910390f35b34801561074857600080fd5b50610763600480360381019061075e9190614a9e565b6118ac565b6040516107709190615170565b60405180910390f35b34801561078557600080fd5b506107a0600480360381019061079b9190614ce3565b611d90565b005b3480156107ae57600080fd5b506107b7611e2f565b6040516107c4919061523e565b60405180910390f35b3480156107d957600080fd5b506107f460048036038101906107ef9190614bca565b611e42565b005b34801561080257600080fd5b5061081d60048036038101906108189190614a9e565b611fc5565b60405161082a91906154d6565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190614ce3565b61200e565b005b34801561086857600080fd5b50610883600480360381019061087e9190614b2c565b6120ad565b005b34801561089157600080fd5b5061089a61220a565b6040516108a79190615170565b60405180910390f35b3480156108bc57600080fd5b506108d760048036038101906108d29190614ce3565b612230565b005b3480156108e557600080fd5b506108ee612383565b6040516108fb91906154d6565b60405180910390f35b34801561091057600080fd5b50610919612389565b60405161092691906154d6565b60405180910390f35b34801561093b57600080fd5b5061095660048036038101906109519190614bca565b61238f565b005b34801561096457600080fd5b5061097f600480360381019061097a9190614a9e565b6124c7565b60405161098c919061523e565b60405180910390f35b3480156109a157600080fd5b506109aa6124e7565b6040516109b79190615170565b60405180910390f35b3480156109cc57600080fd5b506109d5612510565b6040516109e2919061523e565b60405180910390f35b3480156109f757600080fd5b50610a00612567565b604051610a0d9190615274565b60405180910390f35b348015610a2257600080fd5b50610a2b6125f9565b604051610a389190615170565b60405180910390f35b348015610a4d57600080fd5b50610a686004803603810190610a639190614c06565b61261f565b604051610a75919061523e565b60405180910390f35b348015610a8a57600080fd5b50610aa56004803603810190610aa09190614c06565b6126ec565b604051610ab2919061523e565b60405180910390f35b348015610ac757600080fd5b50610ae26004803603810190610add9190614bca565b61270b565b005b348015610af057600080fd5b50610b0b6004803603810190610b069190614bca565b61288e565b005b348015610b1957600080fd5b50610b22612a11565b604051610b2f919061523e565b60405180910390f35b348015610b4457600080fd5b50610b5f6004803603810190610b5a9190614bca565b612a24565b005b348015610b6d57600080fd5b50610b886004803603810190610b839190614c42565b612b14565b005b348015610b9657600080fd5b50610b9f612bfd565b604051610bac9190615170565b60405180910390f35b348015610bc157600080fd5b50610bdc6004803603810190610bd79190614a9e565b612c23565b604051610be9919061523e565b60405180910390f35b348015610bfe57600080fd5b50610c196004803603810190610c149190614c94565b612c43565b005b348015610c2757600080fd5b50610c30612d6b565b604051610c3d91906154d6565b60405180910390f35b348015610c5257600080fd5b50610c6d6004803603810190610c689190614a9e565b612d71565b604051610c7a919061523e565b60405180910390f35b348015610c8f57600080fd5b50610caa6004803603810190610ca59190614af0565b612d91565b604051610cb791906154d6565b60405180910390f35b348015610ccc57600080fd5b50610cd5612e18565b005b348015610ce357600080fd5b50610cfe6004803603810190610cf99190614c42565b612f5c565b005b348015610d0c57600080fd5b50610d276004803603810190610d229190614c42565b61300e565b005b348015610d3557600080fd5b50610d506004803603810190610d4b9190614a9e565b613116565b005b348015610d5e57600080fd5b50610d676132d8565b604051610d74919061523e565b60405180910390f35b606060018054610d8c906157db565b80601f0160208091040260200160405190810160405280929190818152602001828054610db8906157db565b8015610e055780601f10610dda57610100808354040283529160200191610e05565b820191906000526020600020905b815481529060010190602001808311610de857829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610e47610e4061340e565b8484613416565b6001905092915050565b610e5961340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edd906153d6565b60405180910390fd5b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7090615376565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601654905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61103261340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b6906153d6565b60405180910390fd5b8260108190555081601181905550806012819055506110ff6012546110f16011546010546133b090919063ffffffff16565b6133b090919063ffffffff16565b601481905550505050565b61111261340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611196906153d6565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061126c8484846135e1565b5061132e8461127961340e565b61132985604051806060016040528060288152602001615d8f60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112df61340e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c879092919063ffffffff16565b613416565b600190509392505050565b61134161340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c5906153d6565b60405180910390fd5b82600d8190555081600e8190555080600f8190555061140e600f54611400600e54600d546133b090919063ffffffff16565b6133b090919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006114b661146b7f0000000000000000000000000000000000000000000000000000000000000000611fc5565b6114a86114977f000000000000000000000000000000000000000000000000000000000000dead611fc5565b601654613ceb90919063ffffffff16565b613ceb90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b6114da61340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e906153d6565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f190615376565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006116fe61166261340e565b846116f9856007600061167361340e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b090919063ffffffff16565b613416565b6001905092915050565b61171061340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611794906153d6565b60405180910390fd5b8060178190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b6117cf61340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461185c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611853906153d6565b60405180910390fd5b80601a60026101000a81548160ff02191690831515021790555050565b601b60159054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60006118b661340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a906153d6565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561198e57600080fd5b505afa1580156119a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c69190614ac7565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a2857600080fd5b505afa158015611a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a609190614ac7565b6040518363ffffffff1660e01b8152600401611a7d92919061518b565b60206040518083038186803b158015611a9557600080fd5b505afa158015611aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acd9190614ac7565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c8e578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b4a57600080fd5b505afa158015611b5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b829190614ac7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611be457600080fd5b505afa158015611bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1c9190614ac7565b6040518363ffffffff1660e01b8152600401611c3992919061518b565b602060405180830381600087803b158015611c5357600080fd5b505af1158015611c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8b9190614ac7565b91505b81601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611d9861340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c906153d6565b60405180910390fd5b8060188190555050565b601a60019054906101000a900460ff1681565b611e4a61340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ece906153d6565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6190615376565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61201661340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209a906153d6565b60405180910390fd5b8060198190555050565b6120b561340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612142576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612139906153d6565b60405180910390fd5b82600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000339050601a60009054906101000a900460ff16612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b906152b6565b60405180910390fd5b8161228e82611fc5565b10156122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c690615356565b60405180910390fd5b61232182600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ceb90919063ffffffff16565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061237982601654613ceb90919063ffffffff16565b6016819055505050565b60185481565b60195481565b61239761340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241b906153d6565b60405180910390fd5b61242d82613d35565b61246c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246390615496565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060028054612576906157db565b80601f01602080910402602001604051908101604052809291908181526020018280546125a2906157db565b80156125ef5780601f106125c4576101008083540402835291602001916125ef565b820191906000526020600020905b8154815290600101906020018083116125d257829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006126e261262c61340e565b846126dd85604051806060016040528060258152602001615db7602591396007600061265661340e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c879092919063ffffffff16565b613416565b6001905092915050565b60006127006126f961340e565b84846135e1565b506001905092915050565b61271361340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612797906153d6565b60405180910390fd5b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90615376565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61289661340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291a906153d6565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156129b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ad90615376565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900460ff1681565b612a2c61340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab0906153d6565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612b1c61340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba0906153d6565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612bf2919061523e565b60405180910390a150565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b612c4b61340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccf906153d6565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612d139291906151b4565b602060405180830381600087803b158015612d2d57600080fd5b505af1158015612d41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d659190614c6b565b50505050565b60175481565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612e2061340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea4906153d6565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612ed39061515b565b60006040518083038185875af1925050503d8060008114612f10576040519150601f19603f3d011682016040523d82523d6000602084013e612f15565b606091505b5050905080612f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f50906154b6565b60405180910390fd5b50565b612f6461340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe8906153d6565b60405180910390fd5b80601a60016101000a81548160ff02191690831515021790555050565b61301661340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309a906153d6565b60405180910390fd5b801515601a60009054906101000a900460ff16151514156130f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f090615476565b60405180910390fd5b80601a60006101000a81548160ff02191690831515021790555050565b61311e61340e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a2906153d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561321b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613212906152f6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a60029054906101000a900460ff1681565b6000808314156132fe5760009050613360565b6000828461330c919061567d565b905082848261331b919061564c565b1461335b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613352906153b6565b60405180910390fd5b809150505b92915050565b60006133a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d80565b905092915050565b60008082846133bf91906155f6565b905083811015613404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133fb90615336565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347d90615436565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156134f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ed90615316565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516135d491906154d6565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364990615416565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156136c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136b990615296565b60405180910390fd5b60008211613705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136fc906153f6565b60405180910390fd5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137a95750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6137e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137df90615456565b60405180910390fd5b601b60149054906101000a900460ff161561380f57613808848484613de3565b9050613c80565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138b35750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138cb5750601a60019054906101000a900460ff165b1561391657601854821115613915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161390c90615396565b60405180910390fd5b5b600061392130611fc5565b9050600060175482101590508080156139475750601b60149054906101000a900460ff16155b801561399d5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139b55750601b60159054906101000a900460ff165b156139c3576139c2613fb6565b5b613a4c846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c879092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613a9b8787614224565b613aaf57613aaa87878761438f565b613ab1565b845b9050601a60029054906101000a900460ff168015613b195750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613b7e57601954613b3c82613b2e89611fc5565b6133b090919063ffffffff16565b1115613b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b74906152d6565b60405180910390fd5b5b613bd081600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b090919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c7091906154d6565b60405180910390a3600193505050505b9392505050565b6000838311158290613ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cc69190615274565b60405180910390fd5b5060008385613cde91906156d7565b9050809150509392505050565b6000613d2d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613c87565b905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015613d7757506000801b8214155b92505050919050565b60008083118290613dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dbe9190615274565b60405180910390fd5b5060008385613dd6919061564c565b9050809150509392505050565b6000613e6e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c879092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f0382600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fa391906154d6565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff0219169083151502179055506000613fdc30611fc5565b90506000811415613fed5750614207565b60006140066014546013546133b090919063ffffffff16565b90506000614021601054600d546133b090919063ffffffff16565b9050600061403c601154600e546133b090919063ffffffff16565b90506000614078600261406a8661405c878a6132eb90919063ffffffff16565b61336690919063ffffffff16565b61336690919063ffffffff16565b9050600061408f8287613ceb90919063ffffffff16565b9050600047905061409f826145b4565b60006140b48247613ceb90919063ffffffff16565b905060006140de6140cf60028961336690919063ffffffff16565b89613ceb90919063ffffffff16565b9050600061411a600261410c846140fe8c886132eb90919063ffffffff16565b61336690919063ffffffff16565b61336690919063ffffffff16565b90506000614143836141358a876132eb90919063ffffffff16565b61336690919063ffffffff16565b9050600061416c8261415e8588613ceb90919063ffffffff16565b613ceb90919063ffffffff16565b905060008211156141a4576141a3600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836148b1565b5b60008111156141da576141d9600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826148b1565b5b6000831180156141ea5750600088115b156141fa576141f988846148fc565b5b5050505050505050505050505b6000601b60146101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806142c75750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156142d55760019050614389565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806143765750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156143845760009050614389565b600090505b92915050565b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156144145761440d6015546143ff601354866132eb90919063ffffffff16565b61336690919063ffffffff16565b9050614493565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156144925761448f601554614481601454866132eb90919063ffffffff16565b61336690919063ffffffff16565b90505b5b6000811115614597576144ee81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b090919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161458e91906154d6565b60405180910390a35b6145aa8184613ceb90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156145f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156146255781602001602082028036833780820191505090505b5090503081600081518110614663577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561470557600080fd5b505afa158015614719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061473d9190614ac7565b81600181518110614777577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506147de30601a60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613416565b601a60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614842959493929190615521565b600060405180830381600087803b15801561485c57600080fd5b505af1158015614870573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516148a59291906154f1565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156148f7573d6000803e3d6000fd5b505050565b61492930601a60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613416565b601a60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016149b2969594939291906151dd565b6060604051808303818588803b1580156149cb57600080fd5b505af11580156149df573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614a049190614d5b565b5050505050565b600081359050614a1a81615d32565b92915050565b600081519050614a2f81615d32565b92915050565b600081359050614a4481615d49565b92915050565b600081519050614a5981615d49565b92915050565b600081359050614a6e81615d60565b92915050565b600081359050614a8381615d77565b92915050565b600081519050614a9881615d77565b92915050565b600060208284031215614ab057600080fd5b6000614abe84828501614a0b565b91505092915050565b600060208284031215614ad957600080fd5b6000614ae784828501614a20565b91505092915050565b60008060408385031215614b0357600080fd5b6000614b1185828601614a0b565b9250506020614b2285828601614a0b565b9150509250929050565b600080600060608486031215614b4157600080fd5b6000614b4f86828701614a0b565b9350506020614b6086828701614a0b565b9250506040614b7186828701614a0b565b9150509250925092565b600080600060608486031215614b9057600080fd5b6000614b9e86828701614a0b565b9350506020614baf86828701614a0b565b9250506040614bc086828701614a74565b9150509250925092565b60008060408385031215614bdd57600080fd5b6000614beb85828601614a0b565b9250506020614bfc85828601614a35565b9150509250929050565b60008060408385031215614c1957600080fd5b6000614c2785828601614a0b565b9250506020614c3885828601614a74565b9150509250929050565b600060208284031215614c5457600080fd5b6000614c6284828501614a35565b91505092915050565b600060208284031215614c7d57600080fd5b6000614c8b84828501614a4a565b91505092915050565b600080600060608486031215614ca957600080fd5b6000614cb786828701614a5f565b9350506020614cc886828701614a0b565b9250506040614cd986828701614a74565b9150509250925092565b600060208284031215614cf557600080fd5b6000614d0384828501614a74565b91505092915050565b600080600060608486031215614d2157600080fd5b6000614d2f86828701614a74565b9350506020614d4086828701614a74565b9250506040614d5186828701614a74565b9150509250925092565b600080600060608486031215614d7057600080fd5b6000614d7e86828701614a89565b9350506020614d8f86828701614a89565b9250506040614da086828701614a89565b9150509250925092565b6000614db68383614dc2565b60208301905092915050565b614dcb8161570b565b82525050565b614dda8161570b565b82525050565b6000614deb826155a6565b614df581856155c9565b9350614e0083615596565b8060005b83811015614e31578151614e188882614daa565b9750614e23836155bc565b925050600181019050614e04565b5085935050505092915050565b614e478161571d565b82525050565b614e5681615772565b82525050565b614e6581615796565b82525050565b6000614e76826155b1565b614e8081856155e5565b9350614e908185602086016157a8565b614e998161589a565b840191505092915050565b6000614eb16023836155e5565b9150614ebc826158ab565b604082019050919050565b6000614ed46020836155e5565b9150614edf826158fa565b602082019050919050565b6000614ef7601b836155e5565b9150614f0282615923565b602082019050919050565b6000614f1a6026836155e5565b9150614f258261594c565b604082019050919050565b6000614f3d6022836155e5565b9150614f488261599b565b604082019050919050565b6000614f60601b836155e5565b9150614f6b826159ea565b602082019050919050565b6000614f836024836155e5565b9150614f8e82615a13565b604082019050919050565b6000614fa6600d836155e5565b9150614fb182615a62565b602082019050919050565b6000614fc96028836155e5565b9150614fd482615a8b565b604082019050919050565b6000614fec6021836155e5565b9150614ff782615ada565b604082019050919050565b600061500f6020836155e5565b915061501a82615b29565b602082019050919050565b60006150326029836155e5565b915061503d82615b52565b604082019050919050565b60006150556025836155e5565b915061506082615ba1565b604082019050919050565b60006150786000836155da565b915061508382615bf0565b600082019050919050565b600061509b6024836155e5565b91506150a682615bf3565b604082019050919050565b60006150be602d836155e5565b91506150c982615c42565b604082019050919050565b60006150e16011836155e5565b91506150ec82615c91565b602082019050919050565b6000615104602f836155e5565b915061510f82615cba565b604082019050919050565b60006151276014836155e5565b915061513282615d09565b602082019050919050565b6151468161575b565b82525050565b61515581615765565b82525050565b60006151668261506b565b9150819050919050565b60006020820190506151856000830184614dd1565b92915050565b60006040820190506151a06000830185614dd1565b6151ad6020830184614dd1565b9392505050565b60006040820190506151c96000830185614dd1565b6151d6602083018461513d565b9392505050565b600060c0820190506151f26000830189614dd1565b6151ff602083018861513d565b61520c6040830187614e5c565b6152196060830186614e5c565b6152266080830185614dd1565b61523360a083018461513d565b979650505050505050565b60006020820190506152536000830184614e3e565b92915050565b600060208201905061526e6000830184614e4d565b92915050565b6000602082019050818103600083015261528e8184614e6b565b905092915050565b600060208201905081810360008301526152af81614ea4565b9050919050565b600060208201905081810360008301526152cf81614ec7565b9050919050565b600060208201905081810360008301526152ef81614eea565b9050919050565b6000602082019050818103600083015261530f81614f0d565b9050919050565b6000602082019050818103600083015261532f81614f30565b9050919050565b6000602082019050818103600083015261534f81614f53565b9050919050565b6000602082019050818103600083015261536f81614f76565b9050919050565b6000602082019050818103600083015261538f81614f99565b9050919050565b600060208201905081810360008301526153af81614fbc565b9050919050565b600060208201905081810360008301526153cf81614fdf565b9050919050565b600060208201905081810360008301526153ef81615002565b9050919050565b6000602082019050818103600083015261540f81615025565b9050919050565b6000602082019050818103600083015261542f81615048565b9050919050565b6000602082019050818103600083015261544f8161508e565b9050919050565b6000602082019050818103600083015261546f816150b1565b9050919050565b6000602082019050818103600083015261548f816150d4565b9050919050565b600060208201905081810360008301526154af816150f7565b9050919050565b600060208201905081810360008301526154cf8161511a565b9050919050565b60006020820190506154eb600083018461513d565b92915050565b6000604082019050615506600083018561513d565b81810360208301526155188184614de0565b90509392505050565b600060a082019050615536600083018861513d565b6155436020830187614e5c565b81810360408301526155558186614de0565b90506155646060830185614dd1565b615571608083018461513d565b9695505050505050565b6000602082019050615590600083018461514c565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006156018261575b565b915061560c8361575b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156156415761564061580d565b5b828201905092915050565b60006156578261575b565b91506156628361575b565b9250826156725761567161583c565b5b828204905092915050565b60006156888261575b565b91506156938361575b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156156cc576156cb61580d565b5b828202905092915050565b60006156e28261575b565b91506156ed8361575b565b925082821015615700576156ff61580d565b5b828203905092915050565b60006157168261573b565b9050919050565b60008115159050919050565b60006157348261570b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061577d82615784565b9050919050565b600061578f8261573b565b9050919050565b60006157a18261575b565b9050919050565b60005b838110156157c65780820151818401526020810190506157ab565b838111156157d5576000848401525b50505050565b600060028204905060018216806157f357607f821691505b602082108114156158075761580661586b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204275726e696e672069732043757272656e746c79204f666621600082015250565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4572726f723a20416d6f756e742045786365656465642066726f6d2062616c6160008201527f6e63652100000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20426c61636b6c69737420426f74732f436f6e7472616374732060008201527f6e6f7420416c6c6f776564212100000000000000000000000000000000000000602082015250565b7f4572726f723a204e6f74204368616e6765000000000000000000000000000000600082015250565b7f4572726f723a20426c61636b4c697374204170706c696361626c6520466f722060008201527f426f742f436f6e74726163747321210000000000000000000000000000000000602082015250565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b615d3b8161570b565b8114615d4657600080fd5b50565b615d528161571d565b8114615d5d57600080fd5b50565b615d6981615729565b8114615d7457600080fd5b50565b615d808161575b565b8114615d8b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220353234dc9a0e770b9c30a97e48111a3c04f10b698a6a63212469f66f871d6b3664736f6c63430008040033
Deployed Bytecode Sourcemap
14033:17097:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17932:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14584:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19102:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29749:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15821:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18209:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14373:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27798:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5709:231;;;;;;;;;;;;;:::i;:::-;;20053:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27488:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14496:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19620:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18118:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29543:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18599:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28550:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14862:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30045:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15936:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14805:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30377:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30268:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15738:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29020:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18317:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30154:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28119:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14291:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26354:359;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15531:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15617:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26887:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14973:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5384:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5609:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18023:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14455:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18825:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19878:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29226:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28349:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15701:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29420:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28841:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15869:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14914:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27350:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15461:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15028:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18448:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27134:176;;;;;;;;;;;;;:::i;:::-;;29941:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28680:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5948:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15777:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17932:83;17969:13;18002:5;17995:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17932:83;:::o;14584:81::-;;;:::o;19102:161::-;19177:4;19194:39;19203:12;:10;:12::i;:::-;19217:7;19226:6;19194:8;:39::i;:::-;19251:4;19244:11;;19102:161;;;;:::o;29749:186::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29861:7:::1;29836:32;;:15;:21;29852:4;29836:21;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;29828:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;29920:7;29896:15;:21;29912:4;29896:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;29749:186:::0;;:::o;15821:41::-;;;;;;;;;;;;;:::o;18209:100::-;18262:7;18289:12;;18282:19;;18209:100;:::o;14373:75::-;;;;;;;;;;;;;:::o;27798:313::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27926:6:::1;27906:17;:26;;;;27963:10;27943:17;:30;;;;28004:13;27984:17;:33;;;;28040:63;28085:17;;28040:40;28062:17;;28040;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;28028:9;:75;;;;27798:313:::0;;;:::o;5709:231::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5817:42:::1;5780:81;;5801:6;::::0;::::1;;;;;;;;5780:81;;;;;;;;;;;;5889:42;5872:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;5709:231::o:0;20053:313::-;20151:4;20168:36;20178:6;20186:9;20197:6;20168:9;:36::i;:::-;;20215:121;20224:6;20232:12;:10;:12::i;:::-;20246:89;20284:6;20246:89;;;;;;;;;;;;;;;;;:11;:19;20258:6;20246:19;;;;;;;;;;;;;;;:33;20266:12;:10;:12::i;:::-;20246:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20215:8;:121::i;:::-;20354:4;20347:11;;20053:313;;;;;:::o;27488:302::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27611:6:::1;27592:16;:25;;;;27647:10;27628:16;:29;;;;27687:13;27668:16;:32;;;;27722:60;27765:16;;27722:38;27743:16;;27722;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;27711:8;:71;;;;27488:302:::0;;;:::o;14496:81::-;;;:::o;19620:156::-;19673:7;19700:68;19745:22;19755:11;19745:9;:22::i;:::-;19700:40;19717:22;19727:11;19717:9;:22::i;:::-;19700:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;19693:75;;19620:156;:::o;18118:83::-;18159:5;18184:9;;;;;;;;;;;18177:16;;18118:83;:::o;29543:198::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29663:7:::1;29634:36;;:19;:25;29654:4;29634:25;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;29626:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;29726:7;29698:19;:25;29718:4;29698:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;29543:198:::0;;:::o;18599:218::-;18687:4;18704:83;18713:12;:10;:12::i;:::-;18727:7;18736:50;18775:10;18736:11;:25;18748:12;:10;:12::i;:::-;18736:25;;;;;;;;;;;;;;;:34;18762:7;18736:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18704:8;:83::i;:::-;18805:4;18798:11;;18599:218;;;;:::o;28550:122::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28656:8:::1;28630:23;:34;;;;28550:122:::0;:::o;14862:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;30045:103::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30133:7:::1;30114:16;;:26;;;;;;;;;;;;;;;;;;30045:103:::0;:::o;15936:40::-;;;;;;;;;;;;;:::o;14805:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;30377:748::-;30457:22;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30494:35:::1;30551:16;30494:74;;30617:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30599:53;;;30661:4;30668:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30599:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30582:110;;30734:1;30708:28;;:14;:28;;;30705:225;;;30822:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30804:74;;;30887:4;30894:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30804:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30787:131;;30705:225;30956:14;30942:11;;:28;;;;;;;;;;;;;;;;;;31022:16;31004:15;;:34;;;;;;;;;;;;;;;;;;31113:4;31076:12;:34;31097:11;;;;;;;;;;;31076:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;5588:1;30377:748:::0;;;:::o;30268:101::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30353:8:::1;30338:12;:23;;;;30268:101:::0;:::o;15738:32::-;;;;;;;;;;;;;:::o;29020:198::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29140:7:::1;29111:36;;:19;:25;29131:4;29111:25;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;29103:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;29203:7;29175:19;:25;29195:4;29175:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;29020:198:::0;;:::o;18317:123::-;18383:7;18409:9;:18;18419:7;18409:18;;;;;;;;;;;;;;;;18402:25;;18317:123;;;:::o;30154:106::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30244:8:::1;30231:10;:21;;;;30154:106:::0;:::o;28119:222::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28243:7:::1;28225:15;;:25;;;;;;;;;;;;;;;;;;28279:10;28261:15;;:28;;;;;;;;;;;;;;;;;;28320:13;28300:17;;:33;;;;;;;;;;;;;;;;;;28119:222:::0;;;:::o;14291:75::-;;;;;;;;;;;;;:::o;26354:359::-;26410:15;26428:10;26410:28;;26457:10;;;;;;;;;;;26449:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26544:7;26522:18;26532:7;26522:9;:18::i;:::-;:29;;26514:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;26623:31;26646:7;26623:9;:18;26633:7;26623:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;26602:9;:18;26612:7;26602:18;;;;;;;;;;;;;;;:52;;;;26680:25;26697:7;26680:12;;:16;;:25;;;;:::i;:::-;26665:12;:40;;;;26354:359;;:::o;15531:68::-;;;;:::o;15617:65::-;;;;:::o;26887:206::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26972:24:::1;26991:4;26972:18;:24::i;:::-;26964:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;27078:7;27058:11;:17;27070:4;27058:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;26887:206:::0;;:::o;14973:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;5384:79::-;5422:7;5449:6;;;;;;;;;;;5442:13;;5384:79;:::o;5609:92::-;5649:4;5687:6;;;;;;;;;;;5673:20;;:10;:20;;;5666:27;;5609:92;:::o;18023:87::-;18062:13;18095:7;18088:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18023:87;:::o;14455:32::-;;;;;;;;;;;;;:::o;18825:269::-;18918:4;18935:129;18944:12;:10;:12::i;:::-;18958:7;18967:96;19006:15;18967:96;;;;;;;;;;;;;;;;;:11;:25;18979:12;:10;:12::i;:::-;18967:25;;;;;;;;;;;;;;;:34;18993:7;18967:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18935:8;:129::i;:::-;19082:4;19075:11;;18825:269;;;;:::o;19878:167::-;19956:4;19973:42;19983:12;:10;:12::i;:::-;19997:9;20008:6;19973:9;:42::i;:::-;;20033:4;20026:11;;19878:167;;;;:::o;29226:186::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29338:7:::1;29313:32;;:15;:21;29329:4;29313:21;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;29305:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;29397:7;29373:15;:21;29389:4;29373:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;29226:186:::0;;:::o;28349:193::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28466:7:::1;28439:34;;:17;:23;28457:4;28439:23;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;28431:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;28527:7;28501:17;:23;28519:4;28501:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;28349:193:::0;;:::o;15701:30::-;;;;;;;;;;;;;:::o;29420:117::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29522:7:::1;29500:12;:19;29513:5;29500:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;29420:117:::0;;:::o;28841:171::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28942:8:::1;28918:21;;:32;;;;;;;;;;;;;;;;;;28966:38;28995:8;28966:38;;;;;;:::i;:::-;;;;;;;;28841:171:::0;:::o;15869:26::-;;;;;;;;;;;;;:::o;14914:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;27350:130::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27442:3:::1;:12;;;27455:9;27465:6;27442:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27350:130:::0;;;:::o;15461:61::-;;;;:::o;15028:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;18448:143::-;18529:7;18556:11;:18;18568:5;18556:18;;;;;;;;;;;;;;;:27;18575:7;18556:27;;;;;;;;;;;;;;;;18549:34;;18448:143;;;;:::o;27134:176::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27187:7:::1;27207:10;27199:24;;27231:21;27199:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27186:71;;;27276:2;27268:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;5588:1;27134:176::o:0;29941:96::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30022:7:::1;30006:13;;:23;;;;;;;;;;;;;;;;;;29941:96:::0;:::o;28680:153::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28766:7:::1;28752:21;;:10;;;;;;;;;;;:21;;;;28744:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;28818:7;28805:10;;:20;;;;;;;;;;;;;;;;;;28680:153:::0;:::o;5948:244::-;5528:12;:10;:12::i;:::-;5518:22;;:6;;;;;;;;;;:22;;;5510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6057:1:::1;6037:22;;:8;:22;;;;6029:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6147:8;6118:38;;6139:6;::::0;::::1;;;;;;;;6118:38;;;;;;;;;;;;6176:8;6167:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5948:244:::0;:::o;15777:35::-;;;;;;;;;;;;;:::o;1694:250::-;1752:7;1781:1;1776;:6;1772:47;;;1806:1;1799:8;;;;1772:47;1831:9;1847:1;1843;:5;;;;:::i;:::-;1831:17;;1876:1;1871;1867;:5;;;;:::i;:::-;:10;1859:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1935:1;1928:8;;;1694:250;;;;;:::o;1952:132::-;2010:7;2037:39;2041:1;2044;2037:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2030:46;;1952:132;;;;:::o;1161:181::-;1219:7;1239:9;1255:1;1251;:5;;;;:::i;:::-;1239:17;;1280:1;1275;:6;;1267:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1333:1;1326:8;;;1161:181;;;;:::o;212:115::-;265:15;308:10;293:26;;212:115;:::o;19271:337::-;19381:1;19364:19;;:5;:19;;;;19356:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19462:1;19443:21;;:7;:21;;;;19435:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19546:6;19516:11;:18;19528:5;19516:18;;;;;;;;;;;;;;;:27;19535:7;19516:27;;;;;;;;;;;;;;;:36;;;;19584:7;19568:32;;19577:5;19568:32;;;19593:6;19568:32;;;;;;:::i;:::-;;;;;;;;19271:337;;;:::o;20374:1751::-;20461:4;20506:1;20488:20;;:6;:20;;;;20480:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;20590:1;20569:23;;:9;:23;;;;20561:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20660:1;20651:6;:10;20643:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20727:11;:19;20739:6;20727:19;;;;;;;;;;;;;;;;;;;;;;;;;20726:20;:47;;;;;20751:11;:22;20763:9;20751:22;;;;;;;;;;;;;;;;;;;;;;;;;20750:23;20726:47;20718:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;20848:16;;;;;;;;;;;20845:1273;;;20898:41;20913:6;20921:9;20932:6;20898:14;:41::i;:::-;20891:48;;;;20845:1273;20997:15;:23;21013:6;20997:23;;;;;;;;;;;;;;;;;;;;;;;;;20996:24;:55;;;;;21025:15;:26;21041:9;21025:26;;;;;;;;;;;;;;;;;;;;;;;;;21024:27;20996:55;:72;;;;;21055:13;;;;;;;;;;;20996:72;20993:187;;;21107:12;;21097:6;:22;;21089:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;20993:187;21197:28;21228:24;21246:4;21228:9;:24::i;:::-;21197:55;;21267:28;21322:23;;21298:20;:47;;21267:78;;21378:23;:44;;;;;21406:16;;;;;;;;;;;21405:17;21378:44;:69;;;;;21427:12;:20;21440:6;21427:20;;;;;;;;;;;;;;;;;;;;;;;;;21426:21;21378:69;:94;;;;;21451:21;;;;;;;;;;;21378:94;21374:165;;;21507:16;:14;:16::i;:::-;21374:165;21575:53;21597:6;21575:53;;;;;;;;;;;;;;;;;:9;:17;21585:6;21575:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;21555:9;:17;21565:6;21555:17;;;;;;;;;;;;;;;:73;;;;21645:19;21667:31;21681:6;21688:9;21667:13;:31::i;:::-;:77;;21710:34;21718:6;21726:9;21737:6;21710:7;:34::i;:::-;21667:77;;;21701:6;21667:77;21645:99;;21764:16;;;;;;;;;;;:51;;;;;21785:19;:30;21805:9;21785:30;;;;;;;;;;;;;;;;;;;;;;;;;21784:31;21764:51;21761:181;;;21885:10;;21844:37;21869:11;21844:20;21854:9;21844;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;21836:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;21761:181;21981:37;22006:11;21981:9;:20;21991:9;21981:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;21958:9;:20;21968:9;21958:20;;;;;;;;;;;;;;;:60;;;;22057:9;22040:40;;22049:6;22040:40;;;22068:11;22040:40;;;;;;:::i;:::-;;;;;;;;22102:4;22095:11;;;;;20374:1751;;;;;;:::o;1494:192::-;1580:7;1613:1;1608;:6;;1616:12;1600:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1640:9;1656:1;1652;:5;;;;:::i;:::-;1640:17;;1677:1;1670:8;;;1494:192;;;;;:::o;1350:136::-;1408:7;1435:43;1439:1;1442;1435:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1428:50;;1350:136;;;;:::o;2714:357::-;2774:4;2795:16;2822:19;2844:66;2822:88;;;;2992:7;2980:20;2968:32;;3032:11;3020:8;:23;;:42;;;;;3059:3;3047:15;;:8;:15;;3020:42;3012:51;;;;2714:357;;;:::o;2092:278::-;2178:7;2210:1;2206;:5;2213:12;2198:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2237:9;2253:1;2249;:5;;;;:::i;:::-;2237:17;;2361:1;2354:8;;;2092:278;;;;;:::o;22133:330::-;22226:4;22263:53;22285:6;22263:53;;;;;;;;;;;;;;;;;:9;:17;22273:6;22263:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22243:9;:17;22253:6;22243:17;;;;;;;;;;;;;;;:73;;;;22350:32;22375:6;22350:9;:20;22360:9;22350:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;22327:9;:20;22337:9;22327:20;;;;;;;;;;;;;;;:55;;;;22415:9;22398:35;;22407:6;22398:35;;;22426:6;22398:35;;;;;;:::i;:::-;;;;;;;;22451:4;22444:11;;22133:330;;;;;:::o;22471:1425::-;16420:4;16401:16;;:23;;;;;;;;;;;;;;;;;;22530::::1;22556:24;22574:4;22556:9;:24::i;:::-;22530:50;;22615:1;22596:15;:20;22593:32;;;22618:7;;;22593:32;22637:19;22659:23;22672:9;;22659:8;;:12;;:23;;;;:::i;:::-;22637:45;;22693:23;22719:39;22740:17;;22719:16;;:20;;:39;;;;:::i;:::-;22693:65;;22769:23;22795:39;22816:17;;22795:16;;:20;;:39;;;;:::i;:::-;22769:65;;22847:19;22869:60;22927:1;22869:53;22910:11;22869:36;22889:15;22869;:19;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;22847:82;;22940:21;22964:32;22984:11;22964:15;:19;;:32;;;;:::i;:::-;22940:56;;23009:22;23034:21;23009:46;;23066:31;23083:13;23066:16;:31::i;:::-;23108:22;23133:41;23159:14;23133:21;:25;;:41;;;;:::i;:::-;23108:66;;23187:19;23209:39;23225:22;23245:1;23225:15;:19;;:22;;;;:::i;:::-;23209:11;:15;;:39;;;;:::i;:::-;23187:61;;23269:26;23298:59;23355:1;23298:52;23338:11;23298:35;23317:15;23298:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;23269:88;;23368:26;23397:52;23437:11;23397:35;23416:15;23397:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;23368:81;;23460:26;23489:62;23532:18;23489:38;23508:18;23489:14;:18;;:38;;;;:::i;:::-;:42;;:62;;;;:::i;:::-;23460:91;;23588:1;23567:18;:22;23564:97;;;23604:57;23625:15;;;;;;;;;;;23642:18;23604:20;:57::i;:::-;23564:97;23698:1;23677:18;:22;23674:97;;;23714:57;23735:15;;;;;;;;;;;23752:18;23714:20;:57::i;:::-;23674:97;23808:1;23787:18;:22;:41;;;;;23827:1;23813:11;:15;23787:41;23784:104;;;23843:45;23856:11;23869:18;23843:12;:45::i;:::-;23784:104;16435:1;;;;;;;;;;;;;16466:5:::0;16447:16;;:24;;;;;;;;;;;;;;;;;;22471:1425::o;25248:366::-;25329:4;25349:17;:25;25367:6;25349:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;25378:17;:28;25396:9;25378:28;;;;;;;;;;;;;;;;;;;;;;;;;25349:57;25346:261;;;25430:4;25423:11;;;;25346:261;25465:12;:20;25478:6;25465:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;25489:12;:23;25502:9;25489:23;;;;;;;;;;;;;;;;;;;;;;;;;25465:47;25461:146;;;25536:5;25529:12;;;;25461:146;25590:5;25583:12;;25248:366;;;;;:::o;25622:724::-;25708:7;25738:14;25795:12;:20;25808:6;25795:20;;;;;;;;;;;;;;;;;;;;;;;;;25792:275;;;25862:37;25887:11;;25862:20;25873:8;;25862:6;:10;;:20;;;;:::i;:::-;:24;;:37;;;;:::i;:::-;25850:49;;25792:275;;;25937:12;:23;25950:9;25937:23;;;;;;;;;;;;;;;;;;;;;;;;;25934:133;;;25995:38;26021:11;;25995:21;26006:9;;25995:6;:10;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;25983:50;;25934:133;25792:275;26103:1;26091:9;:13;26088:185;;;26152:39;26181:9;26152;:24;26170:4;26152:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;26125:9;:24;26143:4;26125:24;;;;;;;;;;;;;;;:66;;;;26240:4;26215:42;;26224:6;26215:42;;;26247:9;26215:42;;;;;;:::i;:::-;;;;;;;;26088:185;26296:21;26307:9;26296:6;:10;;:21;;;;:::i;:::-;26289:28;;;25622:724;;;;;:::o;24043:666::-;24169:21;24207:1;24193:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24169:40;;24238:4;24220;24225:1;24220:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;24264:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24254:4;24259:1;24254:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;24299:62;24316:4;24331:15;;;;;;;;;;;24349:11;24299:8;:62::i;:::-;24400:15;;;;;;;;;;;:66;;;24481:11;24507:1;24551:4;24578;24614:15;24400:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24666:35;24683:11;24696:4;24666:35;;;;;;;:::i;:::-;;;;;;;;24043:666;;:::o;23904:127::-;23996:9;23988:27;;:35;24016:6;23988:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23904:127;;:::o;24717:523::-;24865:62;24882:4;24897:15;;;;;;;;;;;24915:11;24865:8;:62::i;:::-;24970:15;;;;;;;;;;;:31;;;25009:9;25042:4;25062:11;25088:1;25131;25174:17;;;;;;;;;;;25206:15;24970:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24717:523;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;500:77;;;;:::o;583:165::-;642:5;680:6;667:20;658:29;;696:46;736:5;696:46;:::i;:::-;648:100;;;;:::o;754:139::-;800:5;838:6;825:20;816:29;;854:33;881:5;854:33;:::i;:::-;806:87;;;;:::o;899:143::-;956:5;987:6;981:13;972:22;;1003:33;1030:5;1003:33;:::i;:::-;962:80;;;;:::o;1048:262::-;1107:6;1156:2;1144:9;1135:7;1131:23;1127:32;1124:2;;;1172:1;1169;1162:12;1124:2;1215:1;1240:53;1285:7;1276:6;1265:9;1261:22;1240:53;:::i;:::-;1230:63;;1186:117;1114:196;;;;:::o;1316:284::-;1386:6;1435:2;1423:9;1414:7;1410:23;1406:32;1403:2;;;1451:1;1448;1441:12;1403:2;1494:1;1519:64;1575:7;1566:6;1555:9;1551:22;1519:64;:::i;:::-;1509:74;;1465:128;1393:207;;;;:::o;1606:407::-;1674:6;1682;1731:2;1719:9;1710:7;1706:23;1702:32;1699:2;;;1747:1;1744;1737:12;1699:2;1790:1;1815:53;1860:7;1851:6;1840:9;1836:22;1815:53;:::i;:::-;1805:63;;1761:117;1917:2;1943:53;1988:7;1979:6;1968:9;1964:22;1943:53;:::i;:::-;1933:63;;1888:118;1689:324;;;;;:::o;2019:552::-;2096:6;2104;2112;2161:2;2149:9;2140:7;2136:23;2132:32;2129:2;;;2177:1;2174;2167:12;2129:2;2220:1;2245:53;2290:7;2281:6;2270:9;2266:22;2245:53;:::i;:::-;2235:63;;2191:117;2347:2;2373:53;2418:7;2409:6;2398:9;2394:22;2373:53;:::i;:::-;2363:63;;2318:118;2475:2;2501:53;2546:7;2537:6;2526:9;2522:22;2501:53;:::i;:::-;2491:63;;2446:118;2119:452;;;;;:::o;2577:552::-;2654:6;2662;2670;2719:2;2707:9;2698:7;2694:23;2690:32;2687:2;;;2735:1;2732;2725:12;2687:2;2778:1;2803:53;2848:7;2839:6;2828:9;2824:22;2803:53;:::i;:::-;2793:63;;2749:117;2905:2;2931:53;2976:7;2967:6;2956:9;2952:22;2931:53;:::i;:::-;2921:63;;2876:118;3033:2;3059:53;3104:7;3095:6;3084:9;3080:22;3059:53;:::i;:::-;3049:63;;3004:118;2677:452;;;;;:::o;3135:401::-;3200:6;3208;3257:2;3245:9;3236:7;3232:23;3228:32;3225:2;;;3273:1;3270;3263:12;3225:2;3316:1;3341:53;3386:7;3377:6;3366:9;3362:22;3341:53;:::i;:::-;3331:63;;3287:117;3443:2;3469:50;3511:7;3502:6;3491:9;3487:22;3469:50;:::i;:::-;3459:60;;3414:115;3215:321;;;;;:::o;3542:407::-;3610:6;3618;3667:2;3655:9;3646:7;3642:23;3638:32;3635:2;;;3683:1;3680;3673:12;3635:2;3726:1;3751:53;3796:7;3787:6;3776:9;3772:22;3751:53;:::i;:::-;3741:63;;3697:117;3853:2;3879:53;3924:7;3915:6;3904:9;3900:22;3879:53;:::i;:::-;3869:63;;3824:118;3625:324;;;;;:::o;3955:256::-;4011:6;4060:2;4048:9;4039:7;4035:23;4031:32;4028:2;;;4076:1;4073;4066:12;4028:2;4119:1;4144:50;4186:7;4177:6;4166:9;4162:22;4144:50;:::i;:::-;4134:60;;4090:114;4018:193;;;;:::o;4217:278::-;4284:6;4333:2;4321:9;4312:7;4308:23;4304:32;4301:2;;;4349:1;4346;4339:12;4301:2;4392:1;4417:61;4470:7;4461:6;4450:9;4446:22;4417:61;:::i;:::-;4407:71;;4363:125;4291:204;;;;:::o;4501:578::-;4591:6;4599;4607;4656:2;4644:9;4635:7;4631:23;4627:32;4624:2;;;4672:1;4669;4662:12;4624:2;4715:1;4740:66;4798:7;4789:6;4778:9;4774:22;4740:66;:::i;:::-;4730:76;;4686:130;4855:2;4881:53;4926:7;4917:6;4906:9;4902:22;4881:53;:::i;:::-;4871:63;;4826:118;4983:2;5009:53;5054:7;5045:6;5034:9;5030:22;5009:53;:::i;:::-;4999:63;;4954:118;4614:465;;;;;:::o;5085:262::-;5144:6;5193:2;5181:9;5172:7;5168:23;5164:32;5161:2;;;5209:1;5206;5199:12;5161:2;5252:1;5277:53;5322:7;5313:6;5302:9;5298:22;5277:53;:::i;:::-;5267:63;;5223:117;5151:196;;;;:::o;5353:552::-;5430:6;5438;5446;5495:2;5483:9;5474:7;5470:23;5466:32;5463:2;;;5511:1;5508;5501:12;5463:2;5554:1;5579:53;5624:7;5615:6;5604:9;5600:22;5579:53;:::i;:::-;5569:63;;5525:117;5681:2;5707:53;5752:7;5743:6;5732:9;5728:22;5707:53;:::i;:::-;5697:63;;5652:118;5809:2;5835:53;5880:7;5871:6;5860:9;5856:22;5835:53;:::i;:::-;5825:63;;5780:118;5453:452;;;;;:::o;5911:596::-;5999:6;6007;6015;6064:2;6052:9;6043:7;6039:23;6035:32;6032:2;;;6080:1;6077;6070:12;6032:2;6123:1;6148:64;6204:7;6195:6;6184:9;6180:22;6148:64;:::i;:::-;6138:74;;6094:128;6261:2;6287:64;6343:7;6334:6;6323:9;6319:22;6287:64;:::i;:::-;6277:74;;6232:129;6400:2;6426:64;6482:7;6473:6;6462:9;6458:22;6426:64;:::i;:::-;6416:74;;6371:129;6022:485;;;;;:::o;6513:179::-;6582:10;6603:46;6645:3;6637:6;6603:46;:::i;:::-;6681:4;6676:3;6672:14;6658:28;;6593:99;;;;:::o;6698:108::-;6775:24;6793:5;6775:24;:::i;:::-;6770:3;6763:37;6753:53;;:::o;6812:118::-;6899:24;6917:5;6899:24;:::i;:::-;6894:3;6887:37;6877:53;;:::o;6966:732::-;7085:3;7114:54;7162:5;7114:54;:::i;:::-;7184:86;7263:6;7258:3;7184:86;:::i;:::-;7177:93;;7294:56;7344:5;7294:56;:::i;:::-;7373:7;7404:1;7389:284;7414:6;7411:1;7408:13;7389:284;;;7490:6;7484:13;7517:63;7576:3;7561:13;7517:63;:::i;:::-;7510:70;;7603:60;7656:6;7603:60;:::i;:::-;7593:70;;7449:224;7436:1;7433;7429:9;7424:14;;7389:284;;;7393:14;7689:3;7682:10;;7090:608;;;;;;;:::o;7704:109::-;7785:21;7800:5;7785:21;:::i;:::-;7780:3;7773:34;7763:50;;:::o;7819:185::-;7933:64;7991:5;7933:64;:::i;:::-;7928:3;7921:77;7911:93;;:::o;8010:147::-;8105:45;8144:5;8105:45;:::i;:::-;8100:3;8093:58;8083:74;;:::o;8163:364::-;8251:3;8279:39;8312:5;8279:39;:::i;:::-;8334:71;8398:6;8393:3;8334:71;:::i;:::-;8327:78;;8414:52;8459:6;8454:3;8447:4;8440:5;8436:16;8414:52;:::i;:::-;8491:29;8513:6;8491:29;:::i;:::-;8486:3;8482:39;8475:46;;8255:272;;;;;:::o;8533:366::-;8675:3;8696:67;8760:2;8755:3;8696:67;:::i;:::-;8689:74;;8772:93;8861:3;8772:93;:::i;:::-;8890:2;8885:3;8881:12;8874:19;;8679:220;;;:::o;8905:366::-;9047:3;9068:67;9132:2;9127:3;9068:67;:::i;:::-;9061:74;;9144:93;9233:3;9144:93;:::i;:::-;9262:2;9257:3;9253:12;9246:19;;9051:220;;;:::o;9277:366::-;9419:3;9440:67;9504:2;9499:3;9440:67;:::i;:::-;9433:74;;9516:93;9605:3;9516:93;:::i;:::-;9634:2;9629:3;9625:12;9618:19;;9423:220;;;:::o;9649:366::-;9791:3;9812:67;9876:2;9871:3;9812:67;:::i;:::-;9805:74;;9888:93;9977:3;9888:93;:::i;:::-;10006:2;10001:3;9997:12;9990:19;;9795:220;;;:::o;10021:366::-;10163:3;10184:67;10248:2;10243:3;10184:67;:::i;:::-;10177:74;;10260:93;10349:3;10260:93;:::i;:::-;10378:2;10373:3;10369:12;10362:19;;10167:220;;;:::o;10393:366::-;10535:3;10556:67;10620:2;10615:3;10556:67;:::i;:::-;10549:74;;10632:93;10721:3;10632:93;:::i;:::-;10750:2;10745:3;10741:12;10734:19;;10539:220;;;:::o;10765:366::-;10907:3;10928:67;10992:2;10987:3;10928:67;:::i;:::-;10921:74;;11004:93;11093:3;11004:93;:::i;:::-;11122:2;11117:3;11113:12;11106:19;;10911:220;;;:::o;11137:366::-;11279:3;11300:67;11364:2;11359:3;11300:67;:::i;:::-;11293:74;;11376:93;11465:3;11376:93;:::i;:::-;11494:2;11489:3;11485:12;11478:19;;11283:220;;;:::o;11509:366::-;11651:3;11672:67;11736:2;11731:3;11672:67;:::i;:::-;11665:74;;11748:93;11837:3;11748:93;:::i;:::-;11866:2;11861:3;11857:12;11850:19;;11655:220;;;:::o;11881:366::-;12023:3;12044:67;12108:2;12103:3;12044:67;:::i;:::-;12037:74;;12120:93;12209:3;12120:93;:::i;:::-;12238:2;12233:3;12229:12;12222:19;;12027:220;;;:::o;12253:366::-;12395:3;12416:67;12480:2;12475:3;12416:67;:::i;:::-;12409:74;;12492:93;12581:3;12492:93;:::i;:::-;12610:2;12605:3;12601:12;12594:19;;12399:220;;;:::o;12625:366::-;12767:3;12788:67;12852:2;12847:3;12788:67;:::i;:::-;12781:74;;12864:93;12953:3;12864:93;:::i;:::-;12982:2;12977:3;12973:12;12966:19;;12771:220;;;:::o;12997:366::-;13139:3;13160:67;13224:2;13219:3;13160:67;:::i;:::-;13153:74;;13236:93;13325:3;13236:93;:::i;:::-;13354:2;13349:3;13345:12;13338:19;;13143:220;;;:::o;13369:398::-;13528:3;13549:83;13630:1;13625:3;13549:83;:::i;:::-;13542:90;;13641:93;13730:3;13641:93;:::i;:::-;13759:1;13754:3;13750:11;13743:18;;13532:235;;;:::o;13773:366::-;13915:3;13936:67;14000:2;13995:3;13936:67;:::i;:::-;13929:74;;14012:93;14101:3;14012:93;:::i;:::-;14130:2;14125:3;14121:12;14114:19;;13919:220;;;:::o;14145:366::-;14287:3;14308:67;14372:2;14367:3;14308:67;:::i;:::-;14301:74;;14384:93;14473:3;14384:93;:::i;:::-;14502:2;14497:3;14493:12;14486:19;;14291:220;;;:::o;14517:366::-;14659:3;14680:67;14744:2;14739:3;14680:67;:::i;:::-;14673:74;;14756:93;14845:3;14756:93;:::i;:::-;14874:2;14869:3;14865:12;14858:19;;14663:220;;;:::o;14889:366::-;15031:3;15052:67;15116:2;15111:3;15052:67;:::i;:::-;15045:74;;15128:93;15217:3;15128:93;:::i;:::-;15246:2;15241:3;15237:12;15230:19;;15035:220;;;:::o;15261:366::-;15403:3;15424:67;15488:2;15483:3;15424:67;:::i;:::-;15417:74;;15500:93;15589:3;15500:93;:::i;:::-;15618:2;15613:3;15609:12;15602:19;;15407:220;;;:::o;15633:118::-;15720:24;15738:5;15720:24;:::i;:::-;15715:3;15708:37;15698:53;;:::o;15757:112::-;15840:22;15856:5;15840:22;:::i;:::-;15835:3;15828:35;15818:51;;:::o;15875:379::-;16059:3;16081:147;16224:3;16081:147;:::i;:::-;16074:154;;16245:3;16238:10;;16063:191;;;:::o;16260:222::-;16353:4;16391:2;16380:9;16376:18;16368:26;;16404:71;16472:1;16461:9;16457:17;16448:6;16404:71;:::i;:::-;16358:124;;;;:::o;16488:332::-;16609:4;16647:2;16636:9;16632:18;16624:26;;16660:71;16728:1;16717:9;16713:17;16704:6;16660:71;:::i;:::-;16741:72;16809:2;16798:9;16794:18;16785:6;16741:72;:::i;:::-;16614:206;;;;;:::o;16826:332::-;16947:4;16985:2;16974:9;16970:18;16962:26;;16998:71;17066:1;17055:9;17051:17;17042:6;16998:71;:::i;:::-;17079:72;17147:2;17136:9;17132:18;17123:6;17079:72;:::i;:::-;16952:206;;;;;:::o;17164:807::-;17413:4;17451:3;17440:9;17436:19;17428:27;;17465:71;17533:1;17522:9;17518:17;17509:6;17465:71;:::i;:::-;17546:72;17614:2;17603:9;17599:18;17590:6;17546:72;:::i;:::-;17628:80;17704:2;17693:9;17689:18;17680:6;17628:80;:::i;:::-;17718;17794:2;17783:9;17779:18;17770:6;17718:80;:::i;:::-;17808:73;17876:3;17865:9;17861:19;17852:6;17808:73;:::i;:::-;17891;17959:3;17948:9;17944:19;17935:6;17891:73;:::i;:::-;17418:553;;;;;;;;;:::o;17977:210::-;18064:4;18102:2;18091:9;18087:18;18079:26;;18115:65;18177:1;18166:9;18162:17;18153:6;18115:65;:::i;:::-;18069:118;;;;:::o;18193:276::-;18313:4;18351:2;18340:9;18336:18;18328:26;;18364:98;18459:1;18448:9;18444:17;18435:6;18364:98;:::i;:::-;18318:151;;;;:::o;18475:313::-;18588:4;18626:2;18615:9;18611:18;18603:26;;18675:9;18669:4;18665:20;18661:1;18650:9;18646:17;18639:47;18703:78;18776:4;18767:6;18703:78;:::i;:::-;18695:86;;18593:195;;;;:::o;18794:419::-;18960:4;18998:2;18987:9;18983:18;18975:26;;19047:9;19041:4;19037:20;19033:1;19022:9;19018:17;19011:47;19075:131;19201:4;19075:131;:::i;:::-;19067:139;;18965:248;;;:::o;19219:419::-;19385:4;19423:2;19412:9;19408:18;19400:26;;19472:9;19466:4;19462:20;19458:1;19447:9;19443:17;19436:47;19500:131;19626:4;19500:131;:::i;:::-;19492:139;;19390:248;;;:::o;19644:419::-;19810:4;19848:2;19837:9;19833:18;19825:26;;19897:9;19891:4;19887:20;19883:1;19872:9;19868:17;19861:47;19925:131;20051:4;19925:131;:::i;:::-;19917:139;;19815:248;;;:::o;20069:419::-;20235:4;20273:2;20262:9;20258:18;20250:26;;20322:9;20316:4;20312:20;20308:1;20297:9;20293:17;20286:47;20350:131;20476:4;20350:131;:::i;:::-;20342:139;;20240:248;;;:::o;20494:419::-;20660:4;20698:2;20687:9;20683:18;20675:26;;20747:9;20741:4;20737:20;20733:1;20722:9;20718:17;20711:47;20775:131;20901:4;20775:131;:::i;:::-;20767:139;;20665:248;;;:::o;20919:419::-;21085:4;21123:2;21112:9;21108:18;21100:26;;21172:9;21166:4;21162:20;21158:1;21147:9;21143:17;21136:47;21200:131;21326:4;21200:131;:::i;:::-;21192:139;;21090:248;;;:::o;21344:419::-;21510:4;21548:2;21537:9;21533:18;21525:26;;21597:9;21591:4;21587:20;21583:1;21572:9;21568:17;21561:47;21625:131;21751:4;21625:131;:::i;:::-;21617:139;;21515:248;;;:::o;21769:419::-;21935:4;21973:2;21962:9;21958:18;21950:26;;22022:9;22016:4;22012:20;22008:1;21997:9;21993:17;21986:47;22050:131;22176:4;22050:131;:::i;:::-;22042:139;;21940:248;;;:::o;22194:419::-;22360:4;22398:2;22387:9;22383:18;22375:26;;22447:9;22441:4;22437:20;22433:1;22422:9;22418:17;22411:47;22475:131;22601:4;22475:131;:::i;:::-;22467:139;;22365:248;;;:::o;22619:419::-;22785:4;22823:2;22812:9;22808:18;22800:26;;22872:9;22866:4;22862:20;22858:1;22847:9;22843:17;22836:47;22900:131;23026:4;22900:131;:::i;:::-;22892:139;;22790:248;;;:::o;23044:419::-;23210:4;23248:2;23237:9;23233:18;23225:26;;23297:9;23291:4;23287:20;23283:1;23272:9;23268:17;23261:47;23325:131;23451:4;23325:131;:::i;:::-;23317:139;;23215:248;;;:::o;23469:419::-;23635:4;23673:2;23662:9;23658:18;23650:26;;23722:9;23716:4;23712:20;23708:1;23697:9;23693:17;23686:47;23750:131;23876:4;23750:131;:::i;:::-;23742:139;;23640:248;;;:::o;23894:419::-;24060:4;24098:2;24087:9;24083:18;24075:26;;24147:9;24141:4;24137:20;24133:1;24122:9;24118:17;24111:47;24175:131;24301:4;24175:131;:::i;:::-;24167:139;;24065:248;;;:::o;24319:419::-;24485:4;24523:2;24512:9;24508:18;24500:26;;24572:9;24566:4;24562:20;24558:1;24547:9;24543:17;24536:47;24600:131;24726:4;24600:131;:::i;:::-;24592:139;;24490:248;;;:::o;24744:419::-;24910:4;24948:2;24937:9;24933:18;24925:26;;24997:9;24991:4;24987:20;24983:1;24972:9;24968:17;24961:47;25025:131;25151:4;25025:131;:::i;:::-;25017:139;;24915:248;;;:::o;25169:419::-;25335:4;25373:2;25362:9;25358:18;25350:26;;25422:9;25416:4;25412:20;25408:1;25397:9;25393:17;25386:47;25450:131;25576:4;25450:131;:::i;:::-;25442:139;;25340:248;;;:::o;25594:419::-;25760:4;25798:2;25787:9;25783:18;25775:26;;25847:9;25841:4;25837:20;25833:1;25822:9;25818:17;25811:47;25875:131;26001:4;25875:131;:::i;:::-;25867:139;;25765:248;;;:::o;26019:419::-;26185:4;26223:2;26212:9;26208:18;26200:26;;26272:9;26266:4;26262:20;26258:1;26247:9;26243:17;26236:47;26300:131;26426:4;26300:131;:::i;:::-;26292:139;;26190:248;;;:::o;26444:222::-;26537:4;26575:2;26564:9;26560:18;26552:26;;26588:71;26656:1;26645:9;26641:17;26632:6;26588:71;:::i;:::-;26542:124;;;;:::o;26672:483::-;26843:4;26881:2;26870:9;26866:18;26858:26;;26894:71;26962:1;26951:9;26947:17;26938:6;26894:71;:::i;:::-;27012:9;27006:4;27002:20;26997:2;26986:9;26982:18;26975:48;27040:108;27143:4;27134:6;27040:108;:::i;:::-;27032:116;;26848:307;;;;;:::o;27161:831::-;27424:4;27462:3;27451:9;27447:19;27439:27;;27476:71;27544:1;27533:9;27529:17;27520:6;27476:71;:::i;:::-;27557:80;27633:2;27622:9;27618:18;27609:6;27557:80;:::i;:::-;27684:9;27678:4;27674:20;27669:2;27658:9;27654:18;27647:48;27712:108;27815:4;27806:6;27712:108;:::i;:::-;27704:116;;27830:72;27898:2;27887:9;27883:18;27874:6;27830:72;:::i;:::-;27912:73;27980:3;27969:9;27965:19;27956:6;27912:73;:::i;:::-;27429:563;;;;;;;;:::o;27998:214::-;28087:4;28125:2;28114:9;28110:18;28102:26;;28138:67;28202:1;28191:9;28187:17;28178:6;28138:67;:::i;:::-;28092:120;;;;:::o;28218:132::-;28285:4;28308:3;28300:11;;28338:4;28333:3;28329:14;28321:22;;28290:60;;;:::o;28356:114::-;28423:6;28457:5;28451:12;28441:22;;28430:40;;;:::o;28476:99::-;28528:6;28562:5;28556:12;28546:22;;28535:40;;;:::o;28581:113::-;28651:4;28683;28678:3;28674:14;28666:22;;28656:38;;;:::o;28700:184::-;28799:11;28833:6;28828:3;28821:19;28873:4;28868:3;28864:14;28849:29;;28811:73;;;;:::o;28890:147::-;28991:11;29028:3;29013:18;;29003:34;;;;:::o;29043:169::-;29127:11;29161:6;29156:3;29149:19;29201:4;29196:3;29192:14;29177:29;;29139:73;;;;:::o;29218:305::-;29258:3;29277:20;29295:1;29277:20;:::i;:::-;29272:25;;29311:20;29329:1;29311:20;:::i;:::-;29306:25;;29465:1;29397:66;29393:74;29390:1;29387:81;29384:2;;;29471:18;;:::i;:::-;29384:2;29515:1;29512;29508:9;29501:16;;29262:261;;;;:::o;29529:185::-;29569:1;29586:20;29604:1;29586:20;:::i;:::-;29581:25;;29620:20;29638:1;29620:20;:::i;:::-;29615:25;;29659:1;29649:2;;29664:18;;:::i;:::-;29649:2;29706:1;29703;29699:9;29694:14;;29571:143;;;;:::o;29720:348::-;29760:7;29783:20;29801:1;29783:20;:::i;:::-;29778:25;;29817:20;29835:1;29817:20;:::i;:::-;29812:25;;30005:1;29937:66;29933:74;29930:1;29927:81;29922:1;29915:9;29908:17;29904:105;29901:2;;;30012:18;;:::i;:::-;29901:2;30060:1;30057;30053:9;30042:20;;29768:300;;;;:::o;30074:191::-;30114:4;30134:20;30152:1;30134:20;:::i;:::-;30129:25;;30168:20;30186:1;30168:20;:::i;:::-;30163:25;;30207:1;30204;30201:8;30198:2;;;30212:18;;:::i;:::-;30198:2;30257:1;30254;30250:9;30242:17;;30119:146;;;;:::o;30271:96::-;30308:7;30337:24;30355:5;30337:24;:::i;:::-;30326:35;;30316:51;;;:::o;30373:90::-;30407:7;30450:5;30443:13;30436:21;30425:32;;30415:48;;;:::o;30469:109::-;30519:7;30548:24;30566:5;30548:24;:::i;:::-;30537:35;;30527:51;;;:::o;30584:126::-;30621:7;30661:42;30654:5;30650:54;30639:65;;30629:81;;;:::o;30716:77::-;30753:7;30782:5;30771:16;;30761:32;;;:::o;30799:86::-;30834:7;30874:4;30867:5;30863:16;30852:27;;30842:43;;;:::o;30891:180::-;30968:9;31001:64;31059:5;31001:64;:::i;:::-;30988:77;;30978:93;;;:::o;31077:140::-;31154:9;31187:24;31205:5;31187:24;:::i;:::-;31174:37;;31164:53;;;:::o;31223:121::-;31281:9;31314:24;31332:5;31314:24;:::i;:::-;31301:37;;31291:53;;;:::o;31350:307::-;31418:1;31428:113;31442:6;31439:1;31436:13;31428:113;;;31527:1;31522:3;31518:11;31512:18;31508:1;31503:3;31499:11;31492:39;31464:2;31461:1;31457:10;31452:15;;31428:113;;;31559:6;31556:1;31553:13;31550:2;;;31639:1;31630:6;31625:3;31621:16;31614:27;31550:2;31399:258;;;;:::o;31663:320::-;31707:6;31744:1;31738:4;31734:12;31724:22;;31791:1;31785:4;31781:12;31812:18;31802:2;;31868:4;31860:6;31856:17;31846:27;;31802:2;31930;31922:6;31919:14;31899:18;31896:38;31893:2;;;31949:18;;:::i;:::-;31893:2;31714:269;;;;:::o;31989:180::-;32037:77;32034:1;32027:88;32134:4;32131:1;32124:15;32158:4;32155:1;32148:15;32175:180;32223:77;32220:1;32213:88;32320:4;32317:1;32310:15;32344:4;32341:1;32334:15;32361:180;32409:77;32406:1;32399:88;32506:4;32503:1;32496:15;32530:4;32527:1;32520:15;32547:102;32588:6;32639:2;32635:7;32630:2;32623:5;32619:14;32615:28;32605:38;;32595:54;;;:::o;32655:222::-;32795:34;32791:1;32783:6;32779:14;32772:58;32864:5;32859:2;32851:6;32847:15;32840:30;32761:116;:::o;32883:182::-;33023:34;33019:1;33011:6;33007:14;33000:58;32989:76;:::o;33071:177::-;33211:29;33207:1;33199:6;33195:14;33188:53;33177:71;:::o;33254:225::-;33394:34;33390:1;33382:6;33378:14;33371:58;33463:8;33458:2;33450:6;33446:15;33439:33;33360:119;:::o;33485:221::-;33625:34;33621:1;33613:6;33609:14;33602:58;33694:4;33689:2;33681:6;33677:15;33670:29;33591:115;:::o;33712:177::-;33852:29;33848:1;33840:6;33836:14;33829:53;33818:71;:::o;33895:223::-;34035:34;34031:1;34023:6;34019:14;34012:58;34104:6;34099:2;34091:6;34087:15;34080:31;34001:117;:::o;34124:163::-;34264:15;34260:1;34252:6;34248:14;34241:39;34230:57;:::o;34293:227::-;34433:34;34429:1;34421:6;34417:14;34410:58;34502:10;34497:2;34489:6;34485:15;34478:35;34399:121;:::o;34526:220::-;34666:34;34662:1;34654:6;34650:14;34643:58;34735:3;34730:2;34722:6;34718:15;34711:28;34632:114;:::o;34752:182::-;34892:34;34888:1;34880:6;34876:14;34869:58;34858:76;:::o;34940:228::-;35080:34;35076:1;35068:6;35064:14;35057:58;35149:11;35144:2;35136:6;35132:15;35125:36;35046:122;:::o;35174:224::-;35314:34;35310:1;35302:6;35298:14;35291:58;35383:7;35378:2;35370:6;35366:15;35359:32;35280:118;:::o;35404:114::-;35510:8;:::o;35524:223::-;35664:34;35660:1;35652:6;35648:14;35641:58;35733:6;35728:2;35720:6;35716:15;35709:31;35630:117;:::o;35753:232::-;35893:34;35889:1;35881:6;35877:14;35870:58;35962:15;35957:2;35949:6;35945:15;35938:40;35859:126;:::o;35991:167::-;36131:19;36127:1;36119:6;36115:14;36108:43;36097:61;:::o;36164:234::-;36304:34;36300:1;36292:6;36288:14;36281:58;36373:17;36368:2;36360:6;36356:15;36349:42;36270:128;:::o;36404:170::-;36544:22;36540:1;36532:6;36528:14;36521:46;36510:64;:::o;36580:122::-;36653:24;36671:5;36653:24;:::i;:::-;36646:5;36643:35;36633:2;;36692:1;36689;36682:12;36633:2;36623:79;:::o;36708:116::-;36778:21;36793:5;36778:21;:::i;:::-;36771:5;36768:32;36758:2;;36814:1;36811;36804:12;36758:2;36748:76;:::o;36830:148::-;36916:37;36947:5;36916:37;:::i;:::-;36909:5;36906:48;36896:2;;36968:1;36965;36958:12;36896:2;36886:92;:::o;36984:122::-;37057:24;37075:5;37057:24;:::i;:::-;37050:5;37047:35;37037:2;;37096:1;37093;37086:12;37037:2;37027:79;:::o
Swarm Source
ipfs://353234dc9a0e770b9c30a97e48111a3c04f10b698a6a63212469f66f871d6b36
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.