ERC-20
Overview
Max Total Supply
1,000,000,000 BAKITA
Holders
37
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.333395437934375 BAKITAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BAfinal
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-11 */ /* */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.13; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } 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; } } interface IBEP20 { 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); } interface IBEP20Metadata is IBEP20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract BEP20 is Context, IBEP20, IBEP20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 internal _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance")); return true; } 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, "BEP20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "BEP20: transfer from the zero address"); require(recipient != address(0), "BEP20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount,"BEP20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "BEP20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} } abstract 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 renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 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 (uint256); function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts); function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapETHForExactTokens(uint256 amountOut, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts); function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB); function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountOut); function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external; function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external; } contract BAfinal is BEP20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private swapping; bool public tradingEnabled = false; uint256 public sellAmount = 0; uint256 public buyAmount = 0; uint256 private totalSellFees; uint256 private totalBuyFees; address payable public marketingWallet; address payable public devWallet; uint256 public maxWallet; bool public maxWalletEnabled = true; uint256 public swapTokensAtAmount; uint256 public sellMarketingFees; uint256 public sellLiquidityFee; uint256 public buyMarketingFees; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellDevFee; bool public swapAndLiquifyEnabled = true; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public automatedMarketMakerPairs; mapping(address => bool) private canTransferBeforeTradingIsEnabled; bool public limitsInEffect = false; uint256 private gasPriceLimit = 7 * 1 gwei; // mapping(address => uint256) private _holderLastTransferBlock; // mapping(address => uint256) private _holderLastTransferTimestamp; // uint256 public launchblock; // uint256 public launchtimestamp; // uint256 public cooldowntimer = 30; // event EnableSwapAndLiquify(bool enabled); event SetPreSaleWallet(address wallet); event updateMarketingWallet(address wallet); event updateDevWallet(address wallet); event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event TradingEnabled(); event UpdateFees(uint256 sellMarketingFees, uint256 sellLiquidityFee, uint256 buyMarketingFees, uint256 buyLiquidityFee, uint256 buyDevFee, uint256 sellDevFee); event Airdrop(address holder, uint256 amount); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity); event SendDividends(uint256 opAmount, bool success); constructor() BEP20("BASEDAKITA", "BAKITA") { // PROJECTNAME AND TICKER GO HERE marketingWallet = payable(0x5eA228F6B7ec8d21DB38660a703ED9Da2Bb26A5f); // CHANGE THIS TO YOURS devWallet = payable(0x5411934df4F53a7D522f835FC03cbF86ee5b4A06); // CHANGE THIS TO YOURS address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // buyMarketingFees = 0; sellMarketingFees = 4; buyLiquidityFee = 0; sellLiquidityFee = 0; buyDevFee = 4; sellDevFee = 0; // totalBuyFees = buyMarketingFees.add(buyLiquidityFee).add(buyDevFee); totalSellFees = sellMarketingFees.add(sellLiquidityFee).add(sellDevFee); uniswapV2Router = IUniswapV2Router02(router); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH()); _setAutomatedMarketMakerPair(uniswapV2Pair, true); _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[msg.sender] = true; _isExcludedFromFees[marketingWallet] = true; uint256 _totalSupply = (1_000_000_000) * (10**18); // _mint(owner(), _totalSupply); // maxWallet = _totalSupply / 50; // 2% swapTokensAtAmount = _totalSupply / 100; // 1%; canTransferBeforeTradingIsEnabled[owner()] = true; canTransferBeforeTradingIsEnabled[address(this)] = true; } function decimals() public view virtual override returns (uint8) { return 18; } receive() external payable {} function enableTrading() external onlyOwner { require(!tradingEnabled); tradingEnabled = true; launchblock = block.number; launchtimestamp = block.timestamp; emit TradingEnabled(); } function setMarketingWallet(address wallet) external onlyOwner { _isExcludedFromFees[wallet] = true; marketingWallet = payable(wallet); emit updateMarketingWallet(wallet); } function setDevWallet(address wallet) external onlyOwner { _isExcludedFromFees[wallet] = true; devWallet = payable(wallet); emit updateDevWallet(wallet); } function setExcludeFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setCanTransferBefore(address wallet, bool enable) external onlyOwner { canTransferBeforeTradingIsEnabled[wallet] = enable; } function setLimitsInEffect(bool value) external onlyOwner { limitsInEffect = value; } function setMaxWalletEnabled(bool value) external onlyOwner { maxWalletEnabled = value; } function setcooldowntimer(uint256 value) external onlyOwner { require(value <= 300, "cooldown timer cannot exceed 5 minutes"); cooldowntimer = value; } function setmaxWallet(uint256 value) external onlyOwner { value = value * (10**18); require(value >= _totalSupply / 100, "max wallet cannot be set to less than 1%"); maxWallet = value; } // function Sweep() external onlyOwner { uint256 amountBNB = address(this).balance; payable(msg.sender).transfer(amountBNB); } function setSwapTriggerAmount(uint256 amount) public onlyOwner { swapTokensAtAmount = amount * (10**18); } function enableSwapAndLiquify(bool enabled) public onlyOwner { require(swapAndLiquifyEnabled != enabled); swapAndLiquifyEnabled = enabled; emit EnableSwapAndLiquify(enabled); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } // function transferAdmin(address newOwner) public onlyOwner { _isExcludedFromFees[newOwner] = true; canTransferBeforeTradingIsEnabled[newOwner] = true; transferOwnership(newOwner); } function updateFees(uint256 marketingBuy, uint256 marketingSell, uint256 liquidityBuy, uint256 liquiditySell, uint256 devBuy, uint256 devSell) public onlyOwner { buyMarketingFees = marketingBuy; buyLiquidityFee = liquidityBuy; sellMarketingFees = marketingSell; sellLiquidityFee = liquiditySell; buyDevFee = devBuy; sellDevFee = devSell; totalSellFees = sellMarketingFees.add(sellLiquidityFee).add(sellDevFee); totalBuyFees = buyMarketingFees.add(buyLiquidityFee).add(buyDevFee); // require(totalSellFees <= 99 && totalBuyFees <= 99, ""); emit UpdateFees(sellMarketingFees, sellLiquidityFee, sellDevFee, buyMarketingFees, buyLiquidityFee, buyDevFee); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "IBEP20: transfer from the zero address"); require(to != address(0), "IBEP20: transfer to the zero address"); uint256 marketingFees; uint256 liquidityFee; uint256 devFee; if (!canTransferBeforeTradingIsEnabled[from]) { require(tradingEnabled, "Trading has not yet been enabled"); } if (amount == 0) { super._transfer(from, to, 0); return; } else if ( !swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { bool isSelling = automatedMarketMakerPairs[to]; if (isSelling) { marketingFees = sellMarketingFees; liquidityFee = sellLiquidityFee; devFee = sellDevFee; if (limitsInEffect) { require(block.timestamp >= _holderLastTransferTimestamp[tx.origin] + cooldowntimer, "cooldown period active"); _holderLastTransferTimestamp[tx.origin] = block.timestamp; } } else { marketingFees = buyMarketingFees; liquidityFee = buyLiquidityFee; devFee = buyDevFee; if (limitsInEffect) { require(block.number > launchblock + 2,"you shall not pass"); require(tx.gasprice <= gasPriceLimit,"Gas price exceeds limit."); require(_holderLastTransferBlock[tx.origin] != block.number,"Too many TX in block"); require(block.timestamp >= _holderLastTransferTimestamp[tx.origin] + cooldowntimer, "cooldown period active"); _holderLastTransferBlock[tx.origin] = block.number; _holderLastTransferTimestamp[tx.origin] = block.timestamp; } if (maxWalletEnabled) { uint256 contractBalanceRecipient = balanceOf(to); require(contractBalanceRecipient + amount <= maxWallet, "Exceeds maximum wallet token amount." ); } } uint256 totalFees = marketingFees.add(liquidityFee).add(devFee); uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && !automatedMarketMakerPairs[from]) { swapping = true; uint256 swapTokens; if (swapAndLiquifyEnabled && liquidityFee > 0) { uint256 totalBuySell = buyAmount.add(sellAmount); uint256 swapAmountBought = contractTokenBalance .mul(buyAmount) .div(totalBuySell); uint256 swapAmountSold = contractTokenBalance .mul(sellAmount) .div(totalBuySell); uint256 swapBuyTokens = swapAmountBought .mul(liquidityFee) .div(totalBuyFees); uint256 swapSellTokens = swapAmountSold .mul(liquidityFee) .div(totalSellFees); swapTokens = swapSellTokens.add(swapBuyTokens); swapAndLiquify(swapTokens); } uint256 remainingBalance = swapTokensAtAmount.sub(swapTokens); swapAndSendDividends(remainingBalance); buyAmount = 0; sellAmount = 0; swapping = false; } uint256 fees = amount.mul(totalFees).div(100); amount = amount.sub(fees); if (isSelling) { sellAmount = sellAmount.add(fees); } else { buyAmount = buyAmount.add(fees); } super._transfer(from, address(this), fees); } super._transfer(from, to, amount); } function swapAndLiquify(uint256 tokens) private { uint256 half = tokens.div(2); uint256 otherHalf = tokens.sub(half); uint256 initialBalance = address(this).balance; swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered uint256 newBalance = address(this).balance.sub(initialBalance); addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } 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 owner(), block.timestamp ); } function forceSwapAndSendDividends(uint256 tokens) public onlyOwner { tokens = tokens * (10**18); uint256 totalAmount = buyAmount.add(sellAmount); uint256 fromBuy = tokens.mul(buyAmount).div(totalAmount); uint256 fromSell = tokens.mul(sellAmount).div(totalAmount); swapAndSendDividends(tokens); buyAmount = buyAmount.sub(fromBuy); sellAmount = sellAmount.sub(fromSell); } // TAX PAYOUT CODE function swapAndSendDividends(uint256 tokens) private { if (tokens == 0) { return; } swapTokensForEth(tokens); bool success = true; bool successOp1 = true; uint256 _marketDevTotal = sellMarketingFees.add(sellDevFee) + buyMarketingFees.add(buyDevFee); uint256 feePortions; if (_marketDevTotal > 0) { feePortions = address(this).balance.div(_marketDevTotal); } uint256 marketingPayout = buyMarketingFees.add(sellMarketingFees) * feePortions; uint256 devPayout = buyDevFee.add(sellDevFee) * feePortions; if (marketingPayout > 0) { (success, ) = address(marketingWallet).call{value: marketingPayout}(""); } if (devPayout > 0) { (successOp1, ) = address(devWallet).call{value: devPayout}(""); } emit SendDividends( marketingPayout, success && successOp1 ); } function airdropToWallets( address[] memory airdropWallets, uint256[] memory amount ) external onlyOwner { require(airdropWallets.length == amount.length, "Arrays must be the same length"); require(airdropWallets.length <= 200, "Wallets list length must be <= 200"); for (uint256 i = 0; i < airdropWallets.length; i++) { address wallet = airdropWallets[i]; uint256 airdropAmount = amount[i] * (10**18); super._transfer(msg.sender, wallet, airdropAmount); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Airdrop","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"EnableSwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"opAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"SetPreSaleWallet","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":[],"name":"TradingEnabled","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellMarketingFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyMarketingFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyDevFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellDevFee","type":"uint256"}],"name":"UpdateFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"updateDevWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"updateMarketingWallet","type":"event"},{"inputs":[],"name":"Sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldowntimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"forceSwapAndSendDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchblock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchtimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setCanTransferBefore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setLimitsInEffect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setMaxWalletEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTriggerAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setcooldowntimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setmaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferAdmin","outputs":[],"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":"uniswapV2Pair","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":[{"internalType":"uint256","name":"marketingBuy","type":"uint256"},{"internalType":"uint256","name":"marketingSell","type":"uint256"},{"internalType":"uint256","name":"liquidityBuy","type":"uint256"},{"internalType":"uint256","name":"liquiditySell","type":"uint256"},{"internalType":"uint256","name":"devBuy","type":"uint256"},{"internalType":"uint256","name":"devSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600760156101000a81548160ff021916908315150217905550600060085560006009556001600f60006101000a81548160ff0219169083151502179055506001601760006101000a81548160ff0219169083151502179055506000601b60006101000a81548160ff0219169083151502179055506401a13b8600601c55601e6021553480156200009557600080fd5b506040518060400160405280600a81526020017f4241534544414b495441000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f42414b495441000000000000000000000000000000000000000000000000000081525081600390805190602001906200011a92919062000aed565b5080600490805190602001906200013392919062000aed565b5050506000620001486200080460201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350735ea228f6b7ec8d21db38660a703ed9da2bb26a5f600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735411934df4f53a7d522f835fc03cbf86ee5b4a06600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060006013819055506004601181905550600060148190555060006012819055506004601581905550600060168190555062000313601554620002ff6014546013546200080c60201b620028fa1790919060201c565b6200080c60201b620028fa1790919060201c565b600b81905550620003526016546200033e6012546011546200080c60201b620028fa1790919060201c565b6200080c60201b620028fa1790919060201c565b600a8190555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000407573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042d919062000c07565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004dd919062000c07565b6040518363ffffffff1660e01b8152600401620004fc92919062000c4a565b6020604051808303816000875af11580156200051c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000542919062000c07565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005b7600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200086f60201b60201c565b6001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006b033b2e3c9fd0803ce8000000905062000713620007066200091060201b60201c565b826200093a60201b60201c565b60328162000722919062000cdf565b600e8190555060648162000737919062000cdf565b6010819055506001601a6000620007536200091060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000efb565b600033905090565b60008082846200081d919062000d17565b90508381101562000865576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200085c9062000dd5565b60405180910390fd5b8091505092915050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a39062000e47565b60405180910390fd5b620009c06000838362000ae860201b60201c565b620009dc816002546200080c60201b620028fa1790919060201c565b60028190555062000a3a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200080c60201b620028fa1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000adc919062000e7a565b60405180910390a35050565b505050565b82805462000afb9062000ec6565b90600052602060002090601f01602090048101928262000b1f576000855562000b6b565b82601f1062000b3a57805160ff191683800117855562000b6b565b8280016001018555821562000b6b579182015b8281111562000b6a57825182559160200191906001019062000b4d565b5b50905062000b7a919062000b7e565b5090565b5b8082111562000b9957600081600090555060010162000b7f565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bcf8262000ba2565b9050919050565b62000be18162000bc2565b811462000bed57600080fd5b50565b60008151905062000c018162000bd6565b92915050565b60006020828403121562000c205762000c1f62000b9d565b5b600062000c308482850162000bf0565b91505092915050565b62000c448162000bc2565b82525050565b600060408201905062000c61600083018562000c39565b62000c70602083018462000c39565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cec8262000c77565b915062000cf98362000c77565b92508262000d0c5762000d0b62000c81565b5b828204905092915050565b600062000d248262000c77565b915062000d318362000c77565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d695762000d6862000cb0565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000dbd601b8362000d74565b915062000dca8262000d85565b602082019050919050565b6000602082019050818103600083015262000df08162000dae565b9050919050565b7f42455032303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e2f601f8362000d74565b915062000e3c8262000df7565b602082019050919050565b6000602082019050818103600083015262000e628162000e20565b9050919050565b62000e748162000c77565b82525050565b600060208201905062000e91600083018462000e69565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000edf57607f821691505b60208210810362000ef55762000ef462000e97565b5b50919050565b6157fc8062000f0b6000396000f3fe6080604052600436106103395760003560e01c806375f0a874116101ab578063a614ff75116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610bf5578063f637434214610c1e578063f8b45b0514610c49578063fc6b151c14610c7457610340565b8063dd62ed3e14610b62578063e2f4560514610b9f578063f11a24d314610bca57610340565b8063b62496f5116100d1578063b62496f514610aa8578063b74e3b1114610ae5578063d045a32914610b0e578063d5e3725114610b3957610340565b8063a614ff7514610a17578063a9059cbb14610a40578063b494298814610a7d57610340565b806395451c29116101645780639a7a23d61161013e5780639a7a23d61461095b5780639c3b4fdc14610984578063a0d82dc5146109af578063a457c2d7146109da57610340565b806395451c29146108dc57806395d89b4114610907578063992c58e41461093257610340565b806375f0a874146107f05780637fdde05c1461081b5780638a8c523c146108445780638c3c82b21461085b5780638da5cb5b146108865780638ea5220f146108b157610340565b80633f407b84116102855780635d098b38116102235780637088fb7f116101fd5780637088fb7f1461075c57806370a0823114610773578063715018a6146107b057806375829def146107c757610340565b80635d098b38146106e15780635eee4bae1461070a578063679ca6e91461073357610340565b80634a74bb021161025f5780634a74bb02146106235780634ada218b1461064e5780634fbee193146106795780635124f874146106b657610340565b80633f407b84146105a257806349bd5a5e146105cd5780634a62bb65146105f857610340565b80631d7b1fb4116102f25780632307b441116102cc5780632307b441146104d457806323b872dd146104fd578063313ce5671461053a578063395093511461056557610340565b80631d7b1fb4146104555780631f53ac02146104805780631fa70531146104a957610340565b806305ca5f081461034557806306fdde031461036e57806308dfe8a514610399578063095ea7b3146103c25780631694505e146103ff57806318160ddd1461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061036c60048036038101906103679190613fc3565b610c9d565b005b34801561037a57600080fd5b50610383610e00565b6040516103909190614089565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190614141565b610e92565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190614181565b610fd2565b6040516103f691906141d0565b60405180910390f35b34801561040b57600080fd5b50610414610ff0565b604051610421919061424a565b60405180910390f35b34801561043657600080fd5b5061043f611016565b60405161044c9190614274565b60405180910390f35b34801561046157600080fd5b5061046a611020565b6040516104779190614274565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a2919061428f565b611026565b005b3480156104b557600080fd5b506104be611190565b6040516104cb9190614274565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f691906144c7565b611196565b005b34801561050957600080fd5b50610524600480360381019061051f919061453f565b611338565b60405161053191906141d0565b60405180910390f35b34801561054657600080fd5b5061054f611411565b60405161055c91906145ae565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190614181565b61141a565b60405161059991906141d0565b60405180910390f35b3480156105ae57600080fd5b506105b76114cd565b6040516105c49190614274565b60405180910390f35b3480156105d957600080fd5b506105e26114d3565b6040516105ef91906145d8565b60405180910390f35b34801561060457600080fd5b5061060d6114f9565b60405161061a91906141d0565b60405180910390f35b34801561062f57600080fd5b5061063861150c565b60405161064591906141d0565b60405180910390f35b34801561065a57600080fd5b5061066361151f565b60405161067091906141d0565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b919061428f565b611532565b6040516106ad91906141d0565b60405180910390f35b3480156106c257600080fd5b506106cb611588565b6040516106d89190614274565b60405180910390f35b3480156106ed57600080fd5b506107086004803603810190610703919061428f565b61158e565b005b34801561071657600080fd5b50610731600480360381019061072c9190613fc3565b6116f8565b005b34801561073f57600080fd5b5061075a600480360381019061075591906145f3565b6117ac565b005b34801561076857600080fd5b50610771611860565b005b34801561077f57600080fd5b5061079a6004803603810190610795919061428f565b611946565b6040516107a79190614274565b60405180910390f35b3480156107bc57600080fd5b506107c561198e565b005b3480156107d357600080fd5b506107ee60048036038101906107e9919061428f565b611ae6565b005b3480156107fc57600080fd5b50610805611c39565b6040516108129190614641565b60405180910390f35b34801561082757600080fd5b50610842600480360381019061083d9190614141565b611c5f565b005b34801561085057600080fd5b50610859611d51565b005b34801561086757600080fd5b50610870611e59565b60405161087d9190614274565b60405180910390f35b34801561089257600080fd5b5061089b611e5f565b6040516108a891906145d8565b60405180910390f35b3480156108bd57600080fd5b506108c6611e89565b6040516108d39190614641565b60405180910390f35b3480156108e857600080fd5b506108f1611eaf565b6040516108fe9190614274565b60405180910390f35b34801561091357600080fd5b5061091c611eb5565b6040516109299190614089565b60405180910390f35b34801561093e57600080fd5b506109596004803603810190610954919061465c565b611f47565b005b34801561096757600080fd5b50610982600480360381019061097d9190614141565b612114565b005b34801561099057600080fd5b506109996121b9565b6040516109a69190614274565b60405180910390f35b3480156109bb57600080fd5b506109c46121bf565b6040516109d19190614274565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc9190614181565b6121c5565b604051610a0e91906141d0565b60405180910390f35b348015610a2357600080fd5b50610a3e6004803603810190610a3991906145f3565b612292565b005b348015610a4c57600080fd5b50610a676004803603810190610a629190614181565b612346565b604051610a7491906141d0565b60405180910390f35b348015610a8957600080fd5b50610a92612364565b604051610a9f9190614274565b60405180910390f35b348015610ab457600080fd5b50610acf6004803603810190610aca919061428f565b61236a565b604051610adc91906141d0565b60405180910390f35b348015610af157600080fd5b50610b0c6004803603810190610b079190613fc3565b61238a565b005b348015610b1a57600080fd5b50610b23612470565b604051610b3091906141d0565b60405180910390f35b348015610b4557600080fd5b50610b606004803603810190610b5b91906145f3565b612483565b005b348015610b6e57600080fd5b50610b896004803603810190610b8491906146e9565b61258d565b604051610b969190614274565b60405180910390f35b348015610bab57600080fd5b50610bb4612614565b604051610bc19190614274565b60405180910390f35b348015610bd657600080fd5b50610bdf61261a565b604051610bec9190614274565b60405180910390f35b348015610c0157600080fd5b50610c1c6004803603810190610c17919061428f565b612620565b005b348015610c2a57600080fd5b50610c336127e6565b604051610c409190614274565b60405180910390f35b348015610c5557600080fd5b50610c5e6127ec565b604051610c6b9190614274565b60405180910390f35b348015610c8057600080fd5b50610c9b6004803603810190610c969190613fc3565b6127f2565b005b610ca5612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90614775565b60405180910390fd5b670de0b6b3a764000081610d4891906147c4565b90506000610d636008546009546128fa90919063ffffffff16565b90506000610d8e82610d806009548661296090919063ffffffff16565b6129da90919063ffffffff16565b90506000610db983610dab6008548761296090919063ffffffff16565b6129da90919063ffffffff16565b9050610dc484612a24565b610dd982600954612c6690919063ffffffff16565b600981905550610df481600854612c6690919063ffffffff16565b60088190555050505050565b606060038054610e0f9061484d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3b9061484d565b8015610e885780601f10610e5d57610100808354040283529160200191610e88565b820191906000526020600020905b815481529060010190602001808311610e6b57829003601f168201915b5050505050905090565b610e9a612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2090614775565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610fc691906141d0565b60405180910390a25050565b6000610fe6610fdf612958565b8484612cb0565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60215481565b61102e612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490614775565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1816467f4e41d8dd27500ca11dc471852ca93f9b624c4d8d4430b8c4fa6424fa8160405161118591906145d8565b60405180910390a150565b60095481565b61119e612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490614775565b60405180910390fd5b8051825114611271576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611268906148ca565b60405180910390fd5b60c8825111156112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad9061495c565b60405180910390fd5b60005b82518110156113335760008382815181106112d7576112d661497c565b5b602002602001015190506000670de0b6b3a76400008484815181106112ff576112fe61497c565b5b602002602001015161131191906147c4565b905061131e338383612e79565b5050808061132b906149ab565b9150506112b9565b505050565b600061134584848461310c565b61140684611351612958565b6114018560405180606001604052806028815260200161575460289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b7612958565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a449092919063ffffffff16565b612cb0565b600190509392505050565b60006012905090565b60006114c3611427612958565b846114be8560016000611438612958565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fa90919063ffffffff16565b612cb0565b6001905092915050565b60085481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900460ff1681565b601760009054906101000a900460ff1681565b600760159054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b611596612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90614775565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faacebbe32c0dbd14817cfb53e3cc8be68c7e133928317145be50a0d86c224433816040516116ed91906145d8565b60405180910390a150565b611700612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461178f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178690614775565b60405180910390fd5b670de0b6b3a7640000816117a391906147c4565b60108190555050565b6117b4612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183a90614775565b60405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b611868612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ee90614775565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611942573d6000803e3d6000fd5b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611996612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90614775565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611aee612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7490614775565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c3681612620565b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c67612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90614775565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d59612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf90614775565b60405180910390fd5b600760159054906101000a900460ff1615611e0257600080fd5b6001600760156101000a81548160ff02191690831515021790555043601f81905550426020819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b60205481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b606060048054611ec49061484d565b80601f0160208091040260200160405190810160405280929190818152602001828054611ef09061484d565b8015611f3d5780601f10611f1257610100808354040283529160200191611f3d565b820191906000526020600020905b815481529060010190602001808311611f2057829003601f168201915b5050505050905090565b611f4f612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd590614775565b60405180910390fd5b8560138190555083601481905550846011819055508260128190555081601581905550806016819055506120336016546120256012546011546128fa90919063ffffffff16565b6128fa90919063ffffffff16565b600a819055506120646015546120566014546013546128fa90919063ffffffff16565b6128fa90919063ffffffff16565b600b819055506063600a541115801561208057506063600b5411155b6120bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b690614a19565b60405180910390fd5b7ffb0d6f48717e74b9ad8ae84d152197402ac50bd6431ea28437926861021948ff60115460125460165460135460145460155460405161210496959493929190614a39565b60405180910390a1505050505050565b61211c612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a290614775565b60405180910390fd5b6121b58282613aa8565b5050565b60155481565b60165481565b60006122886121d2612958565b84612283856040518060600160405280602581526020016157a260259139600160006121fc612958565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a449092919063ffffffff16565b612cb0565b6001905092915050565b61229a612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232090614775565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b600061235a612353612958565b848461310c565b6001905092915050565b601f5481565b60196020528060005260406000206000915054906101000a900460ff1681565b612392612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241890614775565b60405180910390fd5b61012c811115612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614b0c565b60405180910390fd5b8060218190555050565b600f60009054906101000a900460ff1681565b61248b612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251190614775565b60405180910390fd5b801515601760009054906101000a900460ff1615150361253957600080fd5b80601760006101000a81548160ff0219169083151502179055507fff5917043f8453af413305b2dbd1ed9748a37df481beb71ba4b9b212a07b9bef8160405161258291906141d0565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b60145481565b612628612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ae90614775565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271d90614b9e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b600e5481565b6127fa612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288090614775565b60405180910390fd5b670de0b6b3a76400008161289d91906147c4565b905060646002546128ae9190614bed565b8110156128f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e790614c90565b60405180910390fd5b80600e8190555050565b60008082846129099190614cb0565b90508381101561294e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294590614d52565b60405180910390fd5b8091505092915050565b600033905090565b600080830361297257600090506129d4565b6000828461298091906147c4565b905082848261298f9190614bed565b146129cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c690614de4565b60405180910390fd5b809150505b92915050565b6000612a1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b49565b905092915050565b6000810315612c6357612a3681613bac565b6000600190506000600190506000612a5b6015546013546128fa90919063ffffffff16565b612a726016546011546128fa90919063ffffffff16565b612a7c9190614cb0565b9050600080821115612a9e57612a9b82476129da90919063ffffffff16565b90505b600081612ab86011546013546128fa90919063ffffffff16565b612ac291906147c4565b9050600082612ade6016546015546128fa90919063ffffffff16565b612ae891906147c4565b90506000821115612b8257600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612b3990614e32565b60006040518083038185875af1925050503d8060008114612b76576040519150601f19603f3d011682016040523d82523d6000602084013e612b7b565b606091505b5050809650505b6000811115612c1a57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612bd190614e32565b60006040518083038185875af1925050503d8060008114612c0e576040519150601f19603f3d011682016040523d82523d6000602084013e612c13565b606091505b5050809550505b7f31ea026303a62d39c4ad14716f9621f1afe3242309c2ed761d4e241ae4bf2ea982878015612c465750865b604051612c54929190614e47565b60405180910390a15050505050505b50565b6000612ca883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a44565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1690614ee2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8590614f74565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e6c9190614274565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edf90615006565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4e90615098565b60405180910390fd5b612f62838383613def565b612fcd8160405180606001604052806026815260200161577c602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a449092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613060816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fa90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130ff9190614274565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361317b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131729061512a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e1906151bc565b60405180910390fd5b6000806000601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661329057600760159054906101000a900460ff1661328f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328690615228565b60405180910390fd5b5b600084036132ac576132a486866000612e79565b505050613a3f565b600760149054906101000a900460ff161580156133135750601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133695750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a30576000601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905080156134c257601154935060125492506016549150601b60009054906101000a900460ff16156134bd57602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134369190614cb0565b421015613478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346f90615294565b60405180910390fd5b42601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b613789565b601354935060145492506015549150601b60009054906101000a900460ff1615613714576002601f546134f59190614cb0565b4311613536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352d90615300565b60405180910390fd5b601c543a111561357b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135729061536c565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036135fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f3906153d8565b60405180910390fd5b602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136499190614cb0565b42101561368b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368290615294565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60009054906101000a900460ff161561378857600061373487611946565b9050600e5486826137459190614cb0565b1115613786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377d9061546a565b60405180910390fd5b505b5b60006137b0836137a286886128fa90919063ffffffff16565b6128fa90919063ffffffff16565b905060006137bd30611946565b9050600060105482101590508080156138205750601960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561399e576001600760146101000a81548160ff0219169083151502179055506000601760009054906101000a900460ff16801561385e5750600087115b1561394e57600061387c6008546009546128fa90919063ffffffff16565b905060006138a7826138996009548861296090919063ffffffff16565b6129da90919063ffffffff16565b905060006138d2836138c46008548961296090919063ffffffff16565b6129da90919063ffffffff16565b905060006138fd600b546138ef8d8661296090919063ffffffff16565b6129da90919063ffffffff16565b90506000613928600a5461391a8e8661296090919063ffffffff16565b6129da90919063ffffffff16565b905061393d82826128fa90919063ffffffff16565b955061394886613df4565b50505050505b600061396582601054612c6690919063ffffffff16565b905061397081612a24565b600060098190555060006008819055506000600760146101000a81548160ff02191690831515021790555050505b60006139c660646139b8868c61296090919063ffffffff16565b6129da90919063ffffffff16565b90506139db818a612c6690919063ffffffff16565b98508415613a03576139f8816008546128fa90919063ffffffff16565b600881905550613a1f565b613a18816009546128fa90919063ffffffff16565b6009819055505b613a2a8b3083612e79565b50505050505b613a3b868686612e79565b5050505b505050565b6000838311158290613a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a839190614089565b60405180910390fd5b5060008385613a9b919061548a565b9050809150509392505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008083118290613b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b879190614089565b60405180910390fd5b5060008385613b9f9190614bed565b9050809150509392505050565b6000600267ffffffffffffffff811115613bc957613bc86142c1565b5b604051908082528060200260200182016040528015613bf75781602001602082028036833780820191505090505b5090503081600081518110613c0f57613c0e61497c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cda91906154d3565b81600181518110613cee57613ced61497c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d5530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cb0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613db99594939291906155f9565b600060405180830381600087803b158015613dd357600080fd5b505af1158015613de7573d6000803e3d6000fd5b505050505050565b505050565b6000613e0a6002836129da90919063ffffffff16565b90506000613e218284612c6690919063ffffffff16565b90506000479050613e3183613bac565b6000613e468247612c6690919063ffffffff16565b9050613e528382613e94565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051613e8593929190615653565b60405180910390a15050505050565b613ec130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cb0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613f0d611e5f565b426040518863ffffffff1660e01b8152600401613f2f9695949392919061568a565b60606040518083038185885af1158015613f4d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f729190615700565b5050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613fa081613f8d565b8114613fab57600080fd5b50565b600081359050613fbd81613f97565b92915050565b600060208284031215613fd957613fd8613f83565b5b6000613fe784828501613fae565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561402a57808201518184015260208101905061400f565b83811115614039576000848401525b50505050565b6000601f19601f8301169050919050565b600061405b82613ff0565b6140658185613ffb565b935061407581856020860161400c565b61407e8161403f565b840191505092915050565b600060208201905081810360008301526140a38184614050565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140d6826140ab565b9050919050565b6140e6816140cb565b81146140f157600080fd5b50565b600081359050614103816140dd565b92915050565b60008115159050919050565b61411e81614109565b811461412957600080fd5b50565b60008135905061413b81614115565b92915050565b6000806040838503121561415857614157613f83565b5b6000614166858286016140f4565b92505060206141778582860161412c565b9150509250929050565b6000806040838503121561419857614197613f83565b5b60006141a6858286016140f4565b92505060206141b785828601613fae565b9150509250929050565b6141ca81614109565b82525050565b60006020820190506141e560008301846141c1565b92915050565b6000819050919050565b600061421061420b614206846140ab565b6141eb565b6140ab565b9050919050565b6000614222826141f5565b9050919050565b600061423482614217565b9050919050565b61424481614229565b82525050565b600060208201905061425f600083018461423b565b92915050565b61426e81613f8d565b82525050565b60006020820190506142896000830184614265565b92915050565b6000602082840312156142a5576142a4613f83565b5b60006142b3848285016140f4565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6142f98261403f565b810181811067ffffffffffffffff82111715614318576143176142c1565b5b80604052505050565b600061432b613f79565b905061433782826142f0565b919050565b600067ffffffffffffffff821115614357576143566142c1565b5b602082029050602081019050919050565b600080fd5b600061438061437b8461433c565b614321565b905080838252602082019050602084028301858111156143a3576143a2614368565b5b835b818110156143cc57806143b888826140f4565b8452602084019350506020810190506143a5565b5050509392505050565b600082601f8301126143eb576143ea6142bc565b5b81356143fb84826020860161436d565b91505092915050565b600067ffffffffffffffff82111561441f5761441e6142c1565b5b602082029050602081019050919050565b600061444361443e84614404565b614321565b9050808382526020820190506020840283018581111561446657614465614368565b5b835b8181101561448f578061447b8882613fae565b845260208401935050602081019050614468565b5050509392505050565b600082601f8301126144ae576144ad6142bc565b5b81356144be848260208601614430565b91505092915050565b600080604083850312156144de576144dd613f83565b5b600083013567ffffffffffffffff8111156144fc576144fb613f88565b5b614508858286016143d6565b925050602083013567ffffffffffffffff81111561452957614528613f88565b5b61453585828601614499565b9150509250929050565b60008060006060848603121561455857614557613f83565b5b6000614566868287016140f4565b9350506020614577868287016140f4565b925050604061458886828701613fae565b9150509250925092565b600060ff82169050919050565b6145a881614592565b82525050565b60006020820190506145c3600083018461459f565b92915050565b6145d2816140cb565b82525050565b60006020820190506145ed60008301846145c9565b92915050565b60006020828403121561460957614608613f83565b5b60006146178482850161412c565b91505092915050565b600061462b826140ab565b9050919050565b61463b81614620565b82525050565b60006020820190506146566000830184614632565b92915050565b60008060008060008060c0878903121561467957614678613f83565b5b600061468789828a01613fae565b965050602061469889828a01613fae565b95505060406146a989828a01613fae565b94505060606146ba89828a01613fae565b93505060806146cb89828a01613fae565b92505060a06146dc89828a01613fae565b9150509295509295509295565b60008060408385031215614700576146ff613f83565b5b600061470e858286016140f4565b925050602061471f858286016140f4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061475f602083613ffb565b915061476a82614729565b602082019050919050565b6000602082019050818103600083015261478e81614752565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147cf82613f8d565b91506147da83613f8d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561481357614812614795565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061486557607f821691505b6020821081036148785761487761481e565b5b50919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b60006148b4601e83613ffb565b91506148bf8261487e565b602082019050919050565b600060208201905081810360008301526148e3816148a7565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b6000614946602283613ffb565b9150614951826148ea565b604082019050919050565b6000602082019050818103600083015261497581614939565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006149b682613f8d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149e8576149e7614795565b5b600182019050919050565b50565b6000614a03600083613ffb565b9150614a0e826149f3565b600082019050919050565b60006020820190508181036000830152614a32816149f6565b9050919050565b600060c082019050614a4e6000830189614265565b614a5b6020830188614265565b614a686040830187614265565b614a756060830186614265565b614a826080830185614265565b614a8f60a0830184614265565b979650505050505050565b7f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d60008201527f696e757465730000000000000000000000000000000000000000000000000000602082015250565b6000614af6602683613ffb565b9150614b0182614a9a565b604082019050919050565b60006020820190508181036000830152614b2581614ae9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b88602683613ffb565b9150614b9382614b2c565b604082019050919050565b60006020820190508181036000830152614bb781614b7b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614bf882613f8d565b9150614c0383613f8d565b925082614c1357614c12614bbe565b5b828204905092915050565b7f6d61782077616c6c65742063616e6e6f742062652073657420746f206c65737360008201527f207468616e203125000000000000000000000000000000000000000000000000602082015250565b6000614c7a602883613ffb565b9150614c8582614c1e565b604082019050919050565b60006020820190508181036000830152614ca981614c6d565b9050919050565b6000614cbb82613f8d565b9150614cc683613f8d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614cfb57614cfa614795565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614d3c601b83613ffb565b9150614d4782614d06565b602082019050919050565b60006020820190508181036000830152614d6b81614d2f565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614dce602183613ffb565b9150614dd982614d72565b604082019050919050565b60006020820190508181036000830152614dfd81614dc1565b9050919050565b600081905092915050565b6000614e1c600083614e04565b9150614e27826149f3565b600082019050919050565b6000614e3d82614e0f565b9150819050919050565b6000604082019050614e5c6000830185614265565b614e6960208301846141c1565b9392505050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ecc602483613ffb565b9150614ed782614e70565b604082019050919050565b60006020820190508181036000830152614efb81614ebf565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f5e602283613ffb565b9150614f6982614f02565b604082019050919050565b60006020820190508181036000830152614f8d81614f51565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ff0602583613ffb565b9150614ffb82614f94565b604082019050919050565b6000602082019050818103600083015261501f81614fe3565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615082602383613ffb565b915061508d82615026565b604082019050919050565b600060208201905081810360008301526150b181615075565b9050919050565b7f4942455032303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615114602683613ffb565b915061511f826150b8565b604082019050919050565b6000602082019050818103600083015261514381615107565b9050919050565b7f4942455032303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006151a6602483613ffb565b91506151b18261514a565b604082019050919050565b600060208201905081810360008301526151d581615199565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e20656e61626c6564600082015250565b6000615212602083613ffb565b915061521d826151dc565b602082019050919050565b6000602082019050818103600083015261524181615205565b9050919050565b7f636f6f6c646f776e20706572696f642061637469766500000000000000000000600082015250565b600061527e601683613ffb565b915061528982615248565b602082019050919050565b600060208201905081810360008301526152ad81615271565b9050919050565b7f796f75207368616c6c206e6f7420706173730000000000000000000000000000600082015250565b60006152ea601283613ffb565b91506152f5826152b4565b602082019050919050565b60006020820190508181036000830152615319816152dd565b9050919050565b7f4761732070726963652065786365656473206c696d69742e0000000000000000600082015250565b6000615356601883613ffb565b915061536182615320565b602082019050919050565b6000602082019050818103600083015261538581615349565b9050919050565b7f546f6f206d616e7920545820696e20626c6f636b000000000000000000000000600082015250565b60006153c2601483613ffb565b91506153cd8261538c565b602082019050919050565b600060208201905081810360008301526153f1816153b5565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b6000615454602483613ffb565b915061545f826153f8565b604082019050919050565b6000602082019050818103600083015261548381615447565b9050919050565b600061549582613f8d565b91506154a083613f8d565b9250828210156154b3576154b2614795565b5b828203905092915050565b6000815190506154cd816140dd565b92915050565b6000602082840312156154e9576154e8613f83565b5b60006154f7848285016154be565b91505092915050565b6000819050919050565b600061552561552061551b84615500565b6141eb565b613f8d565b9050919050565b6155358161550a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615570816140cb565b82525050565b60006155828383615567565b60208301905092915050565b6000602082019050919050565b60006155a68261553b565b6155b08185615546565b93506155bb83615557565b8060005b838110156155ec5781516155d38882615576565b97506155de8361558e565b9250506001810190506155bf565b5085935050505092915050565b600060a08201905061560e6000830188614265565b61561b602083018761552c565b818103604083015261562d818661559b565b905061563c60608301856145c9565b6156496080830184614265565b9695505050505050565b60006060820190506156686000830186614265565b6156756020830185614265565b6156826040830184614265565b949350505050565b600060c08201905061569f60008301896145c9565b6156ac6020830188614265565b6156b9604083018761552c565b6156c6606083018661552c565b6156d360808301856145c9565b6156e060a0830184614265565b979650505050505050565b6000815190506156fa81613f97565b92915050565b60008060006060848603121561571957615718613f83565b5b6000615727868287016156eb565b9350506020615738868287016156eb565b9250506040615749868287016156eb565b915050925092509256fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b6489b7095711cddc0a9ff9a627bb345504b3f44f849294dd148ffe1c9df163664736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106103395760003560e01c806375f0a874116101ab578063a614ff75116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610bf5578063f637434214610c1e578063f8b45b0514610c49578063fc6b151c14610c7457610340565b8063dd62ed3e14610b62578063e2f4560514610b9f578063f11a24d314610bca57610340565b8063b62496f5116100d1578063b62496f514610aa8578063b74e3b1114610ae5578063d045a32914610b0e578063d5e3725114610b3957610340565b8063a614ff7514610a17578063a9059cbb14610a40578063b494298814610a7d57610340565b806395451c29116101645780639a7a23d61161013e5780639a7a23d61461095b5780639c3b4fdc14610984578063a0d82dc5146109af578063a457c2d7146109da57610340565b806395451c29146108dc57806395d89b4114610907578063992c58e41461093257610340565b806375f0a874146107f05780637fdde05c1461081b5780638a8c523c146108445780638c3c82b21461085b5780638da5cb5b146108865780638ea5220f146108b157610340565b80633f407b84116102855780635d098b38116102235780637088fb7f116101fd5780637088fb7f1461075c57806370a0823114610773578063715018a6146107b057806375829def146107c757610340565b80635d098b38146106e15780635eee4bae1461070a578063679ca6e91461073357610340565b80634a74bb021161025f5780634a74bb02146106235780634ada218b1461064e5780634fbee193146106795780635124f874146106b657610340565b80633f407b84146105a257806349bd5a5e146105cd5780634a62bb65146105f857610340565b80631d7b1fb4116102f25780632307b441116102cc5780632307b441146104d457806323b872dd146104fd578063313ce5671461053a578063395093511461056557610340565b80631d7b1fb4146104555780631f53ac02146104805780631fa70531146104a957610340565b806305ca5f081461034557806306fdde031461036e57806308dfe8a514610399578063095ea7b3146103c25780631694505e146103ff57806318160ddd1461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061036c60048036038101906103679190613fc3565b610c9d565b005b34801561037a57600080fd5b50610383610e00565b6040516103909190614089565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190614141565b610e92565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190614181565b610fd2565b6040516103f691906141d0565b60405180910390f35b34801561040b57600080fd5b50610414610ff0565b604051610421919061424a565b60405180910390f35b34801561043657600080fd5b5061043f611016565b60405161044c9190614274565b60405180910390f35b34801561046157600080fd5b5061046a611020565b6040516104779190614274565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a2919061428f565b611026565b005b3480156104b557600080fd5b506104be611190565b6040516104cb9190614274565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f691906144c7565b611196565b005b34801561050957600080fd5b50610524600480360381019061051f919061453f565b611338565b60405161053191906141d0565b60405180910390f35b34801561054657600080fd5b5061054f611411565b60405161055c91906145ae565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190614181565b61141a565b60405161059991906141d0565b60405180910390f35b3480156105ae57600080fd5b506105b76114cd565b6040516105c49190614274565b60405180910390f35b3480156105d957600080fd5b506105e26114d3565b6040516105ef91906145d8565b60405180910390f35b34801561060457600080fd5b5061060d6114f9565b60405161061a91906141d0565b60405180910390f35b34801561062f57600080fd5b5061063861150c565b60405161064591906141d0565b60405180910390f35b34801561065a57600080fd5b5061066361151f565b60405161067091906141d0565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b919061428f565b611532565b6040516106ad91906141d0565b60405180910390f35b3480156106c257600080fd5b506106cb611588565b6040516106d89190614274565b60405180910390f35b3480156106ed57600080fd5b506107086004803603810190610703919061428f565b61158e565b005b34801561071657600080fd5b50610731600480360381019061072c9190613fc3565b6116f8565b005b34801561073f57600080fd5b5061075a600480360381019061075591906145f3565b6117ac565b005b34801561076857600080fd5b50610771611860565b005b34801561077f57600080fd5b5061079a6004803603810190610795919061428f565b611946565b6040516107a79190614274565b60405180910390f35b3480156107bc57600080fd5b506107c561198e565b005b3480156107d357600080fd5b506107ee60048036038101906107e9919061428f565b611ae6565b005b3480156107fc57600080fd5b50610805611c39565b6040516108129190614641565b60405180910390f35b34801561082757600080fd5b50610842600480360381019061083d9190614141565b611c5f565b005b34801561085057600080fd5b50610859611d51565b005b34801561086757600080fd5b50610870611e59565b60405161087d9190614274565b60405180910390f35b34801561089257600080fd5b5061089b611e5f565b6040516108a891906145d8565b60405180910390f35b3480156108bd57600080fd5b506108c6611e89565b6040516108d39190614641565b60405180910390f35b3480156108e857600080fd5b506108f1611eaf565b6040516108fe9190614274565b60405180910390f35b34801561091357600080fd5b5061091c611eb5565b6040516109299190614089565b60405180910390f35b34801561093e57600080fd5b506109596004803603810190610954919061465c565b611f47565b005b34801561096757600080fd5b50610982600480360381019061097d9190614141565b612114565b005b34801561099057600080fd5b506109996121b9565b6040516109a69190614274565b60405180910390f35b3480156109bb57600080fd5b506109c46121bf565b6040516109d19190614274565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc9190614181565b6121c5565b604051610a0e91906141d0565b60405180910390f35b348015610a2357600080fd5b50610a3e6004803603810190610a3991906145f3565b612292565b005b348015610a4c57600080fd5b50610a676004803603810190610a629190614181565b612346565b604051610a7491906141d0565b60405180910390f35b348015610a8957600080fd5b50610a92612364565b604051610a9f9190614274565b60405180910390f35b348015610ab457600080fd5b50610acf6004803603810190610aca919061428f565b61236a565b604051610adc91906141d0565b60405180910390f35b348015610af157600080fd5b50610b0c6004803603810190610b079190613fc3565b61238a565b005b348015610b1a57600080fd5b50610b23612470565b604051610b3091906141d0565b60405180910390f35b348015610b4557600080fd5b50610b606004803603810190610b5b91906145f3565b612483565b005b348015610b6e57600080fd5b50610b896004803603810190610b8491906146e9565b61258d565b604051610b969190614274565b60405180910390f35b348015610bab57600080fd5b50610bb4612614565b604051610bc19190614274565b60405180910390f35b348015610bd657600080fd5b50610bdf61261a565b604051610bec9190614274565b60405180910390f35b348015610c0157600080fd5b50610c1c6004803603810190610c17919061428f565b612620565b005b348015610c2a57600080fd5b50610c336127e6565b604051610c409190614274565b60405180910390f35b348015610c5557600080fd5b50610c5e6127ec565b604051610c6b9190614274565b60405180910390f35b348015610c8057600080fd5b50610c9b6004803603810190610c969190613fc3565b6127f2565b005b610ca5612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90614775565b60405180910390fd5b670de0b6b3a764000081610d4891906147c4565b90506000610d636008546009546128fa90919063ffffffff16565b90506000610d8e82610d806009548661296090919063ffffffff16565b6129da90919063ffffffff16565b90506000610db983610dab6008548761296090919063ffffffff16565b6129da90919063ffffffff16565b9050610dc484612a24565b610dd982600954612c6690919063ffffffff16565b600981905550610df481600854612c6690919063ffffffff16565b60088190555050505050565b606060038054610e0f9061484d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3b9061484d565b8015610e885780601f10610e5d57610100808354040283529160200191610e88565b820191906000526020600020905b815481529060010190602001808311610e6b57829003601f168201915b5050505050905090565b610e9a612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2090614775565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610fc691906141d0565b60405180910390a25050565b6000610fe6610fdf612958565b8484612cb0565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60215481565b61102e612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490614775565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1816467f4e41d8dd27500ca11dc471852ca93f9b624c4d8d4430b8c4fa6424fa8160405161118591906145d8565b60405180910390a150565b60095481565b61119e612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490614775565b60405180910390fd5b8051825114611271576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611268906148ca565b60405180910390fd5b60c8825111156112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad9061495c565b60405180910390fd5b60005b82518110156113335760008382815181106112d7576112d661497c565b5b602002602001015190506000670de0b6b3a76400008484815181106112ff576112fe61497c565b5b602002602001015161131191906147c4565b905061131e338383612e79565b5050808061132b906149ab565b9150506112b9565b505050565b600061134584848461310c565b61140684611351612958565b6114018560405180606001604052806028815260200161575460289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b7612958565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a449092919063ffffffff16565b612cb0565b600190509392505050565b60006012905090565b60006114c3611427612958565b846114be8560016000611438612958565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fa90919063ffffffff16565b612cb0565b6001905092915050565b60085481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900460ff1681565b601760009054906101000a900460ff1681565b600760159054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b611596612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90614775565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faacebbe32c0dbd14817cfb53e3cc8be68c7e133928317145be50a0d86c224433816040516116ed91906145d8565b60405180910390a150565b611700612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461178f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178690614775565b60405180910390fd5b670de0b6b3a7640000816117a391906147c4565b60108190555050565b6117b4612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183a90614775565b60405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b611868612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ee90614775565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611942573d6000803e3d6000fd5b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611996612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90614775565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611aee612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7490614775565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c3681612620565b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c67612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90614775565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d59612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf90614775565b60405180910390fd5b600760159054906101000a900460ff1615611e0257600080fd5b6001600760156101000a81548160ff02191690831515021790555043601f81905550426020819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b60205481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b606060048054611ec49061484d565b80601f0160208091040260200160405190810160405280929190818152602001828054611ef09061484d565b8015611f3d5780601f10611f1257610100808354040283529160200191611f3d565b820191906000526020600020905b815481529060010190602001808311611f2057829003601f168201915b5050505050905090565b611f4f612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd590614775565b60405180910390fd5b8560138190555083601481905550846011819055508260128190555081601581905550806016819055506120336016546120256012546011546128fa90919063ffffffff16565b6128fa90919063ffffffff16565b600a819055506120646015546120566014546013546128fa90919063ffffffff16565b6128fa90919063ffffffff16565b600b819055506063600a541115801561208057506063600b5411155b6120bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b690614a19565b60405180910390fd5b7ffb0d6f48717e74b9ad8ae84d152197402ac50bd6431ea28437926861021948ff60115460125460165460135460145460155460405161210496959493929190614a39565b60405180910390a1505050505050565b61211c612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a290614775565b60405180910390fd5b6121b58282613aa8565b5050565b60155481565b60165481565b60006122886121d2612958565b84612283856040518060600160405280602581526020016157a260259139600160006121fc612958565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a449092919063ffffffff16565b612cb0565b6001905092915050565b61229a612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232090614775565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b600061235a612353612958565b848461310c565b6001905092915050565b601f5481565b60196020528060005260406000206000915054906101000a900460ff1681565b612392612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241890614775565b60405180910390fd5b61012c811115612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614b0c565b60405180910390fd5b8060218190555050565b600f60009054906101000a900460ff1681565b61248b612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251190614775565b60405180910390fd5b801515601760009054906101000a900460ff1615150361253957600080fd5b80601760006101000a81548160ff0219169083151502179055507fff5917043f8453af413305b2dbd1ed9748a37df481beb71ba4b9b212a07b9bef8160405161258291906141d0565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b60145481565b612628612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ae90614775565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271d90614b9e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b600e5481565b6127fa612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288090614775565b60405180910390fd5b670de0b6b3a76400008161289d91906147c4565b905060646002546128ae9190614bed565b8110156128f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e790614c90565b60405180910390fd5b80600e8190555050565b60008082846129099190614cb0565b90508381101561294e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294590614d52565b60405180910390fd5b8091505092915050565b600033905090565b600080830361297257600090506129d4565b6000828461298091906147c4565b905082848261298f9190614bed565b146129cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c690614de4565b60405180910390fd5b809150505b92915050565b6000612a1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b49565b905092915050565b6000810315612c6357612a3681613bac565b6000600190506000600190506000612a5b6015546013546128fa90919063ffffffff16565b612a726016546011546128fa90919063ffffffff16565b612a7c9190614cb0565b9050600080821115612a9e57612a9b82476129da90919063ffffffff16565b90505b600081612ab86011546013546128fa90919063ffffffff16565b612ac291906147c4565b9050600082612ade6016546015546128fa90919063ffffffff16565b612ae891906147c4565b90506000821115612b8257600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612b3990614e32565b60006040518083038185875af1925050503d8060008114612b76576040519150601f19603f3d011682016040523d82523d6000602084013e612b7b565b606091505b5050809650505b6000811115612c1a57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612bd190614e32565b60006040518083038185875af1925050503d8060008114612c0e576040519150601f19603f3d011682016040523d82523d6000602084013e612c13565b606091505b5050809550505b7f31ea026303a62d39c4ad14716f9621f1afe3242309c2ed761d4e241ae4bf2ea982878015612c465750865b604051612c54929190614e47565b60405180910390a15050505050505b50565b6000612ca883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a44565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1690614ee2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8590614f74565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e6c9190614274565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edf90615006565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4e90615098565b60405180910390fd5b612f62838383613def565b612fcd8160405180606001604052806026815260200161577c602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a449092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613060816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fa90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130ff9190614274565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361317b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131729061512a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e1906151bc565b60405180910390fd5b6000806000601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661329057600760159054906101000a900460ff1661328f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328690615228565b60405180910390fd5b5b600084036132ac576132a486866000612e79565b505050613a3f565b600760149054906101000a900460ff161580156133135750601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133695750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a30576000601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905080156134c257601154935060125492506016549150601b60009054906101000a900460ff16156134bd57602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134369190614cb0565b421015613478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346f90615294565b60405180910390fd5b42601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b613789565b601354935060145492506015549150601b60009054906101000a900460ff1615613714576002601f546134f59190614cb0565b4311613536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352d90615300565b60405180910390fd5b601c543a111561357b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135729061536c565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036135fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f3906153d8565b60405180910390fd5b602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136499190614cb0565b42101561368b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368290615294565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60009054906101000a900460ff161561378857600061373487611946565b9050600e5486826137459190614cb0565b1115613786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377d9061546a565b60405180910390fd5b505b5b60006137b0836137a286886128fa90919063ffffffff16565b6128fa90919063ffffffff16565b905060006137bd30611946565b9050600060105482101590508080156138205750601960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561399e576001600760146101000a81548160ff0219169083151502179055506000601760009054906101000a900460ff16801561385e5750600087115b1561394e57600061387c6008546009546128fa90919063ffffffff16565b905060006138a7826138996009548861296090919063ffffffff16565b6129da90919063ffffffff16565b905060006138d2836138c46008548961296090919063ffffffff16565b6129da90919063ffffffff16565b905060006138fd600b546138ef8d8661296090919063ffffffff16565b6129da90919063ffffffff16565b90506000613928600a5461391a8e8661296090919063ffffffff16565b6129da90919063ffffffff16565b905061393d82826128fa90919063ffffffff16565b955061394886613df4565b50505050505b600061396582601054612c6690919063ffffffff16565b905061397081612a24565b600060098190555060006008819055506000600760146101000a81548160ff02191690831515021790555050505b60006139c660646139b8868c61296090919063ffffffff16565b6129da90919063ffffffff16565b90506139db818a612c6690919063ffffffff16565b98508415613a03576139f8816008546128fa90919063ffffffff16565b600881905550613a1f565b613a18816009546128fa90919063ffffffff16565b6009819055505b613a2a8b3083612e79565b50505050505b613a3b868686612e79565b5050505b505050565b6000838311158290613a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a839190614089565b60405180910390fd5b5060008385613a9b919061548a565b9050809150509392505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008083118290613b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b879190614089565b60405180910390fd5b5060008385613b9f9190614bed565b9050809150509392505050565b6000600267ffffffffffffffff811115613bc957613bc86142c1565b5b604051908082528060200260200182016040528015613bf75781602001602082028036833780820191505090505b5090503081600081518110613c0f57613c0e61497c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cda91906154d3565b81600181518110613cee57613ced61497c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d5530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cb0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613db99594939291906155f9565b600060405180830381600087803b158015613dd357600080fd5b505af1158015613de7573d6000803e3d6000fd5b505050505050565b505050565b6000613e0a6002836129da90919063ffffffff16565b90506000613e218284612c6690919063ffffffff16565b90506000479050613e3183613bac565b6000613e468247612c6690919063ffffffff16565b9050613e528382613e94565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051613e8593929190615653565b60405180910390a15050505050565b613ec130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cb0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613f0d611e5f565b426040518863ffffffff1660e01b8152600401613f2f9695949392919061568a565b60606040518083038185885af1158015613f4d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f729190615700565b5050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613fa081613f8d565b8114613fab57600080fd5b50565b600081359050613fbd81613f97565b92915050565b600060208284031215613fd957613fd8613f83565b5b6000613fe784828501613fae565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561402a57808201518184015260208101905061400f565b83811115614039576000848401525b50505050565b6000601f19601f8301169050919050565b600061405b82613ff0565b6140658185613ffb565b935061407581856020860161400c565b61407e8161403f565b840191505092915050565b600060208201905081810360008301526140a38184614050565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140d6826140ab565b9050919050565b6140e6816140cb565b81146140f157600080fd5b50565b600081359050614103816140dd565b92915050565b60008115159050919050565b61411e81614109565b811461412957600080fd5b50565b60008135905061413b81614115565b92915050565b6000806040838503121561415857614157613f83565b5b6000614166858286016140f4565b92505060206141778582860161412c565b9150509250929050565b6000806040838503121561419857614197613f83565b5b60006141a6858286016140f4565b92505060206141b785828601613fae565b9150509250929050565b6141ca81614109565b82525050565b60006020820190506141e560008301846141c1565b92915050565b6000819050919050565b600061421061420b614206846140ab565b6141eb565b6140ab565b9050919050565b6000614222826141f5565b9050919050565b600061423482614217565b9050919050565b61424481614229565b82525050565b600060208201905061425f600083018461423b565b92915050565b61426e81613f8d565b82525050565b60006020820190506142896000830184614265565b92915050565b6000602082840312156142a5576142a4613f83565b5b60006142b3848285016140f4565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6142f98261403f565b810181811067ffffffffffffffff82111715614318576143176142c1565b5b80604052505050565b600061432b613f79565b905061433782826142f0565b919050565b600067ffffffffffffffff821115614357576143566142c1565b5b602082029050602081019050919050565b600080fd5b600061438061437b8461433c565b614321565b905080838252602082019050602084028301858111156143a3576143a2614368565b5b835b818110156143cc57806143b888826140f4565b8452602084019350506020810190506143a5565b5050509392505050565b600082601f8301126143eb576143ea6142bc565b5b81356143fb84826020860161436d565b91505092915050565b600067ffffffffffffffff82111561441f5761441e6142c1565b5b602082029050602081019050919050565b600061444361443e84614404565b614321565b9050808382526020820190506020840283018581111561446657614465614368565b5b835b8181101561448f578061447b8882613fae565b845260208401935050602081019050614468565b5050509392505050565b600082601f8301126144ae576144ad6142bc565b5b81356144be848260208601614430565b91505092915050565b600080604083850312156144de576144dd613f83565b5b600083013567ffffffffffffffff8111156144fc576144fb613f88565b5b614508858286016143d6565b925050602083013567ffffffffffffffff81111561452957614528613f88565b5b61453585828601614499565b9150509250929050565b60008060006060848603121561455857614557613f83565b5b6000614566868287016140f4565b9350506020614577868287016140f4565b925050604061458886828701613fae565b9150509250925092565b600060ff82169050919050565b6145a881614592565b82525050565b60006020820190506145c3600083018461459f565b92915050565b6145d2816140cb565b82525050565b60006020820190506145ed60008301846145c9565b92915050565b60006020828403121561460957614608613f83565b5b60006146178482850161412c565b91505092915050565b600061462b826140ab565b9050919050565b61463b81614620565b82525050565b60006020820190506146566000830184614632565b92915050565b60008060008060008060c0878903121561467957614678613f83565b5b600061468789828a01613fae565b965050602061469889828a01613fae565b95505060406146a989828a01613fae565b94505060606146ba89828a01613fae565b93505060806146cb89828a01613fae565b92505060a06146dc89828a01613fae565b9150509295509295509295565b60008060408385031215614700576146ff613f83565b5b600061470e858286016140f4565b925050602061471f858286016140f4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061475f602083613ffb565b915061476a82614729565b602082019050919050565b6000602082019050818103600083015261478e81614752565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147cf82613f8d565b91506147da83613f8d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561481357614812614795565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061486557607f821691505b6020821081036148785761487761481e565b5b50919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b60006148b4601e83613ffb565b91506148bf8261487e565b602082019050919050565b600060208201905081810360008301526148e3816148a7565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b6000614946602283613ffb565b9150614951826148ea565b604082019050919050565b6000602082019050818103600083015261497581614939565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006149b682613f8d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149e8576149e7614795565b5b600182019050919050565b50565b6000614a03600083613ffb565b9150614a0e826149f3565b600082019050919050565b60006020820190508181036000830152614a32816149f6565b9050919050565b600060c082019050614a4e6000830189614265565b614a5b6020830188614265565b614a686040830187614265565b614a756060830186614265565b614a826080830185614265565b614a8f60a0830184614265565b979650505050505050565b7f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d60008201527f696e757465730000000000000000000000000000000000000000000000000000602082015250565b6000614af6602683613ffb565b9150614b0182614a9a565b604082019050919050565b60006020820190508181036000830152614b2581614ae9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b88602683613ffb565b9150614b9382614b2c565b604082019050919050565b60006020820190508181036000830152614bb781614b7b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614bf882613f8d565b9150614c0383613f8d565b925082614c1357614c12614bbe565b5b828204905092915050565b7f6d61782077616c6c65742063616e6e6f742062652073657420746f206c65737360008201527f207468616e203125000000000000000000000000000000000000000000000000602082015250565b6000614c7a602883613ffb565b9150614c8582614c1e565b604082019050919050565b60006020820190508181036000830152614ca981614c6d565b9050919050565b6000614cbb82613f8d565b9150614cc683613f8d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614cfb57614cfa614795565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614d3c601b83613ffb565b9150614d4782614d06565b602082019050919050565b60006020820190508181036000830152614d6b81614d2f565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614dce602183613ffb565b9150614dd982614d72565b604082019050919050565b60006020820190508181036000830152614dfd81614dc1565b9050919050565b600081905092915050565b6000614e1c600083614e04565b9150614e27826149f3565b600082019050919050565b6000614e3d82614e0f565b9150819050919050565b6000604082019050614e5c6000830185614265565b614e6960208301846141c1565b9392505050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ecc602483613ffb565b9150614ed782614e70565b604082019050919050565b60006020820190508181036000830152614efb81614ebf565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f5e602283613ffb565b9150614f6982614f02565b604082019050919050565b60006020820190508181036000830152614f8d81614f51565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ff0602583613ffb565b9150614ffb82614f94565b604082019050919050565b6000602082019050818103600083015261501f81614fe3565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615082602383613ffb565b915061508d82615026565b604082019050919050565b600060208201905081810360008301526150b181615075565b9050919050565b7f4942455032303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615114602683613ffb565b915061511f826150b8565b604082019050919050565b6000602082019050818103600083015261514381615107565b9050919050565b7f4942455032303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006151a6602483613ffb565b91506151b18261514a565b604082019050919050565b600060208201905081810360008301526151d581615199565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e20656e61626c6564600082015250565b6000615212602083613ffb565b915061521d826151dc565b602082019050919050565b6000602082019050818103600083015261524181615205565b9050919050565b7f636f6f6c646f776e20706572696f642061637469766500000000000000000000600082015250565b600061527e601683613ffb565b915061528982615248565b602082019050919050565b600060208201905081810360008301526152ad81615271565b9050919050565b7f796f75207368616c6c206e6f7420706173730000000000000000000000000000600082015250565b60006152ea601283613ffb565b91506152f5826152b4565b602082019050919050565b60006020820190508181036000830152615319816152dd565b9050919050565b7f4761732070726963652065786365656473206c696d69742e0000000000000000600082015250565b6000615356601883613ffb565b915061536182615320565b602082019050919050565b6000602082019050818103600083015261538581615349565b9050919050565b7f546f6f206d616e7920545820696e20626c6f636b000000000000000000000000600082015250565b60006153c2601483613ffb565b91506153cd8261538c565b602082019050919050565b600060208201905081810360008301526153f1816153b5565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b6000615454602483613ffb565b915061545f826153f8565b604082019050919050565b6000602082019050818103600083015261548381615447565b9050919050565b600061549582613f8d565b91506154a083613f8d565b9250828210156154b3576154b2614795565b5b828203905092915050565b6000815190506154cd816140dd565b92915050565b6000602082840312156154e9576154e8613f83565b5b60006154f7848285016154be565b91505092915050565b6000819050919050565b600061552561552061551b84615500565b6141eb565b613f8d565b9050919050565b6155358161550a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615570816140cb565b82525050565b60006155828383615567565b60208301905092915050565b6000602082019050919050565b60006155a68261553b565b6155b08185615546565b93506155bb83615557565b8060005b838110156155ec5781516155d38882615576565b97506155de8361558e565b9250506001810190506155bf565b5085935050505092915050565b600060a08201905061560e6000830188614265565b61561b602083018761552c565b818103604083015261562d818661559b565b905061563c60608301856145c9565b6156496080830184614265565b9695505050505050565b60006060820190506156686000830186614265565b6156756020830185614265565b6156826040830184614265565b949350505050565b600060c08201905061569f60008301896145c9565b6156ac6020830188614265565b6156b9604083018761552c565b6156c6606083018661552c565b6156d360808301856145c9565b6156e060a0830184614265565b979650505050505050565b6000815190506156fa81613f97565b92915050565b60008060006060848603121561571957615718613f83565b5b6000615727868287016156eb565b9350506020615738868287016156eb565b9250506040615749868287016156eb565b915050925092509256fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b6489b7095711cddc0a9ff9a627bb345504b3f44f849294dd148ffe1c9df163664736f6c634300080d0033
Deployed Bytecode Sourcemap
15367:15387:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28681:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3250:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19907:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4164:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15445:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3571:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16727:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19708:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15637:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30190:561;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4341:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19113:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4694:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15601:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15495:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16410:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16163:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15558:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22786:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16023:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19495:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21046:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20251:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20892:146;;;;;;;;;;;;;:::i;:::-;;3687:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7142:148;;;;;;;;;;;;;:::i;:::-;;21743:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15747:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20096:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19251:232;;;;;;;;;;;;;:::i;:::-;;16686:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6928:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15792:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15946;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3358:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21963:815;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21390:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16098:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16129:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4920:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20358:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3822:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16649:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16271:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20469:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15864:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21174:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4005:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15906:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16061:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7298:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15985:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15833:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20657:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28681:443;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28779:6:::1;28769;:17;;;;:::i;:::-;28760:26;;28797:19;28819:25;28833:10;;28819:9;;:13;;:25;;;;:::i;:::-;28797:47;;28855:15;28873:38;28899:11;28873:21;28884:9;;28873:6;:10;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;28855:56;;28922:16;28941:39;28968:11;28941:22;28952:10;;28941:6;:10;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;28922:58;;28993:28;29014:6;28993:20;:28::i;:::-;29046:22;29060:7;29046:9;;:13;;:22;;;;:::i;:::-;29034:9;:34;;;;29092:24;29107:8;29092:10;;:14;;:24;;;;:::i;:::-;29079:10;:37;;;;28749:375;;;28681:443:::0;:::o;3250:100::-;3304:13;3337:5;3330:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3250:100;:::o;19907:181::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20022:8:::1;19991:19;:28;20011:7;19991:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20062:7;20046:34;;;20071:8;20046:34;;;;;;:::i;:::-;;;;;;;;19907:181:::0;;:::o;4164:169::-;4247:4;4264:39;4273:12;:10;:12::i;:::-;4287:7;4296:6;4264:8;:39::i;:::-;4321:4;4314:11;;4164:169;;;;:::o;15445:41::-;;;;;;;;;;;;;:::o;3571:108::-;3632:7;3659:12;;3652:19;;3571:108;:::o;16727:33::-;;;;:::o;19708:187::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19806:4:::1;19776:19;:27;19796:6;19776:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19841:6;19821:9;;:27;;;;;;;;;;;;;;;;;;19864:23;19880:6;19864:23;;;;;;:::i;:::-;;;;;;;;19708:187:::0;:::o;15637:28::-;;;;:::o;30190:561::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30362:6:::1;:13;30337:14;:21;:38;30329:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;30454:3;30429:14;:21;:28;;30421:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;30512:9;30507:237;30531:14;:21;30527:1;:25;30507:237;;;30574:14;30591;30606:1;30591:17;;;;;;;;:::i;:::-;;;;;;;;30574:34;;30623:21;30660:6;30647;30654:1;30647:9;;;;;;;;:::i;:::-;;;;;;;;:20;;;;:::i;:::-;30623:44;;30682:50;30698:10;30710:6;30718:13;30682:15;:50::i;:::-;30559:185;;30554:3;;;;;:::i;:::-;;;;30507:237;;;;30190:561:::0;;:::o;4341:345::-;4454:4;4471:36;4481:6;4489:9;4500:6;4471:9;:36::i;:::-;4518:138;4527:6;4535:12;:10;:12::i;:::-;4549:106;4587:6;4549:106;;;;;;;;;;;;;;;;;:11;:19;4561:6;4549:19;;;;;;;;;;;;;;;:33;4569:12;:10;:12::i;:::-;4549:33;;;;;;;;;;;;;;;;:37;;:106;;;;;:::i;:::-;4518:8;:138::i;:::-;4674:4;4667:11;;4341:345;;;;;:::o;19113:93::-;19171:5;19196:2;19189:9;;19113:93;:::o;4694:218::-;4782:4;4799:83;4808:12;:10;:12::i;:::-;4822:7;4831:50;4870:10;4831:11;:25;4843:12;:10;:12::i;:::-;4831:25;;;;;;;;;;;;;;;:34;4857:7;4831:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4799:8;:83::i;:::-;4900:4;4893:11;;4694:218;;;;:::o;15601:29::-;;;;:::o;15495:28::-;;;;;;;;;;;;;:::o;16410:34::-;;;;;;;;;;;;;:::o;16163:40::-;;;;;;;;;;;;;:::o;15558:34::-;;;;;;;;;;;;;:::o;22786:126::-;22852:4;22876:19;:28;22896:7;22876:28;;;;;;;;;;;;;;;;;;;;;;;;;22869:35;;22786:126;;;:::o;16023:31::-;;;;:::o;19495:205::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19599:4:::1;19569:19;:27;19589:6;19569:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19640:6;19614:15;;:33;;;;;;;;;;;;;;;;;;19663:29;19685:6;19663:29;;;;;;:::i;:::-;;;;;;;;19495:205:::0;:::o;21046:120::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21151:6:::1;21141;:17;;;;:::i;:::-;21120:18;:38;;;;21046:120:::0;:::o;20251:99::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20337:5:::1;20320:14;;:22;;;;;;;;;;;;;;;;;;20251:99:::0;:::o;20892:146::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20939:17:::1;20959:21;20939:41;;20999:10;20991:28;;:39;21020:9;20991:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20928:110;20892:146::o:0;3687:127::-;3761:7;3788:9;:18;3798:7;3788:18;;;;;;;;;;;;;;;;3781:25;;3687:127;;;:::o;7142:148::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7249:1:::1;7212:40;;7233:6;;;;;;;;;;;7212:40;;;;;;;;;;;;7280:1;7263:6;;:19;;;;;;;;;;;;;;;;;;7142:148::o:0;21743:212::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21844:4:::1;21812:19;:29;21832:8;21812:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21905:4;21859:33;:43;21893:8;21859:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;21920:27;21938:8;21920:17;:27::i;:::-;21743:212:::0;:::o;15747:38::-;;;;;;;;;;;;;:::o;20096:147::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20229:6:::1;20185:33;:41;20219:6;20185:41;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;20096:147:::0;;:::o;19251:232::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19315:14:::1;;;;;;;;;;;19314:15;19306:24;;;::::0;::::1;;19358:4;19341:14;;:21;;;;;;;;;;;;;;;;;;19387:12;19373:11;:26;;;;19428:15;19410;:33;;;;19459:16;;;;;;;;;;19251:232::o:0;16686:30::-;;;;:::o;6928:79::-;6966:7;6993:6;;;;;;;;;;;6986:13;;6928:79;:::o;15792:32::-;;;;;;;;;;;;;:::o;15946:::-;;;;:::o;3358:104::-;3414:13;3447:7;3440:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3358:104;:::o;21963:815::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22180:12:::1;22161:16;:31;;;;22221:12;22203:15;:30;;;;22264:13;22244:17;:33;;;;22307:13;22288:16;:32;;;;22343:6;22331:9;:18;;;;22373:7;22360:10;:20;;;;22409:55;22453:10;;22409:39;22431:16;;22409:17;;:21;;:39;;;;:::i;:::-;:43;;:55;;;;:::i;:::-;22393:13;:71;;;;22490:52;22532:9;;22490:37;22511:15;;22490:16;;:20;;:37;;;;:::i;:::-;:41;;:52;;;;:::i;:::-;22475:12;:67;;;;22593:2;22576:13;;:19;;:41;;;;;22615:2;22599:12;;:18;;22576:41;22568:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;22640:130;22651:17;;22670:16;;22688:10;;22700:16;;22743:15;;22760:9;;22640:130;;;;;;;;;;;:::i;:::-;;;;;;;;21963:815:::0;;;;;;:::o;21390:140::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21481:41:::1;21510:4;21516:5;21481:28;:41::i;:::-;21390:140:::0;;:::o;16098:24::-;;;;:::o;16129:25::-;;;;:::o;4920:286::-;5013:4;5030:146;5039:12;:10;:12::i;:::-;5053:7;5062:113;5101:15;5062:113;;;;;;;;;;;;;;;;;:11;:25;5074:12;:10;:12::i;:::-;5062:25;;;;;;;;;;;;;;;:34;5088:7;5062:34;;;;;;;;;;;;;;;;:38;;:113;;;;;:::i;:::-;5030:8;:146::i;:::-;5194:4;5187:11;;4920:286;;;;:::o;20358:103::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20448:5:::1;20429:16;;:24;;;;;;;;;;;;;;;;;;20358:103:::0;:::o;3822:175::-;3908:4;3925:42;3935:12;:10;:12::i;:::-;3949:9;3960:6;3925:9;:42::i;:::-;3985:4;3978:11;;3822:175;;;;:::o;16649:26::-;;;;:::o;16271:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;20469:174::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20557:3:::1;20548:5;:12;;20540:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;20630:5;20614:13;:21;;;;20469:174:::0;:::o;15864:35::-;;;;;;;;;;;;;:::o;21174:208::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21279:7:::1;21254:32;;:21;;;;;;;;;;;:32;;::::0;21246:41:::1;;;::::0;::::1;;21322:7;21298:21;;:31;;;;;;;;;;;;;;;;;;21345:29;21366:7;21345:29;;;;;;:::i;:::-;;;;;;;;21174:208:::0;:::o;4005:151::-;4094:7;4121:11;:18;4133:5;4121:18;;;;;;;;;;;;;;;:27;4140:7;4121:27;;;;;;;;;;;;;;;;4114:34;;4005:151;;;;:::o;15906:33::-;;;;:::o;16061:30::-;;;;:::o;7298:244::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7407:1:::1;7387:22;;:8;:22;;::::0;7379:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7497:8;7468:38;;7489:6;;;;;;;;;;;7468:38;;;;;;;;;;;;7526:8;7517:6;;:17;;;;;;;;;;;;;;;;;;7298:244:::0;:::o;15985:31::-;;;;:::o;15833:24::-;;;;:::o;20657:218::-;7065:12;:10;:12::i;:::-;7055:22;;:6;;;;;;;;;;;:22;;;7047:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20741:6:::1;20732:5;:16;;;;:::i;:::-;20724:24;;20791:3;20776:12;;:18;;;;:::i;:::-;20767:5;:27;;20759:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;20862:5;20850:9;:17;;;;20657:218:::0;:::o;484:179::-;542:7;562:9;578:1;574;:5;;;;:::i;:::-;562:17;;603:1;598;:6;;590:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;654:1;647:8;;;484:179;;;;:::o;108:98::-;161:7;188:10;181:17;;108:98;:::o;1013:248::-;1071:7;1100:1;1095;:6;1091:47;;1125:1;1118:8;;;;1091:47;1150:9;1166:1;1162;:5;;;;:::i;:::-;1150:17;;1195:1;1190;1186;:5;;;;:::i;:::-;:10;1178:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1252:1;1245:8;;;1013:248;;;;;:::o;1269:132::-;1327:7;1354:39;1358:1;1361;1354:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1347:46;;1269:132;;;;:::o;29157:1025::-;29236:1;29226:6;:11;29222:50;29254:7;29222:50;29282:24;29299:6;29282:16;:24::i;:::-;29319:12;29334:4;29319:19;;29349:15;29367:4;29349:22;;29392:23;29454:31;29475:9;;29454:16;;:20;;:31;;;;:::i;:::-;29418:33;29440:10;;29418:17;;:21;;:33;;;;:::i;:::-;:67;;;;:::i;:::-;29392:93;;29498:19;29550:1;29532:15;:19;29528:108;;;29582:42;29608:15;29582:21;:25;;:42;;;;:::i;:::-;29568:56;;29528:108;29646:23;29714:11;29672:39;29693:17;;29672:16;;:20;;:39;;;;:::i;:::-;:53;;;;:::i;:::-;29646:79;;29736:17;29784:11;29756:25;29770:10;;29756:9;;:13;;:25;;;;:::i;:::-;:39;;;;:::i;:::-;29736:59;;29838:1;29820:15;:19;29816:123;;;29878:15;;;;;;;;;;;29870:29;;29907:15;29870:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29856:71;;;;;29816:123;29975:1;29963:9;:13;29959:108;;;30018:9;;;;;;;;;;;30010:23;;30041:9;30010:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29993:62;;;;;29959:108;30084:90;30112:15;30142:7;:21;;;;;30153:10;30142:21;30084:90;;;;;;;:::i;:::-;;;;;;;;29211:971;;;;;;29157:1025;;:::o;671:136::-;729:7;756:43;760:1;763;756:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;749:50;;671:136;;;;:::o;6146:346::-;6265:1;6248:19;;:5;:19;;;6240:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6346:1;6327:21;;:7;:21;;;6319:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6430:6;6400:11;:18;6412:5;6400:18;;;;;;;;;;;;;;;:27;6419:7;6400:27;;;;;;;;;;;;;;;:36;;;;6468:7;6452:32;;6461:5;6452:32;;;6477:6;6452:32;;;;;;:::i;:::-;;;;;;;;6146:346;;;:::o;5214:538::-;5338:1;5320:20;;:6;:20;;;5312:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5422:1;5401:23;;:9;:23;;;5393:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5477:47;5498:6;5506:9;5517:6;5477:20;:47::i;:::-;5557:70;5579:6;5557:70;;;;;;;;;;;;;;;;;:9;:17;5567:6;5557:17;;;;;;;;;;;;;;;;:21;;:70;;;;;:::i;:::-;5537:9;:17;5547:6;5537:17;;;;;;;;;;;;;;;:90;;;;5661:32;5686:6;5661:9;:20;5671:9;5661:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5638:9;:20;5648:9;5638:20;;;;;;;;;;;;;;;:55;;;;5726:9;5709:35;;5718:6;5709:35;;;5737:6;5709:35;;;;;;:::i;:::-;;;;;;;;5214:538;;;:::o;22920:4235::-;23036:1;23020:18;;:4;:18;;;23012:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;23114:1;23100:16;;:2;:16;;;23092:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23170:21;23202:20;23233:14;23265:33;:39;23299:4;23265:39;;;;;;;;;;;;;;;;;;;;;;;;;23260:142;;23329:14;;;;;;;;;;;23321:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;23260:142;23428:1;23418:6;:11;23414:3678;;23446:28;23462:4;23468:2;23472:1;23446:15;:28::i;:::-;23489:7;;;;;23414:3678;23552:8;;;;;;;;;;;23551:9;:39;;;;;23565:19;:25;23585:4;23565:25;;;;;;;;;;;;;;;;;;;;;;;;;23564:26;23551:39;:67;;;;;23595:19;:23;23615:2;23595:23;;;;;;;;;;;;;;;;;;;;;;;;;23594:24;23551:67;23533:3559;;;23645:14;23662:25;:29;23688:2;23662:29;;;;;;;;;;;;;;;;;;;;;;;;;23645:46;;23710:9;23706:1514;;;23756:17;;23740:33;;23807:16;;23792:31;;23851:10;;23842:19;;23886:14;;;;;;;;;;;23882:269;;;23990:13;;23948:28;:39;23977:9;23948:39;;;;;;;;;;;;;;;;:55;;;;:::i;:::-;23929:15;:74;;23921:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;24116:15;24074:28;:39;24103:9;24074:39;;;;;;;;;;;;;;;:57;;;;23882:269;23706:1514;;;24235:16;;24219:32;;24285:15;;24270:30;;24328:9;;24319:18;;24362:14;;;;;;;;;;;24358:598;;;24434:1;24420:11;;:15;;;;:::i;:::-;24405:12;:30;24397:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24499:13;;24484:11;:28;;24476:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24606:12;24567:24;:35;24592:9;24567:35;;;;;;;;;;;;;;;;:51;24559:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;24730:13;;24688:28;:39;24717:9;24688:39;;;;;;;;;;;;;;;;:55;;;;:::i;:::-;24669:15;:74;;24661:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;24852:12;24814:24;:35;24839:9;24814:35;;;;;;;;;;;;;;;:50;;;;24925:15;24883:28;:39;24912:9;24883:39;;;;;;;;;;;;;;;:57;;;;24358:598;24976:16;;;;;;;;;;;24972:233;;;25009:32;25044:13;25054:2;25044:9;:13::i;:::-;25009:48;;25117:9;;25107:6;25080:24;:33;;;;:::i;:::-;:46;;25072:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;24994:211;24972:233;23706:1514;25236:17;25256:43;25292:6;25256:31;25274:12;25256:13;:17;;:31;;;;:::i;:::-;:35;;:43;;;;:::i;:::-;25236:63;;25316:28;25347:24;25365:4;25347:9;:24::i;:::-;25316:55;;25388:12;25427:18;;25403:20;:42;;25388:57;;25466:7;:43;;;;;25478:25;:31;25504:4;25478:31;;;;;;;;;;;;;;;;;;;;;;;;;25477:32;25466:43;25462:1272;;;25541:4;25530:8;;:15;;;;;;;;;;;;;;;;;;25566:18;25609:21;;;;;;;;;;;:41;;;;;25649:1;25634:12;:16;25609:41;25605:875;;;25675:20;25698:25;25712:10;;25698:9;;:13;;:25;;;;:::i;:::-;25675:48;;25746:24;25773:105;25865:12;25773:61;25824:9;;25773:20;:50;;:61;;;;:::i;:::-;:91;;:105;;;;:::i;:::-;25746:132;;25901:22;25926:106;26019:12;25926:62;25977:10;;25926:20;:50;;:62;;;;:::i;:::-;:92;;:106;;;;:::i;:::-;25901:131;;26057:21;26081:104;26172:12;;26081:60;26128:12;26081:16;:46;;:60;;;;:::i;:::-;:90;;:104;;;;:::i;:::-;26057:128;;26210:22;26235:103;26324:13;;26235:58;26280:12;26235:14;:44;;:58;;;;:::i;:::-;:88;;:103;;;;:::i;:::-;26210:128;;26376:33;26395:13;26376:14;:18;;:33;;;;:::i;:::-;26363:46;;26434:26;26449:10;26434:14;:26::i;:::-;25652:828;;;;;25605:875;26500:24;26527:34;26550:10;26527:18;;:22;;:34;;;;:::i;:::-;26500:61;;26580:38;26601:16;26580:20;:38::i;:::-;26649:1;26637:9;:13;;;;26682:1;26669:10;:14;;;;26713:5;26702:8;;:16;;;;;;;;;;;;;;;;;;25511:1223;;25462:1272;26750:12;26765:30;26791:3;26765:21;26776:9;26765:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;26750:45;;26821:16;26832:4;26821:6;:10;;:16;;;;:::i;:::-;26812:25;;26858:9;26854:155;;;26901:20;26916:4;26901:10;;:14;;:20;;;;:::i;:::-;26888:10;:33;;;;26854:155;;;26974:19;26988:4;26974:9;;:13;;:19;;;;:::i;:::-;26962:9;:31;;;;26854:155;27025:42;27041:4;27055;27062;27025:15;:42::i;:::-;23630:3462;;;;;23533:3559;27104:33;27120:4;27126:2;27130:6;27104:15;:33::i;:::-;22999:4156;;;22920:4235;;;;:::o;815:190::-;901:7;934:1;929;:6;;937:12;921:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;961:9;977:1;973;:5;;;;:::i;:::-;961:17;;996:1;989:8;;;815:190;;;;;:::o;21538:188::-;21655:5;21621:25;:31;21647:4;21621:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21712:5;21678:40;;21706:4;21678:40;;;;;;;;;;;;21538:188;;:::o;1409:189::-;1495:7;1527:1;1523;:5;1530:12;1515:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1554:9;1570:1;1566;:5;;;;:::i;:::-;1554:17;;1589:1;1582:8;;;1409:189;;;;;:::o;27653:499::-;27719:21;27757:1;27743:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27719:40;;27788:4;27770;27775:1;27770:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27814:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27804:4;27809:1;27804:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27847:62;27864:4;27879:15;;;;;;;;;;;27897:11;27847:8;:62::i;:::-;27920:15;;;;;;;;;;;:66;;;28001:11;28027:1;28071:4;28098;28118:15;27920:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27708:444;27653:499;:::o;6500:91::-;;;;:::o;27165:480::-;27224:12;27239:13;27250:1;27239:6;:10;;:13;;;;:::i;:::-;27224:28;;27263:17;27283:16;27294:4;27283:6;:10;;:16;;;;:::i;:::-;27263:36;;27310:22;27335:21;27310:46;;27367:22;27384:4;27367:16;:22::i;:::-;27470:18;27491:41;27517:14;27491:21;:25;;:41;;;;:::i;:::-;27470:62;;27543:35;27556:9;27567:10;27543:12;:35::i;:::-;27594:43;27609:4;27615:10;27627:9;27594:43;;;;;;;;:::i;:::-;;;;;;;;27213:432;;;;27165:480;:::o;28160:513::-;28308:62;28325:4;28340:15;;;;;;;;;;;28358:11;28308:8;:62::i;:::-;28413:15;;;;;;;;;;;:31;;;28452:9;28485:4;28505:11;28531:1;28574;28617:7;:5;:7::i;:::-;28639:15;28413:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28160:513;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:307::-;1373:1;1383:113;1397:6;1394:1;1391:13;1383:113;;;1482:1;1477:3;1473:11;1467:18;1463:1;1458:3;1454:11;1447:39;1419:2;1416:1;1412:10;1407:15;;1383:113;;;1514:6;1511:1;1508:13;1505:101;;;1594:1;1585:6;1580:3;1576:16;1569:27;1505:101;1354:258;1305:307;;;:::o;1618:102::-;1659:6;1710:2;1706:7;1701:2;1694:5;1690:14;1686:28;1676:38;;1618:102;;;:::o;1726:364::-;1814:3;1842:39;1875:5;1842:39;:::i;:::-;1897:71;1961:6;1956:3;1897:71;:::i;:::-;1890:78;;1977:52;2022:6;2017:3;2010:4;2003:5;1999:16;1977:52;:::i;:::-;2054:29;2076:6;2054:29;:::i;:::-;2049:3;2045:39;2038:46;;1818:272;1726:364;;;;:::o;2096:313::-;2209:4;2247:2;2236:9;2232:18;2224:26;;2296:9;2290:4;2286:20;2282:1;2271:9;2267:17;2260:47;2324:78;2397:4;2388:6;2324:78;:::i;:::-;2316:86;;2096:313;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:96::-;2584:7;2613:24;2631:5;2613:24;:::i;:::-;2602:35;;2547:96;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:90::-;2956:7;2999:5;2992:13;2985:21;2974:32;;2922:90;;;:::o;3018:116::-;3088:21;3103:5;3088:21;:::i;:::-;3081:5;3078:32;3068:60;;3124:1;3121;3114:12;3068:60;3018:116;:::o;3140:133::-;3183:5;3221:6;3208:20;3199:29;;3237:30;3261:5;3237:30;:::i;:::-;3140:133;;;;:::o;3279:468::-;3344:6;3352;3401:2;3389:9;3380:7;3376:23;3372:32;3369:119;;;3407:79;;:::i;:::-;3369:119;3527:1;3552:53;3597:7;3588:6;3577:9;3573:22;3552:53;:::i;:::-;3542:63;;3498:117;3654:2;3680:50;3722:7;3713:6;3702:9;3698:22;3680:50;:::i;:::-;3670:60;;3625:115;3279:468;;;;;:::o;3753:474::-;3821:6;3829;3878:2;3866:9;3857:7;3853:23;3849:32;3846:119;;;3884:79;;:::i;:::-;3846:119;4004:1;4029:53;4074:7;4065:6;4054:9;4050:22;4029:53;:::i;:::-;4019:63;;3975:117;4131:2;4157:53;4202:7;4193:6;4182:9;4178:22;4157:53;:::i;:::-;4147:63;;4102:118;3753:474;;;;;:::o;4233:109::-;4314:21;4329:5;4314:21;:::i;:::-;4309:3;4302:34;4233:109;;:::o;4348:210::-;4435:4;4473:2;4462:9;4458:18;4450:26;;4486:65;4548:1;4537:9;4533:17;4524:6;4486:65;:::i;:::-;4348:210;;;;:::o;4564:60::-;4592:3;4613:5;4606:12;;4564:60;;;:::o;4630:142::-;4680:9;4713:53;4731:34;4740:24;4758:5;4740:24;:::i;:::-;4731:34;:::i;:::-;4713:53;:::i;:::-;4700:66;;4630:142;;;:::o;4778:126::-;4828:9;4861:37;4892:5;4861:37;:::i;:::-;4848:50;;4778:126;;;:::o;4910:153::-;4987:9;5020:37;5051:5;5020:37;:::i;:::-;5007:50;;4910:153;;;:::o;5069:185::-;5183:64;5241:5;5183:64;:::i;:::-;5178:3;5171:77;5069:185;;:::o;5260:276::-;5380:4;5418:2;5407:9;5403:18;5395:26;;5431:98;5526:1;5515:9;5511:17;5502:6;5431:98;:::i;:::-;5260:276;;;;:::o;5542:118::-;5629:24;5647:5;5629:24;:::i;:::-;5624:3;5617:37;5542:118;;:::o;5666:222::-;5759:4;5797:2;5786:9;5782:18;5774:26;;5810:71;5878:1;5867:9;5863:17;5854:6;5810:71;:::i;:::-;5666:222;;;;:::o;5894:329::-;5953:6;6002:2;5990:9;5981:7;5977:23;5973:32;5970:119;;;6008:79;;:::i;:::-;5970:119;6128:1;6153:53;6198:7;6189:6;6178:9;6174:22;6153:53;:::i;:::-;6143:63;;6099:117;5894:329;;;;:::o;6229:117::-;6338:1;6335;6328:12;6352:180;6400:77;6397:1;6390:88;6497:4;6494:1;6487:15;6521:4;6518:1;6511:15;6538:281;6621:27;6643:4;6621:27;:::i;:::-;6613:6;6609:40;6751:6;6739:10;6736:22;6715:18;6703:10;6700:34;6697:62;6694:88;;;6762:18;;:::i;:::-;6694:88;6802:10;6798:2;6791:22;6581:238;6538:281;;:::o;6825:129::-;6859:6;6886:20;;:::i;:::-;6876:30;;6915:33;6943:4;6935:6;6915:33;:::i;:::-;6825:129;;;:::o;6960:311::-;7037:4;7127:18;7119:6;7116:30;7113:56;;;7149:18;;:::i;:::-;7113:56;7199:4;7191:6;7187:17;7179:25;;7259:4;7253;7249:15;7241:23;;6960:311;;;:::o;7277:117::-;7386:1;7383;7376:12;7417:710;7513:5;7538:81;7554:64;7611:6;7554:64;:::i;:::-;7538:81;:::i;:::-;7529:90;;7639:5;7668:6;7661:5;7654:21;7702:4;7695:5;7691:16;7684:23;;7755:4;7747:6;7743:17;7735:6;7731:30;7784:3;7776:6;7773:15;7770:122;;;7803:79;;:::i;:::-;7770:122;7918:6;7901:220;7935:6;7930:3;7927:15;7901:220;;;8010:3;8039:37;8072:3;8060:10;8039:37;:::i;:::-;8034:3;8027:50;8106:4;8101:3;8097:14;8090:21;;7977:144;7961:4;7956:3;7952:14;7945:21;;7901:220;;;7905:21;7519:608;;7417:710;;;;;:::o;8150:370::-;8221:5;8270:3;8263:4;8255:6;8251:17;8247:27;8237:122;;8278:79;;:::i;:::-;8237:122;8395:6;8382:20;8420:94;8510:3;8502:6;8495:4;8487:6;8483:17;8420:94;:::i;:::-;8411:103;;8227:293;8150:370;;;;:::o;8526:311::-;8603:4;8693:18;8685:6;8682:30;8679:56;;;8715:18;;:::i;:::-;8679:56;8765:4;8757:6;8753:17;8745:25;;8825:4;8819;8815:15;8807:23;;8526:311;;;:::o;8860:710::-;8956:5;8981:81;8997:64;9054:6;8997:64;:::i;:::-;8981:81;:::i;:::-;8972:90;;9082:5;9111:6;9104:5;9097:21;9145:4;9138:5;9134:16;9127:23;;9198:4;9190:6;9186:17;9178:6;9174:30;9227:3;9219:6;9216:15;9213:122;;;9246:79;;:::i;:::-;9213:122;9361:6;9344:220;9378:6;9373:3;9370:15;9344:220;;;9453:3;9482:37;9515:3;9503:10;9482:37;:::i;:::-;9477:3;9470:50;9549:4;9544:3;9540:14;9533:21;;9420:144;9404:4;9399:3;9395:14;9388:21;;9344:220;;;9348:21;8962:608;;8860:710;;;;;:::o;9593:370::-;9664:5;9713:3;9706:4;9698:6;9694:17;9690:27;9680:122;;9721:79;;:::i;:::-;9680:122;9838:6;9825:20;9863:94;9953:3;9945:6;9938:4;9930:6;9926:17;9863:94;:::i;:::-;9854:103;;9670:293;9593:370;;;;:::o;9969:894::-;10087:6;10095;10144:2;10132:9;10123:7;10119:23;10115:32;10112:119;;;10150:79;;:::i;:::-;10112:119;10298:1;10287:9;10283:17;10270:31;10328:18;10320:6;10317:30;10314:117;;;10350:79;;:::i;:::-;10314:117;10455:78;10525:7;10516:6;10505:9;10501:22;10455:78;:::i;:::-;10445:88;;10241:302;10610:2;10599:9;10595:18;10582:32;10641:18;10633:6;10630:30;10627:117;;;10663:79;;:::i;:::-;10627:117;10768:78;10838:7;10829:6;10818:9;10814:22;10768:78;:::i;:::-;10758:88;;10553:303;9969:894;;;;;:::o;10869:619::-;10946:6;10954;10962;11011:2;10999:9;10990:7;10986:23;10982:32;10979:119;;;11017:79;;:::i;:::-;10979:119;11137:1;11162:53;11207:7;11198:6;11187:9;11183:22;11162:53;:::i;:::-;11152:63;;11108:117;11264:2;11290:53;11335:7;11326:6;11315:9;11311:22;11290:53;:::i;:::-;11280:63;;11235:118;11392:2;11418:53;11463:7;11454:6;11443:9;11439:22;11418:53;:::i;:::-;11408:63;;11363:118;10869:619;;;;;:::o;11494:86::-;11529:7;11569:4;11562:5;11558:16;11547:27;;11494:86;;;:::o;11586:112::-;11669:22;11685:5;11669:22;:::i;:::-;11664:3;11657:35;11586:112;;:::o;11704:214::-;11793:4;11831:2;11820:9;11816:18;11808:26;;11844:67;11908:1;11897:9;11893:17;11884:6;11844:67;:::i;:::-;11704:214;;;;:::o;11924:118::-;12011:24;12029:5;12011:24;:::i;:::-;12006:3;11999:37;11924:118;;:::o;12048:222::-;12141:4;12179:2;12168:9;12164:18;12156:26;;12192:71;12260:1;12249:9;12245:17;12236:6;12192:71;:::i;:::-;12048:222;;;;:::o;12276:323::-;12332:6;12381:2;12369:9;12360:7;12356:23;12352:32;12349:119;;;12387:79;;:::i;:::-;12349:119;12507:1;12532:50;12574:7;12565:6;12554:9;12550:22;12532:50;:::i;:::-;12522:60;;12478:114;12276:323;;;;:::o;12605:104::-;12650:7;12679:24;12697:5;12679:24;:::i;:::-;12668:35;;12605:104;;;:::o;12715:142::-;12818:32;12844:5;12818:32;:::i;:::-;12813:3;12806:45;12715:142;;:::o;12863:254::-;12972:4;13010:2;12999:9;12995:18;12987:26;;13023:87;13107:1;13096:9;13092:17;13083:6;13023:87;:::i;:::-;12863:254;;;;:::o;13123:1057::-;13227:6;13235;13243;13251;13259;13267;13316:3;13304:9;13295:7;13291:23;13287:33;13284:120;;;13323:79;;:::i;:::-;13284:120;13443:1;13468:53;13513:7;13504:6;13493:9;13489:22;13468:53;:::i;:::-;13458:63;;13414:117;13570:2;13596:53;13641:7;13632:6;13621:9;13617:22;13596:53;:::i;:::-;13586:63;;13541:118;13698:2;13724:53;13769:7;13760:6;13749:9;13745:22;13724:53;:::i;:::-;13714:63;;13669:118;13826:2;13852:53;13897:7;13888:6;13877:9;13873:22;13852:53;:::i;:::-;13842:63;;13797:118;13954:3;13981:53;14026:7;14017:6;14006:9;14002:22;13981:53;:::i;:::-;13971:63;;13925:119;14083:3;14110:53;14155:7;14146:6;14135:9;14131:22;14110:53;:::i;:::-;14100:63;;14054:119;13123:1057;;;;;;;;:::o;14186:474::-;14254:6;14262;14311:2;14299:9;14290:7;14286:23;14282:32;14279:119;;;14317:79;;:::i;:::-;14279:119;14437:1;14462:53;14507:7;14498:6;14487:9;14483:22;14462:53;:::i;:::-;14452:63;;14408:117;14564:2;14590:53;14635:7;14626:6;14615:9;14611:22;14590:53;:::i;:::-;14580:63;;14535:118;14186:474;;;;;:::o;14666:182::-;14806:34;14802:1;14794:6;14790:14;14783:58;14666:182;:::o;14854:366::-;14996:3;15017:67;15081:2;15076:3;15017:67;:::i;:::-;15010:74;;15093:93;15182:3;15093:93;:::i;:::-;15211:2;15206:3;15202:12;15195:19;;14854:366;;;:::o;15226:419::-;15392:4;15430:2;15419:9;15415:18;15407:26;;15479:9;15473:4;15469:20;15465:1;15454:9;15450:17;15443:47;15507:131;15633:4;15507:131;:::i;:::-;15499:139;;15226:419;;;:::o;15651:180::-;15699:77;15696:1;15689:88;15796:4;15793:1;15786:15;15820:4;15817:1;15810:15;15837:348;15877:7;15900:20;15918:1;15900:20;:::i;:::-;15895:25;;15934:20;15952:1;15934:20;:::i;:::-;15929:25;;16122:1;16054:66;16050:74;16047:1;16044:81;16039:1;16032:9;16025:17;16021:105;16018:131;;;16129:18;;:::i;:::-;16018:131;16177:1;16174;16170:9;16159:20;;15837:348;;;;:::o;16191:180::-;16239:77;16236:1;16229:88;16336:4;16333:1;16326:15;16360:4;16357:1;16350:15;16377:320;16421:6;16458:1;16452:4;16448:12;16438:22;;16505:1;16499:4;16495:12;16526:18;16516:81;;16582:4;16574:6;16570:17;16560:27;;16516:81;16644:2;16636:6;16633:14;16613:18;16610:38;16607:84;;16663:18;;:::i;:::-;16607:84;16428:269;16377:320;;;:::o;16703:180::-;16843:32;16839:1;16831:6;16827:14;16820:56;16703:180;:::o;16889:366::-;17031:3;17052:67;17116:2;17111:3;17052:67;:::i;:::-;17045:74;;17128:93;17217:3;17128:93;:::i;:::-;17246:2;17241:3;17237:12;17230:19;;16889:366;;;:::o;17261:419::-;17427:4;17465:2;17454:9;17450:18;17442:26;;17514:9;17508:4;17504:20;17500:1;17489:9;17485:17;17478:47;17542:131;17668:4;17542:131;:::i;:::-;17534:139;;17261:419;;;:::o;17686:221::-;17826:34;17822:1;17814:6;17810:14;17803:58;17895:4;17890:2;17882:6;17878:15;17871:29;17686:221;:::o;17913:366::-;18055:3;18076:67;18140:2;18135:3;18076:67;:::i;:::-;18069:74;;18152:93;18241:3;18152:93;:::i;:::-;18270:2;18265:3;18261:12;18254:19;;17913:366;;;:::o;18285:419::-;18451:4;18489:2;18478:9;18474:18;18466:26;;18538:9;18532:4;18528:20;18524:1;18513:9;18509:17;18502:47;18566:131;18692:4;18566:131;:::i;:::-;18558:139;;18285:419;;;:::o;18710:180::-;18758:77;18755:1;18748:88;18855:4;18852:1;18845:15;18879:4;18876:1;18869:15;18896:233;18935:3;18958:24;18976:5;18958:24;:::i;:::-;18949:33;;19004:66;18997:5;18994:77;18991:103;;19074:18;;:::i;:::-;18991:103;19121:1;19114:5;19110:13;19103:20;;18896:233;;;:::o;19135:114::-;;:::o;19255:364::-;19397:3;19418:66;19482:1;19477:3;19418:66;:::i;:::-;19411:73;;19493:93;19582:3;19493:93;:::i;:::-;19611:1;19606:3;19602:11;19595:18;;19255:364;;;:::o;19625:419::-;19791:4;19829:2;19818:9;19814:18;19806:26;;19878:9;19872:4;19868:20;19864:1;19853:9;19849:17;19842:47;19906:131;20032:4;19906:131;:::i;:::-;19898:139;;19625:419;;;:::o;20050:775::-;20283:4;20321:3;20310:9;20306:19;20298:27;;20335:71;20403:1;20392:9;20388:17;20379:6;20335:71;:::i;:::-;20416:72;20484:2;20473:9;20469:18;20460:6;20416:72;:::i;:::-;20498;20566:2;20555:9;20551:18;20542:6;20498:72;:::i;:::-;20580;20648:2;20637:9;20633:18;20624:6;20580:72;:::i;:::-;20662:73;20730:3;20719:9;20715:19;20706:6;20662:73;:::i;:::-;20745;20813:3;20802:9;20798:19;20789:6;20745:73;:::i;:::-;20050:775;;;;;;;;;:::o;20831:225::-;20971:34;20967:1;20959:6;20955:14;20948:58;21040:8;21035:2;21027:6;21023:15;21016:33;20831:225;:::o;21062:366::-;21204:3;21225:67;21289:2;21284:3;21225:67;:::i;:::-;21218:74;;21301:93;21390:3;21301:93;:::i;:::-;21419:2;21414:3;21410:12;21403:19;;21062:366;;;:::o;21434:419::-;21600:4;21638:2;21627:9;21623:18;21615:26;;21687:9;21681:4;21677:20;21673:1;21662:9;21658:17;21651:47;21715:131;21841:4;21715:131;:::i;:::-;21707:139;;21434:419;;;:::o;21859:225::-;21999:34;21995:1;21987:6;21983:14;21976:58;22068:8;22063:2;22055:6;22051:15;22044:33;21859:225;:::o;22090:366::-;22232:3;22253:67;22317:2;22312:3;22253:67;:::i;:::-;22246:74;;22329:93;22418:3;22329:93;:::i;:::-;22447:2;22442:3;22438:12;22431:19;;22090:366;;;:::o;22462:419::-;22628:4;22666:2;22655:9;22651:18;22643:26;;22715:9;22709:4;22705:20;22701:1;22690:9;22686:17;22679:47;22743:131;22869:4;22743:131;:::i;:::-;22735:139;;22462:419;;;:::o;22887:180::-;22935:77;22932:1;22925:88;23032:4;23029:1;23022:15;23056:4;23053:1;23046:15;23073:185;23113:1;23130:20;23148:1;23130:20;:::i;:::-;23125:25;;23164:20;23182:1;23164:20;:::i;:::-;23159:25;;23203:1;23193:35;;23208:18;;:::i;:::-;23193:35;23250:1;23247;23243:9;23238:14;;23073:185;;;;:::o;23264:227::-;23404:34;23400:1;23392:6;23388:14;23381:58;23473:10;23468:2;23460:6;23456:15;23449:35;23264:227;:::o;23497:366::-;23639:3;23660:67;23724:2;23719:3;23660:67;:::i;:::-;23653:74;;23736:93;23825:3;23736:93;:::i;:::-;23854:2;23849:3;23845:12;23838:19;;23497:366;;;:::o;23869:419::-;24035:4;24073:2;24062:9;24058:18;24050:26;;24122:9;24116:4;24112:20;24108:1;24097:9;24093:17;24086:47;24150:131;24276:4;24150:131;:::i;:::-;24142:139;;23869:419;;;:::o;24294:305::-;24334:3;24353:20;24371:1;24353:20;:::i;:::-;24348:25;;24387:20;24405:1;24387:20;:::i;:::-;24382:25;;24541:1;24473:66;24469:74;24466:1;24463:81;24460:107;;;24547:18;;:::i;:::-;24460:107;24591:1;24588;24584:9;24577:16;;24294:305;;;;:::o;24605:177::-;24745:29;24741:1;24733:6;24729:14;24722:53;24605:177;:::o;24788:366::-;24930:3;24951:67;25015:2;25010:3;24951:67;:::i;:::-;24944:74;;25027:93;25116:3;25027:93;:::i;:::-;25145:2;25140:3;25136:12;25129:19;;24788:366;;;:::o;25160:419::-;25326:4;25364:2;25353:9;25349:18;25341:26;;25413:9;25407:4;25403:20;25399:1;25388:9;25384:17;25377:47;25441:131;25567:4;25441:131;:::i;:::-;25433:139;;25160:419;;;:::o;25585:220::-;25725:34;25721:1;25713:6;25709:14;25702:58;25794:3;25789:2;25781:6;25777:15;25770:28;25585:220;:::o;25811:366::-;25953:3;25974:67;26038:2;26033:3;25974:67;:::i;:::-;25967:74;;26050:93;26139:3;26050:93;:::i;:::-;26168:2;26163:3;26159:12;26152:19;;25811:366;;;:::o;26183:419::-;26349:4;26387:2;26376:9;26372:18;26364:26;;26436:9;26430:4;26426:20;26422:1;26411:9;26407:17;26400:47;26464:131;26590:4;26464:131;:::i;:::-;26456:139;;26183:419;;;:::o;26608:147::-;26709:11;26746:3;26731:18;;26608:147;;;;:::o;26761:398::-;26920:3;26941:83;27022:1;27017:3;26941:83;:::i;:::-;26934:90;;27033:93;27122:3;27033:93;:::i;:::-;27151:1;27146:3;27142:11;27135:18;;26761:398;;;:::o;27165:379::-;27349:3;27371:147;27514:3;27371:147;:::i;:::-;27364:154;;27535:3;27528:10;;27165:379;;;:::o;27550:320::-;27665:4;27703:2;27692:9;27688:18;27680:26;;27716:71;27784:1;27773:9;27769:17;27760:6;27716:71;:::i;:::-;27797:66;27859:2;27848:9;27844:18;27835:6;27797:66;:::i;:::-;27550:320;;;;;:::o;27876:223::-;28016:34;28012:1;28004:6;28000:14;27993:58;28085:6;28080:2;28072:6;28068:15;28061:31;27876:223;:::o;28105:366::-;28247:3;28268:67;28332:2;28327:3;28268:67;:::i;:::-;28261:74;;28344:93;28433:3;28344:93;:::i;:::-;28462:2;28457:3;28453:12;28446:19;;28105:366;;;:::o;28477:419::-;28643:4;28681:2;28670:9;28666:18;28658:26;;28730:9;28724:4;28720:20;28716:1;28705:9;28701:17;28694:47;28758:131;28884:4;28758:131;:::i;:::-;28750:139;;28477:419;;;:::o;28902:221::-;29042:34;29038:1;29030:6;29026:14;29019:58;29111:4;29106:2;29098:6;29094:15;29087:29;28902:221;:::o;29129:366::-;29271:3;29292:67;29356:2;29351:3;29292:67;:::i;:::-;29285:74;;29368:93;29457:3;29368:93;:::i;:::-;29486:2;29481:3;29477:12;29470:19;;29129:366;;;:::o;29501:419::-;29667:4;29705:2;29694:9;29690:18;29682:26;;29754:9;29748:4;29744:20;29740:1;29729:9;29725:17;29718:47;29782:131;29908:4;29782:131;:::i;:::-;29774:139;;29501:419;;;:::o;29926:224::-;30066:34;30062:1;30054:6;30050:14;30043:58;30135:7;30130:2;30122:6;30118:15;30111:32;29926:224;:::o;30156:366::-;30298:3;30319:67;30383:2;30378:3;30319:67;:::i;:::-;30312:74;;30395:93;30484:3;30395:93;:::i;:::-;30513:2;30508:3;30504:12;30497:19;;30156:366;;;:::o;30528:419::-;30694:4;30732:2;30721:9;30717:18;30709:26;;30781:9;30775:4;30771:20;30767:1;30756:9;30752:17;30745:47;30809:131;30935:4;30809:131;:::i;:::-;30801:139;;30528:419;;;:::o;30953:222::-;31093:34;31089:1;31081:6;31077:14;31070:58;31162:5;31157:2;31149:6;31145:15;31138:30;30953:222;:::o;31181:366::-;31323:3;31344:67;31408:2;31403:3;31344:67;:::i;:::-;31337:74;;31420:93;31509:3;31420:93;:::i;:::-;31538:2;31533:3;31529:12;31522:19;;31181:366;;;:::o;31553:419::-;31719:4;31757:2;31746:9;31742:18;31734:26;;31806:9;31800:4;31796:20;31792:1;31781:9;31777:17;31770:47;31834:131;31960:4;31834:131;:::i;:::-;31826:139;;31553:419;;;:::o;31978:225::-;32118:34;32114:1;32106:6;32102:14;32095:58;32187:8;32182:2;32174:6;32170:15;32163:33;31978:225;:::o;32209:366::-;32351:3;32372:67;32436:2;32431:3;32372:67;:::i;:::-;32365:74;;32448:93;32537:3;32448:93;:::i;:::-;32566:2;32561:3;32557:12;32550:19;;32209:366;;;:::o;32581:419::-;32747:4;32785:2;32774:9;32770:18;32762:26;;32834:9;32828:4;32824:20;32820:1;32809:9;32805:17;32798:47;32862:131;32988:4;32862:131;:::i;:::-;32854:139;;32581:419;;;:::o;33006:223::-;33146:34;33142:1;33134:6;33130:14;33123:58;33215:6;33210:2;33202:6;33198:15;33191:31;33006:223;:::o;33235:366::-;33377:3;33398:67;33462:2;33457:3;33398:67;:::i;:::-;33391:74;;33474:93;33563:3;33474:93;:::i;:::-;33592:2;33587:3;33583:12;33576:19;;33235:366;;;:::o;33607:419::-;33773:4;33811:2;33800:9;33796:18;33788:26;;33860:9;33854:4;33850:20;33846:1;33835:9;33831:17;33824:47;33888:131;34014:4;33888:131;:::i;:::-;33880:139;;33607:419;;;:::o;34032:182::-;34172:34;34168:1;34160:6;34156:14;34149:58;34032:182;:::o;34220:366::-;34362:3;34383:67;34447:2;34442:3;34383:67;:::i;:::-;34376:74;;34459:93;34548:3;34459:93;:::i;:::-;34577:2;34572:3;34568:12;34561:19;;34220:366;;;:::o;34592:419::-;34758:4;34796:2;34785:9;34781:18;34773:26;;34845:9;34839:4;34835:20;34831:1;34820:9;34816:17;34809:47;34873:131;34999:4;34873:131;:::i;:::-;34865:139;;34592:419;;;:::o;35017:172::-;35157:24;35153:1;35145:6;35141:14;35134:48;35017:172;:::o;35195:366::-;35337:3;35358:67;35422:2;35417:3;35358:67;:::i;:::-;35351:74;;35434:93;35523:3;35434:93;:::i;:::-;35552:2;35547:3;35543:12;35536:19;;35195:366;;;:::o;35567:419::-;35733:4;35771:2;35760:9;35756:18;35748:26;;35820:9;35814:4;35810:20;35806:1;35795:9;35791:17;35784:47;35848:131;35974:4;35848:131;:::i;:::-;35840:139;;35567:419;;;:::o;35992:168::-;36132:20;36128:1;36120:6;36116:14;36109:44;35992:168;:::o;36166:366::-;36308:3;36329:67;36393:2;36388:3;36329:67;:::i;:::-;36322:74;;36405:93;36494:3;36405:93;:::i;:::-;36523:2;36518:3;36514:12;36507:19;;36166:366;;;:::o;36538:419::-;36704:4;36742:2;36731:9;36727:18;36719:26;;36791:9;36785:4;36781:20;36777:1;36766:9;36762:17;36755:47;36819:131;36945:4;36819:131;:::i;:::-;36811:139;;36538:419;;;:::o;36963:174::-;37103:26;37099:1;37091:6;37087:14;37080:50;36963:174;:::o;37143:366::-;37285:3;37306:67;37370:2;37365:3;37306:67;:::i;:::-;37299:74;;37382:93;37471:3;37382:93;:::i;:::-;37500:2;37495:3;37491:12;37484:19;;37143:366;;;:::o;37515:419::-;37681:4;37719:2;37708:9;37704:18;37696:26;;37768:9;37762:4;37758:20;37754:1;37743:9;37739:17;37732:47;37796:131;37922:4;37796:131;:::i;:::-;37788:139;;37515:419;;;:::o;37940:170::-;38080:22;38076:1;38068:6;38064:14;38057:46;37940:170;:::o;38116:366::-;38258:3;38279:67;38343:2;38338:3;38279:67;:::i;:::-;38272:74;;38355:93;38444:3;38355:93;:::i;:::-;38473:2;38468:3;38464:12;38457:19;;38116:366;;;:::o;38488:419::-;38654:4;38692:2;38681:9;38677:18;38669:26;;38741:9;38735:4;38731:20;38727:1;38716:9;38712:17;38705:47;38769:131;38895:4;38769:131;:::i;:::-;38761:139;;38488:419;;;:::o;38913:223::-;39053:34;39049:1;39041:6;39037:14;39030:58;39122:6;39117:2;39109:6;39105:15;39098:31;38913:223;:::o;39142:366::-;39284:3;39305:67;39369:2;39364:3;39305:67;:::i;:::-;39298:74;;39381:93;39470:3;39381:93;:::i;:::-;39499:2;39494:3;39490:12;39483:19;;39142:366;;;:::o;39514:419::-;39680:4;39718:2;39707:9;39703:18;39695:26;;39767:9;39761:4;39757:20;39753:1;39742:9;39738:17;39731:47;39795:131;39921:4;39795:131;:::i;:::-;39787:139;;39514:419;;;:::o;39939:191::-;39979:4;39999:20;40017:1;39999:20;:::i;:::-;39994:25;;40033:20;40051:1;40033:20;:::i;:::-;40028:25;;40072:1;40069;40066:8;40063:34;;;40077:18;;:::i;:::-;40063:34;40122:1;40119;40115:9;40107:17;;39939:191;;;;:::o;40136:143::-;40193:5;40224:6;40218:13;40209:22;;40240:33;40267:5;40240:33;:::i;:::-;40136:143;;;;:::o;40285:351::-;40355:6;40404:2;40392:9;40383:7;40379:23;40375:32;40372:119;;;40410:79;;:::i;:::-;40372:119;40530:1;40555:64;40611:7;40602:6;40591:9;40587:22;40555:64;:::i;:::-;40545:74;;40501:128;40285:351;;;;:::o;40642:85::-;40687:7;40716:5;40705:16;;40642:85;;;:::o;40733:158::-;40791:9;40824:61;40842:42;40851:32;40877:5;40851:32;:::i;:::-;40842:42;:::i;:::-;40824:61;:::i;:::-;40811:74;;40733:158;;;:::o;40897:147::-;40992:45;41031:5;40992:45;:::i;:::-;40987:3;40980:58;40897:147;;:::o;41050:114::-;41117:6;41151:5;41145:12;41135:22;;41050:114;;;:::o;41170:184::-;41269:11;41303:6;41298:3;41291:19;41343:4;41338:3;41334:14;41319:29;;41170:184;;;;:::o;41360:132::-;41427:4;41450:3;41442:11;;41480:4;41475:3;41471:14;41463:22;;41360:132;;;:::o;41498:108::-;41575:24;41593:5;41575:24;:::i;:::-;41570:3;41563:37;41498:108;;:::o;41612:179::-;41681:10;41702:46;41744:3;41736:6;41702:46;:::i;:::-;41780:4;41775:3;41771:14;41757:28;;41612:179;;;;:::o;41797:113::-;41867:4;41899;41894:3;41890:14;41882:22;;41797:113;;;:::o;41946:732::-;42065:3;42094:54;42142:5;42094:54;:::i;:::-;42164:86;42243:6;42238:3;42164:86;:::i;:::-;42157:93;;42274:56;42324:5;42274:56;:::i;:::-;42353:7;42384:1;42369:284;42394:6;42391:1;42388:13;42369:284;;;42470:6;42464:13;42497:63;42556:3;42541:13;42497:63;:::i;:::-;42490:70;;42583:60;42636:6;42583:60;:::i;:::-;42573:70;;42429:224;42416:1;42413;42409:9;42404:14;;42369:284;;;42373:14;42669:3;42662:10;;42070:608;;;41946:732;;;;:::o;42684:831::-;42947:4;42985:3;42974:9;42970:19;42962:27;;42999:71;43067:1;43056:9;43052:17;43043:6;42999:71;:::i;:::-;43080:80;43156:2;43145:9;43141:18;43132:6;43080:80;:::i;:::-;43207:9;43201:4;43197:20;43192:2;43181:9;43177:18;43170:48;43235:108;43338:4;43329:6;43235:108;:::i;:::-;43227:116;;43353:72;43421:2;43410:9;43406:18;43397:6;43353:72;:::i;:::-;43435:73;43503:3;43492:9;43488:19;43479:6;43435:73;:::i;:::-;42684:831;;;;;;;;:::o;43521:442::-;43670:4;43708:2;43697:9;43693:18;43685:26;;43721:71;43789:1;43778:9;43774:17;43765:6;43721:71;:::i;:::-;43802:72;43870:2;43859:9;43855:18;43846:6;43802:72;:::i;:::-;43884;43952:2;43941:9;43937:18;43928:6;43884:72;:::i;:::-;43521:442;;;;;;:::o;43969:807::-;44218:4;44256:3;44245:9;44241:19;44233:27;;44270:71;44338:1;44327:9;44323:17;44314:6;44270:71;:::i;:::-;44351:72;44419:2;44408:9;44404:18;44395:6;44351:72;:::i;:::-;44433:80;44509:2;44498:9;44494:18;44485:6;44433:80;:::i;:::-;44523;44599:2;44588:9;44584:18;44575:6;44523:80;:::i;:::-;44613:73;44681:3;44670:9;44666:19;44657:6;44613:73;:::i;:::-;44696;44764:3;44753:9;44749:19;44740:6;44696:73;:::i;:::-;43969:807;;;;;;;;;:::o;44782:143::-;44839:5;44870:6;44864:13;44855:22;;44886:33;44913:5;44886:33;:::i;:::-;44782:143;;;;:::o;44931:663::-;45019:6;45027;45035;45084:2;45072:9;45063:7;45059:23;45055:32;45052:119;;;45090:79;;:::i;:::-;45052:119;45210:1;45235:64;45291:7;45282:6;45271:9;45267:22;45235:64;:::i;:::-;45225:74;;45181:128;45348:2;45374:64;45430:7;45421:6;45410:9;45406:22;45374:64;:::i;:::-;45364:74;;45319:129;45487:2;45513:64;45569:7;45560:6;45549:9;45545:22;45513:64;:::i;:::-;45503:74;;45458:129;44931:663;;;;;:::o
Swarm Source
ipfs://b6489b7095711cddc0a9ff9a627bb345504b3f44f849294dd148ffe1c9df1636
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.