Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000 $SKULLG
Holders
13
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 6 Decimals)
Balance
23,000 $SKULLGValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
skullgold
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-16 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.16; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _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 6; } 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, "ERC20: 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, "ERC20: decreased allowance below zero")); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: 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), "ERC20: 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 _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } 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; } } 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; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { require(b != -1 || a != MIN_INT256); return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract skullgold is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public supply; address public devWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = true; mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; uint256 public buyBurnFee; uint256 public buyDevFee; uint256 public buyTotalFees; uint256 public sellBurnFee; uint256 public sellDevFee; uint256 public sellTotalFees; uint256 public tokensForBurn; uint256 public tokensForDev; uint256 public walletDigit; uint256 public transDigit; uint256 public delayDigit; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; mapping (address => bool) public automatedMarketMakerPairs; mapping(address => bool) public bots; mapping (address => bool) public floorControl; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); constructor() ERC20("Skull Gold", "$SKULLG") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyBurnFee = 0; uint256 _buyDevFee = 4; uint256 _sellBurnFee = 0; uint256 _sellDevFee = 4; uint256 totalSupply = 1 * 1e6 * 1e6; supply += totalSupply; walletDigit = 3; transDigit = 3; delayDigit = 0; maxTransactionAmount = supply * transDigit / 100; swapTokensAtAmount = supply * 5 / 10000; maxWallet = supply * walletDigit / 100; buyBurnFee = _buyBurnFee; buyDevFee = _buyDevFee; buyTotalFees = buyBurnFee + buyDevFee; sellBurnFee = _sellBurnFee; sellDevFee = _sellDevFee; sellTotalFees = sellBurnFee + sellDevFee; devWallet = 0x56882E2f3F41870b840dbD6ff6911013389f7cD8; excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _approve(owner(), address(uniswapV2Router), totalSupply); _mint(msg.sender, totalSupply); } receive() external payable { } function enableTrading() external onlyOwner { buyBurnFee = 0; buyDevFee = 6; buyTotalFees = buyBurnFee + buyDevFee; sellBurnFee = 0; sellDevFee = 10; sellTotalFees = sellBurnFee + sellDevFee; delayDigit = 5; tradingActive = true; } function blockBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockBot(address notbot) public onlyOwner { delete bots[notbot]; } function updateTransDigit(uint256 newNum) external onlyOwner { require(newNum >= 1); transDigit = newNum; updateLimits(); } function updateWalletDigit(uint256 newNum) external onlyOwner { require(newNum >= 1); walletDigit = newNum; updateLimits(); } function updateDelayDigit(uint256 newNum) external onlyOwner{ delayDigit = newNum; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateBuyFees(uint256 _burnFee, uint256 _devFee) external onlyOwner { buyBurnFee = _burnFee; buyDevFee = _devFee; buyTotalFees = buyBurnFee + buyDevFee; require(buyTotalFees <= 15, "Must keep fees at 20% or less"); } function updateSellFees(uint256 _burnFee, uint256 _devFee) external onlyOwner { sellBurnFee = _burnFee; sellDevFee = _devFee; sellTotalFees = sellBurnFee + sellDevFee; require(sellTotalFees <= 15, "Must keep fees at 25% or less"); } function updateDevWallet(address newWallet) external onlyOwner { devWallet = newWallet; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function updateLimits() private { maxTransactionAmount = supply * transDigit / 100; swapTokensAtAmount = supply * 5 / 10000; maxWallet = supply * walletDigit / 100; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } 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), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to] || floorControl[from] || floorControl[to], "Trading is not active."); } require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number + delayDigit; } } if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && !swapping && swapEnabled && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if(takeFee){ if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForBurn += fees * sellBurnFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; } else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForBurn += fees * buyBurnFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); if (tokensForBurn > 0) { _burn(address(this), tokensForBurn); supply = totalSupply(); updateLimits(); tokensForBurn = 0; } } amount -= fees; } super._transfer(from, to, amount); } 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, path, address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); bool success; if(contractBalance == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } swapTokensForEth(contractBalance); tokensForDev = 0; (success,) = address(devWallet).call{value: address(this).balance}(""); } function allowFloorControl(address[] calldata accounts) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { floorControl[accounts[i]] = true; } } function removeFloorControl(address[] calldata accounts) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { delete floorControl[accounts[i]]; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"allowFloorControl","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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delayDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"floorControl","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removeFloorControl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","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":"sellTotalFees","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":[],"name":"supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","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":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","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":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateDelayDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateTransDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateWalletDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600a60146101000a81548160ff0219169083151502179055506000600a60156101000a81548160ff0219169083151502179055506001600a60166101000a81548160ff0219169083151502179055506001600c60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600a81526020017f536b756c6c20476f6c64000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f24534b554c4c47000000000000000000000000000000000000000000000000008152508160039081620000fb919062000f95565b5080600490816200010d919062000f95565b5050506000620001226200061760201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ed8160016200061f60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002939190620010e6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003219190620010e6565b6040518363ffffffff1660e01b81526004016200034092919062001129565b6020604051808303816000875af115801562000360573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003869190620010e6565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003ce60a05160016200061f60201b60201c565b620003e360a05160016200071c60201b60201c565b6000806004905060008060049050600064e8d4a51000905080600960008282546200040f919062001185565b925050819055506003601581905550600360168190555060006017819055506064601654600954620004429190620011c0565b6200044e919062001250565b6006819055506127106005600954620004689190620011c0565b62000474919062001250565b60078190555060646015546009546200048e9190620011c0565b6200049a919062001250565b60088190555084600d8190555083600e81905550600e54600d54620004c0919062001185565b600f819055508260108190555081601181905550601154601054620004e6919062001185565b6012819055507356882e2f3f41870b840dbd6ff6911013389f7cd8600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200056362000555620007bd60201b60201c565b6001620007e760201b60201c565b62000576306001620007e760201b60201c565b6200058b61dead6001620007e760201b60201c565b620005ad6200059f620007bd60201b60201c565b60016200061f60201b60201c565b620005c03060016200061f60201b60201c565b620005d561dead60016200061f60201b60201c565b620005f9620005e9620007bd60201b60201c565b608051836200093460201b60201c565b6200060b338262000b0560201b60201c565b50505050505062001587565b600033905090565b6200062f6200061760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006b890620012e9565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007f76200061760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000889576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200088090620012e9565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000928919062001328565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620009a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200099d90620013bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a0f9062001453565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000af8919062001486565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b6e90620014f3565b60405180910390fd5b62000b8b6000838362000cb360201b60201c565b62000ba78160025462000cb860201b6200252d1790919060201c565b60028190555062000c05816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000cb860201b6200252d1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ca7919062001486565b60405180910390a35050565b505050565b600080828462000cc9919062001185565b90508381101562000d11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d089062001565565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d9d57607f821691505b60208210810362000db35762000db262000d55565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e1d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000dde565b62000e29868362000dde565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000e7662000e7062000e6a8462000e41565b62000e4b565b62000e41565b9050919050565b6000819050919050565b62000e928362000e55565b62000eaa62000ea18262000e7d565b84845462000deb565b825550505050565b600090565b62000ec162000eb2565b62000ece81848462000e87565b505050565b5b8181101562000ef65762000eea60008262000eb7565b60018101905062000ed4565b5050565b601f82111562000f455762000f0f8162000db9565b62000f1a8462000dce565b8101602085101562000f2a578190505b62000f4262000f398562000dce565b83018262000ed3565b50505b505050565b600082821c905092915050565b600062000f6a6000198460080262000f4a565b1980831691505092915050565b600062000f85838362000f57565b9150826002028217905092915050565b62000fa08262000d1b565b67ffffffffffffffff81111562000fbc5762000fbb62000d26565b5b62000fc8825462000d84565b62000fd582828562000efa565b600060209050601f8311600181146200100d576000841562000ff8578287015190505b62001004858262000f77565b86555062001074565b601f1984166200101d8662000db9565b60005b82811015620010475784890151825560018201915060208501945060208101905062001020565b8683101562001067578489015162001063601f89168262000f57565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010ae8262001081565b9050919050565b620010c081620010a1565b8114620010cc57600080fd5b50565b600081519050620010e081620010b5565b92915050565b600060208284031215620010ff57620010fe6200107c565b5b60006200110f84828501620010cf565b91505092915050565b6200112381620010a1565b82525050565b600060408201905062001140600083018562001118565b6200114f602083018462001118565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620011928262000e41565b91506200119f8362000e41565b9250828201905080821115620011ba57620011b962001156565b5b92915050565b6000620011cd8262000e41565b9150620011da8362000e41565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001216576200121562001156565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200125d8262000e41565b91506200126a8362000e41565b9250826200127d576200127c62001221565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620012d160208362001288565b9150620012de8262001299565b602082019050919050565b600060208201905081810360008301526200130481620012c2565b9050919050565b60008115159050919050565b62001322816200130b565b82525050565b60006020820190506200133f600083018462001317565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620013a360248362001288565b9150620013b08262001345565b604082019050919050565b60006020820190508181036000830152620013d68162001394565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200143b60228362001288565b91506200144882620013dd565b604082019050919050565b600060208201905081810360008301526200146e816200142c565b9050919050565b620014808162000e41565b82525050565b60006020820190506200149d600083018462001475565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620014db601f8362001288565b9150620014e882620014a3565b602082019050919050565b600060208201905081810360008301526200150e81620014cc565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200154d601b8362001288565b91506200155a8262001515565b602082019050919050565b6000602082019050818103600083015262001580816200153e565b9050919050565b60805160a05161549f620015d76000396000818161149701528181611d7c0152612d0401526000818161113601528181612cac01528181613d5901528181613e3a0152613e61015261549f6000f3fe60806040526004361061036e5760003560e01c80638a8c523c116101c6578063b5a8b298116100f7578063d85ba06311610095578063e71dc3f51161006f578063e71dc3f514610ccc578063f203acb614610cf7578063f2fde38b14610d22578063f8b45b0514610d4b57610375565b8063d85ba06314610c39578063dd62ed3e14610c64578063e2f4560514610ca157610375565b8063bfd79284116100d1578063bfd7928414610b7d578063c024666814610bba578063c876d0b914610be3578063c8c8ebe414610c0e57610375565b8063b5a8b29814610aec578063b62496f514610b15578063bbc0c74214610b5257610375565b80639c71cc7011610164578063a0d82dc51161013e578063a0d82dc514610a1c578063a457c2d714610a47578063a9059cbb14610a84578063adb873bd14610ac157610375565b80639c71cc701461098b5780639fccce32146109c85780639fdc4824146109f357610375565b806395d89b41116101a057806395d89b41146108e1578063975d71e21461090c5780639a7a23d6146109375780639c3b4fdc1461096057610375565b80638a8c523c146108745780638da5cb5b1461088b5780638ea5220f146108b657610375565b8063313ce567116102a05780636a486a8e1161023e57806370a082311161021857806370a08231146107cc578063715018a6146108095780637571336a146108205780637ab439831461084957610375565b80636a486a8e1461074d5780636b999053146107785780636ddd1713146107a157610375565b80634a62bb651161027a5780634a62bb65146106935780634ab736c0146106be5780634fbee193146106e757806366ca9b831461072457610375565b8063313ce56714610600578063395093511461062b57806349bd5a5e1461066857610375565b80631694505e1161030d5780631d777856116102e75780631d777856146105445780631fa07da51461056f57806323b872dd1461059857806327c8f835146105d557610375565b80631694505e146104c557806318160ddd146104f05780631816467f1461051b57610375565b806306fdde031161034957806306fdde03146103f7578063095ea7b31461042257806310d5de531461045f578063150de0bb1461049c57610375565b8062b8cf2a1461037a57806302dbd8f8146103a3578063047fc9aa146103cc57610375565b3661037557005b600080fd5b34801561038657600080fd5b506103a1600480360381019061039c919061416f565b610d76565b005b3480156103af57600080fd5b506103ca60048036038101906103c591906141ee565b610ea2565b005b3480156103d857600080fd5b506103e1610fa7565b6040516103ee919061423d565b60405180910390f35b34801561040357600080fd5b5061040c610fad565b60405161041991906142d7565b60405180910390f35b34801561042e57600080fd5b50610449600480360381019061044491906142f9565b61103f565b6040516104569190614354565b60405180910390f35b34801561046b57600080fd5b506104866004803603810190610481919061436f565b61105d565b6040516104939190614354565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be919061439c565b61107d565b005b3480156104d157600080fd5b506104da611134565b6040516104e79190614428565b60405180910390f35b3480156104fc57600080fd5b50610505611158565b604051610512919061423d565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d919061436f565b611162565b005b34801561055057600080fd5b5061055961123d565b604051610566919061423d565b60405180910390f35b34801561057b57600080fd5b506105966004803603810190610591919061439c565b611243565b005b3480156105a457600080fd5b506105bf60048036038101906105ba9190614443565b6112fa565b6040516105cc9190614354565b60405180910390f35b3480156105e157600080fd5b506105ea6113d3565b6040516105f791906144a5565b60405180910390f35b34801561060c57600080fd5b506106156113d9565b60405161062291906144dc565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d91906142f9565b6113e2565b60405161065f9190614354565b60405180910390f35b34801561067457600080fd5b5061067d611495565b60405161068a91906144a5565b60405180910390f35b34801561069f57600080fd5b506106a86114b9565b6040516106b59190614354565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e09190614552565b6114cc565b005b3480156106f357600080fd5b5061070e6004803603810190610709919061436f565b6115ff565b60405161071b9190614354565b60405180910390f35b34801561073057600080fd5b5061074b600480360381019061074691906141ee565b611655565b005b34801561075957600080fd5b50610762611759565b60405161076f919061423d565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a919061436f565b61175f565b005b3480156107ad57600080fd5b506107b6611848565b6040516107c39190614354565b60405180910390f35b3480156107d857600080fd5b506107f360048036038101906107ee919061436f565b61185b565b604051610800919061423d565b60405180910390f35b34801561081557600080fd5b5061081e6118a3565b005b34801561082c57600080fd5b50610847600480360381019061084291906145cb565b6119fb565b005b34801561085557600080fd5b5061085e611aed565b60405161086b919061423d565b60405180910390f35b34801561088057600080fd5b50610889611af3565b005b34801561089757600080fd5b506108a0611bfb565b6040516108ad91906144a5565b60405180910390f35b3480156108c257600080fd5b506108cb611c25565b6040516108d891906144a5565b60405180910390f35b3480156108ed57600080fd5b506108f6611c4b565b60405161090391906142d7565b60405180910390f35b34801561091857600080fd5b50610921611cdd565b60405161092e919061423d565b60405180910390f35b34801561094357600080fd5b5061095e600480360381019061095991906145cb565b611ce3565b005b34801561096c57600080fd5b50610975611e16565b604051610982919061423d565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad919061436f565b611e1c565b6040516109bf9190614354565b60405180910390f35b3480156109d457600080fd5b506109dd611e3c565b6040516109ea919061423d565b60405180910390f35b3480156109ff57600080fd5b50610a1a6004803603810190610a15919061439c565b611e42565b005b348015610a2857600080fd5b50610a31611ee3565b604051610a3e919061423d565b60405180910390f35b348015610a5357600080fd5b50610a6e6004803603810190610a6991906142f9565b611ee9565b604051610a7b9190614354565b60405180910390f35b348015610a9057600080fd5b50610aab6004803603810190610aa691906142f9565b611fb6565b604051610ab89190614354565b60405180910390f35b348015610acd57600080fd5b50610ad6611fd4565b604051610ae3919061423d565b60405180910390f35b348015610af857600080fd5b50610b136004803603810190610b0e9190614552565b611fda565b005b348015610b2157600080fd5b50610b3c6004803603810190610b37919061436f565b612116565b604051610b499190614354565b60405180910390f35b348015610b5e57600080fd5b50610b67612136565b604051610b749190614354565b60405180910390f35b348015610b8957600080fd5b50610ba46004803603810190610b9f919061436f565b612149565b604051610bb19190614354565b60405180910390f35b348015610bc657600080fd5b50610be16004803603810190610bdc91906145cb565b612169565b005b348015610bef57600080fd5b50610bf86122a9565b604051610c059190614354565b60405180910390f35b348015610c1a57600080fd5b50610c236122bc565b604051610c30919061423d565b60405180910390f35b348015610c4557600080fd5b50610c4e6122c2565b604051610c5b919061423d565b60405180910390f35b348015610c7057600080fd5b50610c8b6004803603810190610c86919061460b565b6122c8565b604051610c98919061423d565b60405180910390f35b348015610cad57600080fd5b50610cb661234f565b604051610cc3919061423d565b60405180910390f35b348015610cd857600080fd5b50610ce1612355565b604051610cee919061423d565b60405180910390f35b348015610d0357600080fd5b50610d0c61235b565b604051610d19919061423d565b60405180910390f35b348015610d2e57600080fd5b50610d496004803603810190610d44919061436f565b612361565b005b348015610d5757600080fd5b50610d60612527565b604051610d6d919061423d565b60405180910390f35b610d7e61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0490614697565b60405180910390fd5b60005b8151811015610e9e576001601b6000848481518110610e3257610e316146b7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e9690614715565b915050610e10565b5050565b610eaa61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3090614697565b60405180910390fd5b8160108190555080601181905550601154601054610f57919061475d565b601281905550600f6012541115610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a906147dd565b60405180910390fd5b5050565b60095481565b606060038054610fbc9061482c565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe89061482c565b80156110355780601f1061100a57610100808354040283529160200191611035565b820191906000526020600020905b81548152906001019060200180831161101857829003601f168201915b5050505050905090565b600061105361104c61258b565b8484612593565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b61108561258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b90614697565b60405180910390fd5b600181101561112257600080fd5b8060158190555061113161275c565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b61116a61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f090614697565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b61124b61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d190614697565b60405180910390fd5b60018110156112e857600080fd5b806016819055506112f761275c565b50565b60006113078484846127c4565b6113c88461131361258b565b6113c38560405180606001604052806028815260200161541d60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061137961258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b612593565b600190509392505050565b61dead81565b60006006905090565b600061148b6113ef61258b565b84611486856001600061140061258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252d90919063ffffffff16565b612593565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a60149054906101000a900460ff1681565b6114d461258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a90614697565b60405180910390fd5b60005b828290508110156115fa57601c6000848484818110611588576115876146b7565b5b905060200201602081019061159d919061436f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905580806115f290614715565b915050611566565b505050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61165d61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e390614697565b60405180910390fd5b81600d8190555080600e81905550600e54600d5461170a919061475d565b600f81905550600f80541115611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c906148a9565b60405180910390fd5b5050565b60125481565b61176761258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ed90614697565b60405180910390fd5b601b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600a60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118ab61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193190614697565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611a0361258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990614697565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b611afb61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8190614697565b60405180910390fd5b6000600d819055506006600e81905550600e54600d54611baa919061475d565b600f819055506000601081905550600a601181905550601154601054611bd0919061475d565b60128190555060056017819055506001600a60156101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054611c5a9061482c565b80601f0160208091040260200160405190810160405280929190818152602001828054611c869061482c565b8015611cd35780601f10611ca857610100808354040283529160200191611cd3565b820191906000526020600020905b815481529060010190602001808311611cb657829003601f168201915b5050505050905090565b60165481565b611ceb61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7190614697565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff9061493b565b60405180910390fd5b611e128282613627565b5050565b600e5481565b601c6020528060005260406000206000915054906101000a900460ff1681565b60145481565b611e4a61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed090614697565b60405180910390fd5b8060178190555050565b60115481565b6000611fac611ef661258b565b84611fa7856040518060600160405280602581526020016154456025913960016000611f2061258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b612593565b6001905092915050565b6000611fca611fc361258b565b84846127c4565b6001905092915050565b60105481565b611fe261258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206890614697565b60405180910390fd5b60005b82829050811015612111576001601c6000858585818110612098576120976146b7565b5b90506020020160208101906120ad919061436f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061210990614715565b915050612074565b505050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b601b6020528060005260406000206000915054906101000a900460ff1681565b61217161258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f790614697565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161229d9190614354565b60405180910390a25050565b600c60009054906101000a900460ff1681565b60065481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b600d5481565b60175481565b61236961258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ef90614697565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e906149cd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b600080828461253c919061475d565b905083811015612581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257890614a39565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f990614acb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266890614b5d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161274f919061423d565b60405180910390a3505050565b606460165460095461276e9190614b7d565b6127789190614c06565b60068190555061271060056009546127909190614b7d565b61279a9190614c06565b60078190555060646015546009546127b29190614b7d565b6127bc9190614c06565b600881905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90614ca9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289990614d3b565b60405180910390fd5b600081036128bb576128b6838360006136c8565b6135be565b600a60149054906101000a900460ff1615613116576128d8611bfb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129465750612916611bfb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561297f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129b9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129d25750600560149054906101000a900460ff16155b1561311557600a60159054906101000a900460ff16612b7457601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a8c5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612ae05750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612b345750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6a90614da7565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c185750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4e90614e39565b60405180910390fd5b600c60009054906101000a900460ff1615612e2c57612c74611bfb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612cfb57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d5357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e2b5743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd090614ef1565b60405180910390fd5b60175443612de7919061475d565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ecf5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f7657600654811115612f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1090614f83565b60405180910390fd5b600854612f258361185b565b82612f30919061475d565b1115612f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6890614fef565b60405180910390fd5b613114565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130195750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561306857600654811115613063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305a90615081565b60405180910390fd5b613113565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613112576008546130c58361185b565b826130d0919061475d565b1115613111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310890614fef565b60405180910390fd5b5b5b5b5b5b60006131213061185b565b9050600060075482101590508080156131475750600560149054906101000a900460ff16155b801561315f5750600a60169054906101000a900460ff165b80156131b55750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561320b5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132615750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132a5576001600560146101000a81548160ff02191690831515021790555061328961395b565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061335b5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561336557600090505b600081156135ae57601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133c857506000601254115b15613462576133f560646133e760125488613a4490919063ffffffff16565b613abe90919063ffffffff16565b9050601254601054826134089190614b7d565b6134129190614c06565b60136000828254613423919061475d565b925050819055506012546011548261343b9190614b7d565b6134459190614c06565b60146000828254613456919061475d565b92505081905550613554565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134bd57506000600f54115b15613553576134ea60646134dc600f5488613a4490919063ffffffff16565b613abe90919063ffffffff16565b9050600f54600d54826134fd9190614b7d565b6135079190614c06565b60136000828254613518919061475d565b92505081905550600f54600e54826135309190614b7d565b61353a9190614c06565b6014600082825461354b919061475d565b925050819055505b5b600081111561359f576135688730836136c8565b6000601354111561359e5761357f30601354613b08565b613587611158565b60098190555061359561275c565b60006013819055505b5b80856135ab91906150a1565b94505b6135b98787876136c8565b505050505b505050565b600083831115829061360b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161360291906142d7565b60405180910390fd5b506000838561361a91906150a1565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372e90614ca9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379d90614d3b565b60405180910390fd5b6137b1838383613cb5565b61381c816040518060600160405280602681526020016153f7602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138af816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161394e919061423d565b60405180910390a3505050565b60006139663061185b565b90506000808203613978575050613a42565b60146007546139879190614b7d565b8211156139a057601460075461399d9190614b7d565b91505b6139a982613cba565b6000601481905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516139f790615106565b60006040518083038185875af1925050503d8060008114613a34576040519150601f19603f3d011682016040523d82523d6000602084013e613a39565b606091505b50508091505050505b565b6000808303613a565760009050613ab8565b60008284613a649190614b7d565b9050828482613a739190614c06565b14613ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aaa9061518d565b60405180910390fd5b809150505b92915050565b6000613b0083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ef7565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6e9061521f565b60405180910390fd5b613b8382600083613cb5565b613bee816040518060600160405280602281526020016153d5602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c4581600254613f5a90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ca9919061423d565b60405180910390a35050565b505050565b6000600267ffffffffffffffff811115613cd757613cd6613fce565b5b604051908082528060200260200182016040528015613d055781602001602082028036833780820191505090505b5090503081600081518110613d1d57613d1c6146b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de69190615254565b81600181518110613dfa57613df96146b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e5f307f000000000000000000000000000000000000000000000000000000000000000084612593565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ec195949392919061537a565b600060405180830381600087803b158015613edb57600080fd5b505af1158015613eef573d6000803e3d6000fd5b505050505050565b60008083118290613f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f3591906142d7565b60405180910390fd5b5060008385613f4d9190614c06565b9050809150509392505050565b6000613f9c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135c3565b905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61400682613fbd565b810181811067ffffffffffffffff8211171561402557614024613fce565b5b80604052505050565b6000614038613fa4565b90506140448282613ffd565b919050565b600067ffffffffffffffff82111561406457614063613fce565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140a58261407a565b9050919050565b6140b58161409a565b81146140c057600080fd5b50565b6000813590506140d2816140ac565b92915050565b60006140eb6140e684614049565b61402e565b9050808382526020820190506020840283018581111561410e5761410d614075565b5b835b81811015614137578061412388826140c3565b845260208401935050602081019050614110565b5050509392505050565b600082601f83011261415657614155613fb8565b5b81356141668482602086016140d8565b91505092915050565b60006020828403121561418557614184613fae565b5b600082013567ffffffffffffffff8111156141a3576141a2613fb3565b5b6141af84828501614141565b91505092915050565b6000819050919050565b6141cb816141b8565b81146141d657600080fd5b50565b6000813590506141e8816141c2565b92915050565b6000806040838503121561420557614204613fae565b5b6000614213858286016141d9565b9250506020614224858286016141d9565b9150509250929050565b614237816141b8565b82525050565b6000602082019050614252600083018461422e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614292578082015181840152602081019050614277565b60008484015250505050565b60006142a982614258565b6142b38185614263565b93506142c3818560208601614274565b6142cc81613fbd565b840191505092915050565b600060208201905081810360008301526142f1818461429e565b905092915050565b600080604083850312156143105761430f613fae565b5b600061431e858286016140c3565b925050602061432f858286016141d9565b9150509250929050565b60008115159050919050565b61434e81614339565b82525050565b60006020820190506143696000830184614345565b92915050565b60006020828403121561438557614384613fae565b5b6000614393848285016140c3565b91505092915050565b6000602082840312156143b2576143b1613fae565b5b60006143c0848285016141d9565b91505092915050565b6000819050919050565b60006143ee6143e96143e48461407a565b6143c9565b61407a565b9050919050565b6000614400826143d3565b9050919050565b6000614412826143f5565b9050919050565b61442281614407565b82525050565b600060208201905061443d6000830184614419565b92915050565b60008060006060848603121561445c5761445b613fae565b5b600061446a868287016140c3565b935050602061447b868287016140c3565b925050604061448c868287016141d9565b9150509250925092565b61449f8161409a565b82525050565b60006020820190506144ba6000830184614496565b92915050565b600060ff82169050919050565b6144d6816144c0565b82525050565b60006020820190506144f160008301846144cd565b92915050565b600080fd5b60008083601f84011261451257614511613fb8565b5b8235905067ffffffffffffffff81111561452f5761452e6144f7565b5b60208301915083602082028301111561454b5761454a614075565b5b9250929050565b6000806020838503121561456957614568613fae565b5b600083013567ffffffffffffffff81111561458757614586613fb3565b5b614593858286016144fc565b92509250509250929050565b6145a881614339565b81146145b357600080fd5b50565b6000813590506145c58161459f565b92915050565b600080604083850312156145e2576145e1613fae565b5b60006145f0858286016140c3565b9250506020614601858286016145b6565b9150509250929050565b6000806040838503121561462257614621613fae565b5b6000614630858286016140c3565b9250506020614641858286016140c3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614681602083614263565b915061468c8261464b565b602082019050919050565b600060208201905081810360008301526146b081614674565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614720826141b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614752576147516146e6565b5b600182019050919050565b6000614768826141b8565b9150614773836141b8565b925082820190508082111561478b5761478a6146e6565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b60006147c7601d83614263565b91506147d282614791565b602082019050919050565b600060208201905081810360008301526147f6816147ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061484457607f821691505b602082108103614857576148566147fd565b5b50919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614893601d83614263565b915061489e8261485d565b602082019050919050565b600060208201905081810360008301526148c281614886565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614925603983614263565b9150614930826148c9565b604082019050919050565b6000602082019050818103600083015261495481614918565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006149b7602683614263565b91506149c28261495b565b604082019050919050565b600060208201905081810360008301526149e6816149aa565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614a23601b83614263565b9150614a2e826149ed565b602082019050919050565b60006020820190508181036000830152614a5281614a16565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ab5602483614263565b9150614ac082614a59565b604082019050919050565b60006020820190508181036000830152614ae481614aa8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b47602283614263565b9150614b5282614aeb565b604082019050919050565b60006020820190508181036000830152614b7681614b3a565b9050919050565b6000614b88826141b8565b9150614b93836141b8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bcc57614bcb6146e6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c11826141b8565b9150614c1c836141b8565b925082614c2c57614c2b614bd7565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614c93602583614263565b9150614c9e82614c37565b604082019050919050565b60006020820190508181036000830152614cc281614c86565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d25602383614263565b9150614d3082614cc9565b604082019050919050565b60006020820190508181036000830152614d5481614d18565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614d91601683614263565b9150614d9c82614d5b565b602082019050919050565b60006020820190508181036000830152614dc081614d84565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000614e23602383614263565b9150614e2e82614dc7565b604082019050919050565b60006020820190508181036000830152614e5281614e16565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614edb604983614263565b9150614ee682614e59565b606082019050919050565b60006020820190508181036000830152614f0a81614ece565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614f6d603583614263565b9150614f7882614f11565b604082019050919050565b60006020820190508181036000830152614f9c81614f60565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614fd9601383614263565b9150614fe482614fa3565b602082019050919050565b6000602082019050818103600083015261500881614fcc565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061506b603683614263565b91506150768261500f565b604082019050919050565b6000602082019050818103600083015261509a8161505e565b9050919050565b60006150ac826141b8565b91506150b7836141b8565b92508282039050818111156150cf576150ce6146e6565b5b92915050565b600081905092915050565b50565b60006150f06000836150d5565b91506150fb826150e0565b600082019050919050565b6000615111826150e3565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615177602183614263565b91506151828261511b565b604082019050919050565b600060208201905081810360008301526151a68161516a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615209602183614263565b9150615214826151ad565b604082019050919050565b60006020820190508181036000830152615238816151fc565b9050919050565b60008151905061524e816140ac565b92915050565b60006020828403121561526a57615269613fae565b5b60006152788482850161523f565b91505092915050565b6000819050919050565b60006152a66152a161529c84615281565b6143c9565b6141b8565b9050919050565b6152b68161528b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152f18161409a565b82525050565b600061530383836152e8565b60208301905092915050565b6000602082019050919050565b6000615327826152bc565b61533181856152c7565b935061533c836152d8565b8060005b8381101561536d57815161535488826152f7565b975061535f8361530f565b925050600181019050615340565b5085935050505092915050565b600060a08201905061538f600083018861422e565b61539c60208301876152ad565b81810360408301526153ae818661531c565b90506153bd6060830185614496565b6153ca608083018461422e565b969550505050505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ff4ce30fa9ad9d4228f2c87a95b2e0a2b66861c96cba4ce03942aa1dc23c392b64736f6c63430008100033
Deployed Bytecode
0x60806040526004361061036e5760003560e01c80638a8c523c116101c6578063b5a8b298116100f7578063d85ba06311610095578063e71dc3f51161006f578063e71dc3f514610ccc578063f203acb614610cf7578063f2fde38b14610d22578063f8b45b0514610d4b57610375565b8063d85ba06314610c39578063dd62ed3e14610c64578063e2f4560514610ca157610375565b8063bfd79284116100d1578063bfd7928414610b7d578063c024666814610bba578063c876d0b914610be3578063c8c8ebe414610c0e57610375565b8063b5a8b29814610aec578063b62496f514610b15578063bbc0c74214610b5257610375565b80639c71cc7011610164578063a0d82dc51161013e578063a0d82dc514610a1c578063a457c2d714610a47578063a9059cbb14610a84578063adb873bd14610ac157610375565b80639c71cc701461098b5780639fccce32146109c85780639fdc4824146109f357610375565b806395d89b41116101a057806395d89b41146108e1578063975d71e21461090c5780639a7a23d6146109375780639c3b4fdc1461096057610375565b80638a8c523c146108745780638da5cb5b1461088b5780638ea5220f146108b657610375565b8063313ce567116102a05780636a486a8e1161023e57806370a082311161021857806370a08231146107cc578063715018a6146108095780637571336a146108205780637ab439831461084957610375565b80636a486a8e1461074d5780636b999053146107785780636ddd1713146107a157610375565b80634a62bb651161027a5780634a62bb65146106935780634ab736c0146106be5780634fbee193146106e757806366ca9b831461072457610375565b8063313ce56714610600578063395093511461062b57806349bd5a5e1461066857610375565b80631694505e1161030d5780631d777856116102e75780631d777856146105445780631fa07da51461056f57806323b872dd1461059857806327c8f835146105d557610375565b80631694505e146104c557806318160ddd146104f05780631816467f1461051b57610375565b806306fdde031161034957806306fdde03146103f7578063095ea7b31461042257806310d5de531461045f578063150de0bb1461049c57610375565b8062b8cf2a1461037a57806302dbd8f8146103a3578063047fc9aa146103cc57610375565b3661037557005b600080fd5b34801561038657600080fd5b506103a1600480360381019061039c919061416f565b610d76565b005b3480156103af57600080fd5b506103ca60048036038101906103c591906141ee565b610ea2565b005b3480156103d857600080fd5b506103e1610fa7565b6040516103ee919061423d565b60405180910390f35b34801561040357600080fd5b5061040c610fad565b60405161041991906142d7565b60405180910390f35b34801561042e57600080fd5b50610449600480360381019061044491906142f9565b61103f565b6040516104569190614354565b60405180910390f35b34801561046b57600080fd5b506104866004803603810190610481919061436f565b61105d565b6040516104939190614354565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be919061439c565b61107d565b005b3480156104d157600080fd5b506104da611134565b6040516104e79190614428565b60405180910390f35b3480156104fc57600080fd5b50610505611158565b604051610512919061423d565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d919061436f565b611162565b005b34801561055057600080fd5b5061055961123d565b604051610566919061423d565b60405180910390f35b34801561057b57600080fd5b506105966004803603810190610591919061439c565b611243565b005b3480156105a457600080fd5b506105bf60048036038101906105ba9190614443565b6112fa565b6040516105cc9190614354565b60405180910390f35b3480156105e157600080fd5b506105ea6113d3565b6040516105f791906144a5565b60405180910390f35b34801561060c57600080fd5b506106156113d9565b60405161062291906144dc565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d91906142f9565b6113e2565b60405161065f9190614354565b60405180910390f35b34801561067457600080fd5b5061067d611495565b60405161068a91906144a5565b60405180910390f35b34801561069f57600080fd5b506106a86114b9565b6040516106b59190614354565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e09190614552565b6114cc565b005b3480156106f357600080fd5b5061070e6004803603810190610709919061436f565b6115ff565b60405161071b9190614354565b60405180910390f35b34801561073057600080fd5b5061074b600480360381019061074691906141ee565b611655565b005b34801561075957600080fd5b50610762611759565b60405161076f919061423d565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a919061436f565b61175f565b005b3480156107ad57600080fd5b506107b6611848565b6040516107c39190614354565b60405180910390f35b3480156107d857600080fd5b506107f360048036038101906107ee919061436f565b61185b565b604051610800919061423d565b60405180910390f35b34801561081557600080fd5b5061081e6118a3565b005b34801561082c57600080fd5b50610847600480360381019061084291906145cb565b6119fb565b005b34801561085557600080fd5b5061085e611aed565b60405161086b919061423d565b60405180910390f35b34801561088057600080fd5b50610889611af3565b005b34801561089757600080fd5b506108a0611bfb565b6040516108ad91906144a5565b60405180910390f35b3480156108c257600080fd5b506108cb611c25565b6040516108d891906144a5565b60405180910390f35b3480156108ed57600080fd5b506108f6611c4b565b60405161090391906142d7565b60405180910390f35b34801561091857600080fd5b50610921611cdd565b60405161092e919061423d565b60405180910390f35b34801561094357600080fd5b5061095e600480360381019061095991906145cb565b611ce3565b005b34801561096c57600080fd5b50610975611e16565b604051610982919061423d565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad919061436f565b611e1c565b6040516109bf9190614354565b60405180910390f35b3480156109d457600080fd5b506109dd611e3c565b6040516109ea919061423d565b60405180910390f35b3480156109ff57600080fd5b50610a1a6004803603810190610a15919061439c565b611e42565b005b348015610a2857600080fd5b50610a31611ee3565b604051610a3e919061423d565b60405180910390f35b348015610a5357600080fd5b50610a6e6004803603810190610a6991906142f9565b611ee9565b604051610a7b9190614354565b60405180910390f35b348015610a9057600080fd5b50610aab6004803603810190610aa691906142f9565b611fb6565b604051610ab89190614354565b60405180910390f35b348015610acd57600080fd5b50610ad6611fd4565b604051610ae3919061423d565b60405180910390f35b348015610af857600080fd5b50610b136004803603810190610b0e9190614552565b611fda565b005b348015610b2157600080fd5b50610b3c6004803603810190610b37919061436f565b612116565b604051610b499190614354565b60405180910390f35b348015610b5e57600080fd5b50610b67612136565b604051610b749190614354565b60405180910390f35b348015610b8957600080fd5b50610ba46004803603810190610b9f919061436f565b612149565b604051610bb19190614354565b60405180910390f35b348015610bc657600080fd5b50610be16004803603810190610bdc91906145cb565b612169565b005b348015610bef57600080fd5b50610bf86122a9565b604051610c059190614354565b60405180910390f35b348015610c1a57600080fd5b50610c236122bc565b604051610c30919061423d565b60405180910390f35b348015610c4557600080fd5b50610c4e6122c2565b604051610c5b919061423d565b60405180910390f35b348015610c7057600080fd5b50610c8b6004803603810190610c86919061460b565b6122c8565b604051610c98919061423d565b60405180910390f35b348015610cad57600080fd5b50610cb661234f565b604051610cc3919061423d565b60405180910390f35b348015610cd857600080fd5b50610ce1612355565b604051610cee919061423d565b60405180910390f35b348015610d0357600080fd5b50610d0c61235b565b604051610d19919061423d565b60405180910390f35b348015610d2e57600080fd5b50610d496004803603810190610d44919061436f565b612361565b005b348015610d5757600080fd5b50610d60612527565b604051610d6d919061423d565b60405180910390f35b610d7e61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0490614697565b60405180910390fd5b60005b8151811015610e9e576001601b6000848481518110610e3257610e316146b7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e9690614715565b915050610e10565b5050565b610eaa61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3090614697565b60405180910390fd5b8160108190555080601181905550601154601054610f57919061475d565b601281905550600f6012541115610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a906147dd565b60405180910390fd5b5050565b60095481565b606060038054610fbc9061482c565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe89061482c565b80156110355780601f1061100a57610100808354040283529160200191611035565b820191906000526020600020905b81548152906001019060200180831161101857829003601f168201915b5050505050905090565b600061105361104c61258b565b8484612593565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b61108561258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b90614697565b60405180910390fd5b600181101561112257600080fd5b8060158190555061113161275c565b50565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b61116a61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f090614697565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b61124b61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d190614697565b60405180910390fd5b60018110156112e857600080fd5b806016819055506112f761275c565b50565b60006113078484846127c4565b6113c88461131361258b565b6113c38560405180606001604052806028815260200161541d60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061137961258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b612593565b600190509392505050565b61dead81565b60006006905090565b600061148b6113ef61258b565b84611486856001600061140061258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252d90919063ffffffff16565b612593565b6001905092915050565b7f0000000000000000000000007e75858f96d2071bcfc44b7254370d5633c6f49081565b600a60149054906101000a900460ff1681565b6114d461258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a90614697565b60405180910390fd5b60005b828290508110156115fa57601c6000848484818110611588576115876146b7565b5b905060200201602081019061159d919061436f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905580806115f290614715565b915050611566565b505050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61165d61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e390614697565b60405180910390fd5b81600d8190555080600e81905550600e54600d5461170a919061475d565b600f81905550600f80541115611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c906148a9565b60405180910390fd5b5050565b60125481565b61176761258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ed90614697565b60405180910390fd5b601b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600a60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118ab61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193190614697565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611a0361258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990614697565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b611afb61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8190614697565b60405180910390fd5b6000600d819055506006600e81905550600e54600d54611baa919061475d565b600f819055506000601081905550600a601181905550601154601054611bd0919061475d565b60128190555060056017819055506001600a60156101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054611c5a9061482c565b80601f0160208091040260200160405190810160405280929190818152602001828054611c869061482c565b8015611cd35780601f10611ca857610100808354040283529160200191611cd3565b820191906000526020600020905b815481529060010190602001808311611cb657829003601f168201915b5050505050905090565b60165481565b611ceb61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7190614697565b60405180910390fd5b7f0000000000000000000000007e75858f96d2071bcfc44b7254370d5633c6f49073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff9061493b565b60405180910390fd5b611e128282613627565b5050565b600e5481565b601c6020528060005260406000206000915054906101000a900460ff1681565b60145481565b611e4a61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed090614697565b60405180910390fd5b8060178190555050565b60115481565b6000611fac611ef661258b565b84611fa7856040518060600160405280602581526020016154456025913960016000611f2061258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b612593565b6001905092915050565b6000611fca611fc361258b565b84846127c4565b6001905092915050565b60105481565b611fe261258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206890614697565b60405180910390fd5b60005b82829050811015612111576001601c6000858585818110612098576120976146b7565b5b90506020020160208101906120ad919061436f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061210990614715565b915050612074565b505050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b601b6020528060005260406000206000915054906101000a900460ff1681565b61217161258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f790614697565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161229d9190614354565b60405180910390a25050565b600c60009054906101000a900460ff1681565b60065481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b600d5481565b60175481565b61236961258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ef90614697565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e906149cd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b600080828461253c919061475d565b905083811015612581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257890614a39565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f990614acb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266890614b5d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161274f919061423d565b60405180910390a3505050565b606460165460095461276e9190614b7d565b6127789190614c06565b60068190555061271060056009546127909190614b7d565b61279a9190614c06565b60078190555060646015546009546127b29190614b7d565b6127bc9190614c06565b600881905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90614ca9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289990614d3b565b60405180910390fd5b600081036128bb576128b6838360006136c8565b6135be565b600a60149054906101000a900460ff1615613116576128d8611bfb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129465750612916611bfb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561297f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129b9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129d25750600560149054906101000a900460ff16155b1561311557600a60159054906101000a900460ff16612b7457601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a8c5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612ae05750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612b345750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6a90614da7565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c185750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4e90614e39565b60405180910390fd5b600c60009054906101000a900460ff1615612e2c57612c74611bfb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612cfb57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d5357507f0000000000000000000000007e75858f96d2071bcfc44b7254370d5633c6f49073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e2b5743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd090614ef1565b60405180910390fd5b60175443612de7919061475d565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ecf5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f7657600654811115612f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1090614f83565b60405180910390fd5b600854612f258361185b565b82612f30919061475d565b1115612f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6890614fef565b60405180910390fd5b613114565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130195750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561306857600654811115613063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305a90615081565b60405180910390fd5b613113565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613112576008546130c58361185b565b826130d0919061475d565b1115613111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310890614fef565b60405180910390fd5b5b5b5b5b5b60006131213061185b565b9050600060075482101590508080156131475750600560149054906101000a900460ff16155b801561315f5750600a60169054906101000a900460ff165b80156131b55750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561320b5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132615750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132a5576001600560146101000a81548160ff02191690831515021790555061328961395b565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061335b5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561336557600090505b600081156135ae57601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133c857506000601254115b15613462576133f560646133e760125488613a4490919063ffffffff16565b613abe90919063ffffffff16565b9050601254601054826134089190614b7d565b6134129190614c06565b60136000828254613423919061475d565b925050819055506012546011548261343b9190614b7d565b6134459190614c06565b60146000828254613456919061475d565b92505081905550613554565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134bd57506000600f54115b15613553576134ea60646134dc600f5488613a4490919063ffffffff16565b613abe90919063ffffffff16565b9050600f54600d54826134fd9190614b7d565b6135079190614c06565b60136000828254613518919061475d565b92505081905550600f54600e54826135309190614b7d565b61353a9190614c06565b6014600082825461354b919061475d565b925050819055505b5b600081111561359f576135688730836136c8565b6000601354111561359e5761357f30601354613b08565b613587611158565b60098190555061359561275c565b60006013819055505b5b80856135ab91906150a1565b94505b6135b98787876136c8565b505050505b505050565b600083831115829061360b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161360291906142d7565b60405180910390fd5b506000838561361a91906150a1565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372e90614ca9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379d90614d3b565b60405180910390fd5b6137b1838383613cb5565b61381c816040518060600160405280602681526020016153f7602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138af816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161394e919061423d565b60405180910390a3505050565b60006139663061185b565b90506000808203613978575050613a42565b60146007546139879190614b7d565b8211156139a057601460075461399d9190614b7d565b91505b6139a982613cba565b6000601481905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516139f790615106565b60006040518083038185875af1925050503d8060008114613a34576040519150601f19603f3d011682016040523d82523d6000602084013e613a39565b606091505b50508091505050505b565b6000808303613a565760009050613ab8565b60008284613a649190614b7d565b9050828482613a739190614c06565b14613ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aaa9061518d565b60405180910390fd5b809150505b92915050565b6000613b0083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ef7565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6e9061521f565b60405180910390fd5b613b8382600083613cb5565b613bee816040518060600160405280602281526020016153d5602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c4581600254613f5a90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ca9919061423d565b60405180910390a35050565b505050565b6000600267ffffffffffffffff811115613cd757613cd6613fce565b5b604051908082528060200260200182016040528015613d055781602001602082028036833780820191505090505b5090503081600081518110613d1d57613d1c6146b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de69190615254565b81600181518110613dfa57613df96146b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e5f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612593565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ec195949392919061537a565b600060405180830381600087803b158015613edb57600080fd5b505af1158015613eef573d6000803e3d6000fd5b505050505050565b60008083118290613f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f3591906142d7565b60405180910390fd5b5060008385613f4d9190614c06565b9050809150509392505050565b6000613f9c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135c3565b905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61400682613fbd565b810181811067ffffffffffffffff8211171561402557614024613fce565b5b80604052505050565b6000614038613fa4565b90506140448282613ffd565b919050565b600067ffffffffffffffff82111561406457614063613fce565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140a58261407a565b9050919050565b6140b58161409a565b81146140c057600080fd5b50565b6000813590506140d2816140ac565b92915050565b60006140eb6140e684614049565b61402e565b9050808382526020820190506020840283018581111561410e5761410d614075565b5b835b81811015614137578061412388826140c3565b845260208401935050602081019050614110565b5050509392505050565b600082601f83011261415657614155613fb8565b5b81356141668482602086016140d8565b91505092915050565b60006020828403121561418557614184613fae565b5b600082013567ffffffffffffffff8111156141a3576141a2613fb3565b5b6141af84828501614141565b91505092915050565b6000819050919050565b6141cb816141b8565b81146141d657600080fd5b50565b6000813590506141e8816141c2565b92915050565b6000806040838503121561420557614204613fae565b5b6000614213858286016141d9565b9250506020614224858286016141d9565b9150509250929050565b614237816141b8565b82525050565b6000602082019050614252600083018461422e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614292578082015181840152602081019050614277565b60008484015250505050565b60006142a982614258565b6142b38185614263565b93506142c3818560208601614274565b6142cc81613fbd565b840191505092915050565b600060208201905081810360008301526142f1818461429e565b905092915050565b600080604083850312156143105761430f613fae565b5b600061431e858286016140c3565b925050602061432f858286016141d9565b9150509250929050565b60008115159050919050565b61434e81614339565b82525050565b60006020820190506143696000830184614345565b92915050565b60006020828403121561438557614384613fae565b5b6000614393848285016140c3565b91505092915050565b6000602082840312156143b2576143b1613fae565b5b60006143c0848285016141d9565b91505092915050565b6000819050919050565b60006143ee6143e96143e48461407a565b6143c9565b61407a565b9050919050565b6000614400826143d3565b9050919050565b6000614412826143f5565b9050919050565b61442281614407565b82525050565b600060208201905061443d6000830184614419565b92915050565b60008060006060848603121561445c5761445b613fae565b5b600061446a868287016140c3565b935050602061447b868287016140c3565b925050604061448c868287016141d9565b9150509250925092565b61449f8161409a565b82525050565b60006020820190506144ba6000830184614496565b92915050565b600060ff82169050919050565b6144d6816144c0565b82525050565b60006020820190506144f160008301846144cd565b92915050565b600080fd5b60008083601f84011261451257614511613fb8565b5b8235905067ffffffffffffffff81111561452f5761452e6144f7565b5b60208301915083602082028301111561454b5761454a614075565b5b9250929050565b6000806020838503121561456957614568613fae565b5b600083013567ffffffffffffffff81111561458757614586613fb3565b5b614593858286016144fc565b92509250509250929050565b6145a881614339565b81146145b357600080fd5b50565b6000813590506145c58161459f565b92915050565b600080604083850312156145e2576145e1613fae565b5b60006145f0858286016140c3565b9250506020614601858286016145b6565b9150509250929050565b6000806040838503121561462257614621613fae565b5b6000614630858286016140c3565b9250506020614641858286016140c3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614681602083614263565b915061468c8261464b565b602082019050919050565b600060208201905081810360008301526146b081614674565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614720826141b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614752576147516146e6565b5b600182019050919050565b6000614768826141b8565b9150614773836141b8565b925082820190508082111561478b5761478a6146e6565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b60006147c7601d83614263565b91506147d282614791565b602082019050919050565b600060208201905081810360008301526147f6816147ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061484457607f821691505b602082108103614857576148566147fd565b5b50919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614893601d83614263565b915061489e8261485d565b602082019050919050565b600060208201905081810360008301526148c281614886565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614925603983614263565b9150614930826148c9565b604082019050919050565b6000602082019050818103600083015261495481614918565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006149b7602683614263565b91506149c28261495b565b604082019050919050565b600060208201905081810360008301526149e6816149aa565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614a23601b83614263565b9150614a2e826149ed565b602082019050919050565b60006020820190508181036000830152614a5281614a16565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ab5602483614263565b9150614ac082614a59565b604082019050919050565b60006020820190508181036000830152614ae481614aa8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b47602283614263565b9150614b5282614aeb565b604082019050919050565b60006020820190508181036000830152614b7681614b3a565b9050919050565b6000614b88826141b8565b9150614b93836141b8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bcc57614bcb6146e6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c11826141b8565b9150614c1c836141b8565b925082614c2c57614c2b614bd7565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614c93602583614263565b9150614c9e82614c37565b604082019050919050565b60006020820190508181036000830152614cc281614c86565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d25602383614263565b9150614d3082614cc9565b604082019050919050565b60006020820190508181036000830152614d5481614d18565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614d91601683614263565b9150614d9c82614d5b565b602082019050919050565b60006020820190508181036000830152614dc081614d84565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000614e23602383614263565b9150614e2e82614dc7565b604082019050919050565b60006020820190508181036000830152614e5281614e16565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614edb604983614263565b9150614ee682614e59565b606082019050919050565b60006020820190508181036000830152614f0a81614ece565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614f6d603583614263565b9150614f7882614f11565b604082019050919050565b60006020820190508181036000830152614f9c81614f60565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614fd9601383614263565b9150614fe482614fa3565b602082019050919050565b6000602082019050818103600083015261500881614fcc565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061506b603683614263565b91506150768261500f565b604082019050919050565b6000602082019050818103600083015261509a8161505e565b9050919050565b60006150ac826141b8565b91506150b7836141b8565b92508282039050818111156150cf576150ce6146e6565b5b92915050565b600081905092915050565b50565b60006150f06000836150d5565b91506150fb826150e0565b600082019050919050565b6000615111826150e3565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615177602183614263565b91506151828261511b565b604082019050919050565b600060208201905081810360008301526151a68161516a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615209602183614263565b9150615214826151ad565b604082019050919050565b60006020820190508181036000830152615238816151fc565b9050919050565b60008151905061524e816140ac565b92915050565b60006020828403121561526a57615269613fae565b5b60006152788482850161523f565b91505092915050565b6000819050919050565b60006152a66152a161529c84615281565b6143c9565b6141b8565b9050919050565b6152b68161528b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152f18161409a565b82525050565b600061530383836152e8565b60208301905092915050565b6000602082019050919050565b6000615327826152bc565b61533181856152c7565b935061533c836152d8565b8060005b8381101561536d57815161535488826152f7565b975061535f8361530f565b925050600181019050615340565b5085935050505092915050565b600060a08201905061538f600083018861422e565b61539c60208301876152ad565b81810360408301526153ae818661531c565b90506153bd6060830185614496565b6153ca608083018461422e565b969550505050505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ff4ce30fa9ad9d4228f2c87a95b2e0a2b66861c96cba4ce03942aa1dc23c392b64736f6c63430008100033
Deployed Bytecode Sourcemap
17132:11268:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20768:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21892:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17513:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4756:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5655:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18232:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21203:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17209:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5070:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22171:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18006:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21042:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5830:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17312:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4972:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6191:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17267:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17572:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28196:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23113:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21620:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17968:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20945:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17652:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5184:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10542:148;;;;;;;;;;;;;:::i;:::-;;21470:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18075:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20452:308;;;;;;;;;;;;;:::i;:::-;;10332:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17541:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4862:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18108:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22673:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17838:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18411:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18041:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21366:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17936:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6415:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5317:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17903:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27988:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18303:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17612:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18368:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22280:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17760:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17400:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17869:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5498:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17442:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17806:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18140;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10696:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17482:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20768:169;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20844:9:::1;20839:91;20863:5;:12;20859:1;:16;20839:91;;;20914:4;20897;:14;20902:5;20908:1;20902:8;;;;;;;;:::i;:::-;;;;;;;;20897:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;20877:3;;;;;:::i;:::-;;;;20839:91;;;;20768:169:::0;:::o;21892:273::-;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21995:8:::1;21981:11;:22;;;;22027:7;22014:10;:20;;;;22075:10;;22061:11;;:24;;;;:::i;:::-;22045:13;:40;;;;22121:2;22104:13;;:19;;22096:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;21892:273:::0;;:::o;17513:21::-;;;;:::o;4756:100::-;4810:13;4843:5;4836:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4756:100;:::o;5655:169::-;5738:4;5755:39;5764:12;:10;:12::i;:::-;5778:7;5787:6;5755:8;:39::i;:::-;5812:4;5805:11;;5655:169;;;;:::o;18232:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;21203:157::-;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21294:1:::1;21284:6;:11;;21276:20;;;::::0;::::1;;21321:6;21307:11;:20;;;;21338:14;:12;:14::i;:::-;21203:157:::0;:::o;17209:51::-;;;:::o;5070:108::-;5131:7;5158:12;;5151:19;;5070:108;:::o;22171:103::-;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22257:9:::1;22245;;:21;;;;;;;;;;;;;;;;;;22171:103:::0;:::o;18006:28::-;;;;:::o;21042:155::-;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21132:1:::1;21122:6;:11;;21114:20;;;::::0;::::1;;21158:6;21145:10;:19;;;;21175:14;:12;:14::i;:::-;21042:155:::0;:::o;5830:355::-;5970:4;5987:36;5997:6;6005:9;6016:6;5987:9;:36::i;:::-;6034:121;6043:6;6051:12;:10;:12::i;:::-;6065:89;6103:6;6065:89;;;;;;;;;;;;;;;;;:11;:19;6077:6;6065:19;;;;;;;;;;;;;;;:33;6085:12;:10;:12::i;:::-;6065:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6034:8;:121::i;:::-;6173:4;6166:11;;5830:355;;;;;:::o;17312:53::-;17358:6;17312:53;:::o;4972:92::-;5030:5;5055:1;5048:8;;4972:92;:::o;6191:218::-;6279:4;6296:83;6305:12;:10;:12::i;:::-;6319:7;6328:50;6367:10;6328:11;:25;6340:12;:10;:12::i;:::-;6328:25;;;;;;;;;;;;;;;:34;6354:7;6328:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6296:8;:83::i;:::-;6397:4;6390:11;;6191:218;;;;:::o;17267:38::-;;;:::o;17572:33::-;;;;;;;;;;;;;:::o;28196:201::-;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28285:9:::1;28281:109;28304:8;;:15;;28300:1;:19;28281:109;;;28353:12;:25;28366:8;;28375:1;28366:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;28353:25;;;;;;;;;;;;;;;;28346:32;;;;;;;;;;;28321:3;;;;;:::i;:::-;;;;28281:109;;;;28196:201:::0;;:::o;23113:125::-;23178:4;23202:19;:28;23222:7;23202:28;;;;;;;;;;;;;;;;;;;;;;;;;23195:35;;23113:125;;;:::o;21620:266::-;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21721:8:::1;21708:10;:21;;;;21752:7;21740:9;:19;;;;21798:9;;21785:10;;:22;;;;:::i;:::-;21770:12;:37;;;;21842:2;21826:12:::0;::::1;:18;;21818:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21620:266:::0;;:::o;17968:28::-;;;;:::o;20945:91::-;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21016:4:::1;:12;21021:6;21016:12;;;;;;;;;;;;;;;;21009:19;;;;;;;;;;;20945:91:::0;:::o;17652:30::-;;;;;;;;;;;;;:::o;5184:127::-;5258:7;5285:9;:18;5295:7;5285:18;;;;;;;;;;;;;;;;5278:25;;5184:127;;;:::o;10542:148::-;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10649:1:::1;10612:40;;10633:6;;;;;;;;;;;10612:40;;;;;;;;;;;;10680:1;10663:6;;:19;;;;;;;;;;;;;;;;;;10542:148::o:0;21470:144::-;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21602:4:::1;21560:31;:39;21592:6;21560:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;21470:144:::0;;:::o;18075:26::-;;;;:::o;20452:308::-;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20520:1:::1;20507:10;:14;;;;20544:1;20532:9;:13;;;;20584:9;;20571:10;;:22;;;;:::i;:::-;20556:12;:37;;;;20618:1;20604:11;:15;;;;20643:2;20630:10;:15;;;;20686:10;;20672:11;;:24;;;;:::i;:::-;20656:13;:40;;;;20720:1;20707:10;:14;;;;20748:4;20732:13;;:20;;;;;;;;;;;;;;;;;;20452:308::o:0;10332:79::-;10370:7;10397:6;;;;;;;;;;;10390:13;;10332:79;:::o;17541:24::-;;;;;;;;;;;;;:::o;4862:104::-;4918:13;4951:7;4944:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4862:104;:::o;18108:25::-;;;;:::o;22673:242::-;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22780:13:::1;22772:21;;:4;:21;;::::0;22764:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22866:41;22895:4;22901:5;22866:28;:41::i;:::-;22673:242:::0;;:::o;17838:24::-;;;;:::o;18411:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;18041:27::-;;;;:::o;21366:98::-;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21450:6:::1;21437:10;:19;;;;21366:98:::0;:::o;17936:25::-;;;;:::o;6415:269::-;6508:4;6525:129;6534:12;:10;:12::i;:::-;6548:7;6557:96;6596:15;6557:96;;;;;;;;;;;;;;;;;:11;:25;6569:12;:10;:12::i;:::-;6557:25;;;;;;;;;;;;;;;:34;6583:7;6557:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6525:8;:129::i;:::-;6672:4;6665:11;;6415:269;;;;:::o;5317:175::-;5403:4;5420:42;5430:12;:10;:12::i;:::-;5444:9;5455:6;5420:9;:42::i;:::-;5480:4;5473:11;;5317:175;;;;:::o;17903:26::-;;;;:::o;27988:200::-;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28076:9:::1;28072:109;28095:8;;:15;;28091:1;:19;28072:109;;;28165:4;28137:12;:25;28150:8;;28159:1;28150:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;28137:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;28112:3;;;;;:::i;:::-;;;;28072:109;;;;27988:200:::0;;:::o;18303:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;17612:33::-;;;;;;;;;;;;;:::o;18368:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;22280:182::-;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22396:8:::1;22365:19;:28;22385:7;22365:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22436:7;22420:34;;;22445:8;22420:34;;;;;;:::i;:::-;;;;;;;;22280:182:::0;;:::o;17760:39::-;;;;;;;;;;;;;:::o;17400:35::-;;;;:::o;17869:27::-;;;;:::o;5498:151::-;5587:7;5614:11;:18;5626:5;5614:18;;;;;;;;;;;;;;;:27;5633:7;5614:27;;;;;;;;;;;;;;;;5607:34;;5498:151;;;;:::o;17442:33::-;;;;:::o;17806:25::-;;;;:::o;18140:::-;;;;:::o;10696:244::-;10467:12;:10;:12::i;:::-;10457:22;;:6;;;;;;;;;;;:22;;;10449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10805:1:::1;10785:22;;:8;:22;;::::0;10777:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10895:8;10866:38;;10887:6;;;;;;;;;;;10866:38;;;;;;;;;;;;10924:8;10915:6;;:17;;;;;;;;;;;;;;;;;;10696:244:::0;:::o;17482:24::-;;;;:::o;8603:179::-;8661:7;8681:9;8697:1;8693;:5;;;;:::i;:::-;8681:17;;8722:1;8717;:6;;8709:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8773:1;8766:8;;;8603:179;;;;:::o;99:98::-;152:7;179:10;172:17;;99:98;:::o;8065:378::-;8218:1;8201:19;;:5;:19;;;8193:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8299:1;8280:21;;:7;:21;;;8272:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8381:6;8351:11;:18;8363:5;8351:18;;;;;;;;;;;;;;;:27;8370:7;8351:27;;;;;;;;;;;;;;;:36;;;;8419:7;8403:32;;8412:5;8403:32;;;8428:6;8403:32;;;;;;:::i;:::-;;;;;;;;8065:378;;;:::o;22468:199::-;22556:3;22543:10;;22534:6;;:19;;;;:::i;:::-;:25;;;;:::i;:::-;22511:20;:48;;;;22604:5;22600:1;22591:6;;:10;;;;:::i;:::-;:18;;;;:::i;:::-;22570;:39;;;;22656:3;22642:11;;22633:6;;:20;;;;:::i;:::-;:26;;;;:::i;:::-;22621:9;:38;;;;22468:199::o;23244:3810::-;23392:1;23376:18;;:4;:18;;;23368:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23469:1;23455:16;;:2;:16;;;23447:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23536:1;23526:6;:11;23523:92;;23554:28;23570:4;23576:2;23580:1;23554:15;:28::i;:::-;23597:7;;23523:92;23628:14;;;;;;;;;;;23625:1773;;;23688:7;:5;:7::i;:::-;23680:15;;:4;:15;;;;:49;;;;;23722:7;:5;:7::i;:::-;23716:13;;:2;:13;;;;23680:49;:86;;;;;23764:1;23750:16;;:2;:16;;;;23680:86;:128;;;;;23801:6;23787:21;;:2;:21;;;;23680:128;:158;;;;;23830:8;;;;;;;;;;;23829:9;23680:158;23658:1729;;;23876:13;;;;;;;;;;;23872:190;;23921:19;:25;23941:4;23921:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23950:19;:23;23970:2;23950:23;;;;;;;;;;;;;;;;;;;;;;;;;23921:52;:74;;;;23977:12;:18;23990:4;23977:18;;;;;;;;;;;;;;;;;;;;;;;;;23921:74;:94;;;;23999:12;:16;24012:2;23999:16;;;;;;;;;;;;;;;;;;;;;;;;;23921:94;23913:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;23872:190;24105:4;:10;24110:4;24105:10;;;;;;;;;;;;;;;;;;;;;;;;;24104:11;:24;;;;;24120:4;:8;24125:2;24120:8;;;;;;;;;;;;;;;;;;;;;;;;;24119:9;24104:24;24096:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;24191:20;;;;;;;;;;;24187:436;;;24245:7;:5;:7::i;:::-;24239:13;;:2;:13;;;;:47;;;;;24270:15;24256:30;;:2;:30;;;;24239:47;:79;;;;;24304:13;24290:28;;:2;:28;;;;24239:79;24235:369;;;24396:12;24354:28;:39;24383:9;24354:39;;;;;;;;;;;;;;;;:54;24346:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24570:10;;24555:12;:25;;;;:::i;:::-;24513:28;:39;24542:9;24513:39;;;;;;;;;;;;;;;:67;;;;24235:369;24187:436;24645:25;:31;24671:4;24645:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;24681:31;:35;24713:2;24681:35;;;;;;;;;;;;;;;;;;;;;;;;;24680:36;24645:71;24641:731;;;24763:20;;24753:6;:30;;24745:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;24902:9;;24885:13;24895:2;24885:9;:13::i;:::-;24876:6;:22;;;;:::i;:::-;:35;;24868:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24641:731;;;24982:25;:29;25008:2;24982:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;25016:31;:37;25048:4;25016:37;;;;;;;;;;;;;;;;;;;;;;;;;25015:38;24982:71;24978:394;;;25100:20;;25090:6;:30;;25082:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;24978:394;;;25226:31;:35;25258:2;25226:35;;;;;;;;;;;;;;;;;;;;;;;;;25222:150;;25319:9;;25302:13;25312:2;25302:9;:13::i;:::-;25293:6;:22;;;;:::i;:::-;:35;;25285:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25222:150;24978:394;24641:731;23658:1729;23625:1773;25408:28;25439:24;25457:4;25439:9;:24::i;:::-;25408:55;;25474:12;25513:18;;25489:20;:42;;25474:57;;25560:7;:33;;;;;25585:8;;;;;;;;;;;25584:9;25560:33;:61;;;;;25610:11;;;;;;;;;;;25560:61;:110;;;;;25639:25;:31;25665:4;25639:31;;;;;;;;;;;;;;;;;;;;;;;;;25638:32;25560:110;:153;;;;;25688:19;:25;25708:4;25688:25;;;;;;;;;;;;;;;;;;;;;;;;;25687:26;25560:153;:194;;;;;25731:19;:23;25751:2;25731:23;;;;;;;;;;;;;;;;;;;;;;;;;25730:24;25560:194;25542:322;;;25792:4;25781:8;;:15;;;;;;;;;;;;;;;;;;25811:10;:8;:10::i;:::-;25847:5;25836:8;;:16;;;;;;;;;;;;;;;;;;25542:322;25874:12;25890:8;;;;;;;;;;;25889:9;25874:24;;25912:19;:25;25932:4;25912:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25941:19;:23;25961:2;25941:23;;;;;;;;;;;;;;;;;;;;;;;;;25912:52;25909:99;;;25991:5;25981:15;;25909:99;26018:12;26048:7;26045:958;;;26075:25;:29;26101:2;26075:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;26124:1;26108:13;;:17;26075:50;26071:547;;;26152:34;26182:3;26152:25;26163:13;;26152:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;26145:41;;26243:13;;26229:11;;26222:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;26205:13;;:51;;;;;;;:::i;:::-;;;;;;;;26311:13;;26298:10;;26291:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;26275:12;;:49;;;;;;;:::i;:::-;;;;;;;;26071:547;;;26362:25;:31;26388:4;26362:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;26412:1;26397:12;;:16;26362:51;26359:259;;;26438:33;26467:3;26438:24;26449:12;;26438:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26431:40;;26524:12;;26511:10;;26504:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;26487:13;;:49;;;;;;;:::i;:::-;;;;;;;;26590:12;;26578:9;;26571:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;26555:12;;:47;;;;;;;:::i;:::-;;;;;;;;26359:259;26071:547;26642:1;26635:4;:8;26632:334;;;26667:42;26683:4;26697;26704;26667:15;:42::i;:::-;26748:1;26732:13;;:17;26728:223;;;26774:35;26788:4;26795:13;;26774:5;:35::i;:::-;26841:13;:11;:13::i;:::-;26832:6;:22;;;;26877:14;:12;:14::i;:::-;26930:1;26914:13;:17;;;;26728:223;26632:334;26987:4;26977:14;;;;;:::i;:::-;;;26045:958;27013:33;27029:4;27035:2;27039:6;27013:15;:33::i;:::-;23357:3697;;;;23244:3810;;;;:::o;8930:190::-;9016:7;9049:1;9044;:6;;9052:12;9036:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9076:9;9092:1;9088;:5;;;;:::i;:::-;9076:17;;9111:1;9104:8;;;8930:190;;;;;:::o;22921:186::-;23038:5;23004:25;:31;23030:4;23004:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23093:5;23059:40;;23087:4;23059:40;;;;;;;;;;;;22921:186;;:::o;6690:569::-;6848:1;6830:20;;:6;:20;;;6822:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6932:1;6911:23;;:9;:23;;;6903:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6985:47;7006:6;7014:9;7025:6;6985:20;:47::i;:::-;7063:71;7085:6;7063:71;;;;;;;;;;;;;;;;;:9;:17;7073:6;7063:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7043:9;:17;7053:6;7043:17;;;;;;;;;;;;;;;:91;;;;7168:32;7193:6;7168:9;:20;7178:9;7168:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7145:9;:20;7155:9;7145:20;;;;;;;;;;;;;;;:55;;;;7233:9;7216:35;;7225:6;7216:35;;;7244:6;7216:35;;;;;;:::i;:::-;;;;;;;;6690:569;;;:::o;27538:438::-;27577:23;27603:24;27621:4;27603:9;:24::i;:::-;27577:50;;27638:12;27683:1;27664:15;:20;27661:34;;27687:7;;;;27661:34;27747:2;27726:18;;:23;;;;:::i;:::-;27708:15;:41;27705:111;;;27802:2;27781:18;;:23;;;;:::i;:::-;27763:41;;27705:111;27826:33;27843:15;27826:16;:33::i;:::-;27886:1;27871:12;:16;;;;27919:9;;;;;;;;;;;27911:23;;27942:21;27911:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27898:70;;;;;27566:410;;27538:438;:::o;9126:246::-;9184:7;9213:1;9208;:6;9204:47;;9238:1;9231:8;;;;9204:47;9261:9;9277:1;9273;:5;;;;:::i;:::-;9261:17;;9306:1;9301;9297;:5;;;;:::i;:::-;:10;9289:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9363:1;9356:8;;;9126:246;;;;;:::o;9378:132::-;9436:7;9463:39;9467:1;9470;9463:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9456:46;;9378:132;;;;:::o;7645:414::-;7748:1;7729:21;;:7;:21;;;7721:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7799:49;7820:7;7837:1;7841:6;7799:20;:49::i;:::-;7880:68;7903:6;7880:68;;;;;;;;;;;;;;;;;:9;:18;7890:7;7880:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;7859:9;:18;7869:7;7859:18;;;;;;;;;;;;;;;:89;;;;7974:24;7991:6;7974:12;;:16;;:24;;;;:::i;:::-;7959:12;:39;;;;8040:1;8014:37;;8023:7;8014:37;;;8044:6;8014:37;;;;;;:::i;:::-;;;;;;;;7645:414;;:::o;8449:125::-;;;;:::o;27060:472::-;27126:21;27164:1;27150:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27126:40;;27195:4;27177;27182:1;27177:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27221:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27211:4;27216:1;27211:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27254:62;27271:4;27286:15;27304:11;27254:8;:62::i;:::-;27327:15;:66;;;27408:11;27434:1;27451:4;27478;27498:15;27327:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27115:417;27060:472;:::o;9516:189::-;9602:7;9634:1;9630;:5;9637:12;9622:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9661:9;9677:1;9673;:5;;;;:::i;:::-;9661:17;;9696:1;9689:8;;;9516:189;;;;;:::o;8788:136::-;8846:7;8873:43;8877:1;8880;8873:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8866:50;;8788:136;;;;:::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:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:77::-;3828:7;3857:5;3846:16;;3791:77;;;:::o;3874:122::-;3947:24;3965:5;3947:24;:::i;:::-;3940:5;3937:35;3927:63;;3986:1;3983;3976:12;3927:63;3874:122;:::o;4002:139::-;4048:5;4086:6;4073:20;4064:29;;4102:33;4129:5;4102:33;:::i;:::-;4002:139;;;;:::o;4147:474::-;4215:6;4223;4272:2;4260:9;4251:7;4247:23;4243:32;4240:119;;;4278:79;;:::i;:::-;4240:119;4398:1;4423:53;4468:7;4459:6;4448:9;4444:22;4423:53;:::i;:::-;4413:63;;4369:117;4525:2;4551:53;4596:7;4587:6;4576:9;4572:22;4551:53;:::i;:::-;4541:63;;4496:118;4147:474;;;;;:::o;4627:118::-;4714:24;4732:5;4714:24;:::i;:::-;4709:3;4702:37;4627:118;;:::o;4751:222::-;4844:4;4882:2;4871:9;4867:18;4859:26;;4895:71;4963:1;4952:9;4948:17;4939:6;4895:71;:::i;:::-;4751:222;;;;:::o;4979:99::-;5031:6;5065:5;5059:12;5049:22;;4979:99;;;:::o;5084:169::-;5168:11;5202:6;5197:3;5190:19;5242:4;5237:3;5233:14;5218:29;;5084:169;;;;:::o;5259:246::-;5340:1;5350:113;5364:6;5361:1;5358:13;5350:113;;;5449:1;5444:3;5440:11;5434:18;5430:1;5425:3;5421:11;5414:39;5386:2;5383:1;5379:10;5374:15;;5350:113;;;5497:1;5488:6;5483:3;5479:16;5472:27;5321:184;5259:246;;;:::o;5511:377::-;5599:3;5627:39;5660:5;5627:39;:::i;:::-;5682:71;5746:6;5741:3;5682:71;:::i;:::-;5675:78;;5762:65;5820:6;5815:3;5808:4;5801:5;5797:16;5762:65;:::i;:::-;5852:29;5874:6;5852:29;:::i;:::-;5847:3;5843:39;5836:46;;5603:285;5511:377;;;;:::o;5894:313::-;6007:4;6045:2;6034:9;6030:18;6022:26;;6094:9;6088:4;6084:20;6080:1;6069:9;6065:17;6058:47;6122:78;6195:4;6186:6;6122:78;:::i;:::-;6114:86;;5894:313;;;;:::o;6213:474::-;6281:6;6289;6338:2;6326:9;6317:7;6313:23;6309:32;6306:119;;;6344:79;;:::i;:::-;6306:119;6464:1;6489:53;6534:7;6525:6;6514:9;6510:22;6489:53;:::i;:::-;6479:63;;6435:117;6591:2;6617:53;6662:7;6653:6;6642:9;6638:22;6617:53;:::i;:::-;6607:63;;6562:118;6213:474;;;;;:::o;6693:90::-;6727:7;6770:5;6763:13;6756:21;6745:32;;6693:90;;;:::o;6789:109::-;6870:21;6885:5;6870:21;:::i;:::-;6865:3;6858:34;6789:109;;:::o;6904:210::-;6991:4;7029:2;7018:9;7014:18;7006:26;;7042:65;7104:1;7093:9;7089:17;7080:6;7042:65;:::i;:::-;6904:210;;;;:::o;7120:329::-;7179:6;7228:2;7216:9;7207:7;7203:23;7199:32;7196:119;;;7234:79;;:::i;:::-;7196:119;7354:1;7379:53;7424:7;7415:6;7404:9;7400:22;7379:53;:::i;:::-;7369:63;;7325:117;7120:329;;;;:::o;7455:::-;7514:6;7563:2;7551:9;7542:7;7538:23;7534:32;7531:119;;;7569:79;;:::i;:::-;7531:119;7689:1;7714:53;7759:7;7750:6;7739:9;7735:22;7714:53;:::i;:::-;7704:63;;7660:117;7455:329;;;;:::o;7790:60::-;7818:3;7839:5;7832:12;;7790:60;;;:::o;7856:142::-;7906:9;7939:53;7957:34;7966:24;7984:5;7966:24;:::i;:::-;7957:34;:::i;:::-;7939:53;:::i;:::-;7926:66;;7856:142;;;:::o;8004:126::-;8054:9;8087:37;8118:5;8087:37;:::i;:::-;8074:50;;8004:126;;;:::o;8136:153::-;8213:9;8246:37;8277:5;8246:37;:::i;:::-;8233:50;;8136:153;;;:::o;8295:185::-;8409:64;8467:5;8409:64;:::i;:::-;8404:3;8397:77;8295:185;;:::o;8486:276::-;8606:4;8644:2;8633:9;8629:18;8621:26;;8657:98;8752:1;8741:9;8737:17;8728:6;8657:98;:::i;:::-;8486:276;;;;:::o;8768:619::-;8845:6;8853;8861;8910:2;8898:9;8889:7;8885:23;8881:32;8878:119;;;8916:79;;:::i;:::-;8878:119;9036:1;9061:53;9106:7;9097:6;9086:9;9082:22;9061:53;:::i;:::-;9051:63;;9007:117;9163:2;9189:53;9234:7;9225:6;9214:9;9210:22;9189:53;:::i;:::-;9179:63;;9134:118;9291:2;9317:53;9362:7;9353:6;9342:9;9338:22;9317:53;:::i;:::-;9307:63;;9262:118;8768:619;;;;;:::o;9393:118::-;9480:24;9498:5;9480:24;:::i;:::-;9475:3;9468:37;9393:118;;:::o;9517:222::-;9610:4;9648:2;9637:9;9633:18;9625:26;;9661:71;9729:1;9718:9;9714:17;9705:6;9661:71;:::i;:::-;9517:222;;;;:::o;9745:86::-;9780:7;9820:4;9813:5;9809:16;9798:27;;9745:86;;;:::o;9837:112::-;9920:22;9936:5;9920:22;:::i;:::-;9915:3;9908:35;9837:112;;:::o;9955:214::-;10044:4;10082:2;10071:9;10067:18;10059:26;;10095:67;10159:1;10148:9;10144:17;10135:6;10095:67;:::i;:::-;9955:214;;;;:::o;10175:117::-;10284:1;10281;10274:12;10315:568;10388:8;10398:6;10448:3;10441:4;10433:6;10429:17;10425:27;10415:122;;10456:79;;:::i;:::-;10415:122;10569:6;10556:20;10546:30;;10599:18;10591:6;10588:30;10585:117;;;10621:79;;:::i;:::-;10585:117;10735:4;10727:6;10723:17;10711:29;;10789:3;10781:4;10773:6;10769:17;10759:8;10755:32;10752:41;10749:128;;;10796:79;;:::i;:::-;10749:128;10315:568;;;;;:::o;10889:559::-;10975:6;10983;11032:2;11020:9;11011:7;11007:23;11003:32;11000:119;;;11038:79;;:::i;:::-;11000:119;11186:1;11175:9;11171:17;11158:31;11216:18;11208:6;11205:30;11202:117;;;11238:79;;:::i;:::-;11202:117;11351:80;11423:7;11414:6;11403:9;11399:22;11351:80;:::i;:::-;11333:98;;;;11129:312;10889:559;;;;;:::o;11454:116::-;11524:21;11539:5;11524:21;:::i;:::-;11517:5;11514:32;11504:60;;11560:1;11557;11550:12;11504:60;11454:116;:::o;11576:133::-;11619:5;11657:6;11644:20;11635:29;;11673:30;11697:5;11673:30;:::i;:::-;11576:133;;;;:::o;11715:468::-;11780:6;11788;11837:2;11825:9;11816:7;11812:23;11808:32;11805:119;;;11843:79;;:::i;:::-;11805:119;11963:1;11988:53;12033:7;12024:6;12013:9;12009:22;11988:53;:::i;:::-;11978:63;;11934:117;12090:2;12116:50;12158:7;12149:6;12138:9;12134:22;12116:50;:::i;:::-;12106:60;;12061:115;11715:468;;;;;:::o;12189:474::-;12257:6;12265;12314:2;12302:9;12293:7;12289:23;12285:32;12282:119;;;12320:79;;:::i;:::-;12282:119;12440:1;12465:53;12510:7;12501:6;12490:9;12486:22;12465:53;:::i;:::-;12455:63;;12411:117;12567:2;12593:53;12638:7;12629:6;12618:9;12614:22;12593:53;:::i;:::-;12583:63;;12538:118;12189:474;;;;;:::o;12669:182::-;12809:34;12805:1;12797:6;12793:14;12786:58;12669:182;:::o;12857:366::-;12999:3;13020:67;13084:2;13079:3;13020:67;:::i;:::-;13013:74;;13096:93;13185:3;13096:93;:::i;:::-;13214:2;13209:3;13205:12;13198:19;;12857:366;;;:::o;13229:419::-;13395:4;13433:2;13422:9;13418:18;13410:26;;13482:9;13476:4;13472:20;13468:1;13457:9;13453:17;13446:47;13510:131;13636:4;13510:131;:::i;:::-;13502:139;;13229:419;;;:::o;13654:180::-;13702:77;13699:1;13692:88;13799:4;13796:1;13789:15;13823:4;13820:1;13813:15;13840:180;13888:77;13885:1;13878:88;13985:4;13982:1;13975:15;14009:4;14006:1;13999:15;14026:233;14065:3;14088:24;14106:5;14088:24;:::i;:::-;14079:33;;14134:66;14127:5;14124:77;14121:103;;14204:18;;:::i;:::-;14121:103;14251:1;14244:5;14240:13;14233:20;;14026:233;;;:::o;14265:191::-;14305:3;14324:20;14342:1;14324:20;:::i;:::-;14319:25;;14358:20;14376:1;14358:20;:::i;:::-;14353:25;;14401:1;14398;14394:9;14387:16;;14422:3;14419:1;14416:10;14413:36;;;14429:18;;:::i;:::-;14413:36;14265:191;;;;:::o;14462:179::-;14602:31;14598:1;14590:6;14586:14;14579:55;14462:179;:::o;14647:366::-;14789:3;14810:67;14874:2;14869:3;14810:67;:::i;:::-;14803:74;;14886:93;14975:3;14886:93;:::i;:::-;15004:2;14999:3;14995:12;14988:19;;14647:366;;;:::o;15019:419::-;15185:4;15223:2;15212:9;15208:18;15200:26;;15272:9;15266:4;15262:20;15258:1;15247:9;15243:17;15236:47;15300:131;15426:4;15300:131;:::i;:::-;15292:139;;15019:419;;;:::o;15444:180::-;15492:77;15489:1;15482:88;15589:4;15586:1;15579:15;15613:4;15610:1;15603:15;15630:320;15674:6;15711:1;15705:4;15701:12;15691:22;;15758:1;15752:4;15748:12;15779:18;15769:81;;15835:4;15827:6;15823:17;15813:27;;15769:81;15897:2;15889:6;15886:14;15866:18;15863:38;15860:84;;15916:18;;:::i;:::-;15860:84;15681:269;15630:320;;;:::o;15956:179::-;16096:31;16092:1;16084:6;16080:14;16073:55;15956:179;:::o;16141:366::-;16283:3;16304:67;16368:2;16363:3;16304:67;:::i;:::-;16297:74;;16380:93;16469:3;16380:93;:::i;:::-;16498:2;16493:3;16489:12;16482:19;;16141:366;;;:::o;16513:419::-;16679:4;16717:2;16706:9;16702:18;16694:26;;16766:9;16760:4;16756:20;16752:1;16741:9;16737:17;16730:47;16794:131;16920:4;16794:131;:::i;:::-;16786:139;;16513:419;;;:::o;16938:244::-;17078:34;17074:1;17066:6;17062:14;17055:58;17147:27;17142:2;17134:6;17130:15;17123:52;16938:244;:::o;17188:366::-;17330:3;17351:67;17415:2;17410:3;17351:67;:::i;:::-;17344:74;;17427:93;17516:3;17427:93;:::i;:::-;17545:2;17540:3;17536:12;17529:19;;17188:366;;;:::o;17560:419::-;17726:4;17764:2;17753:9;17749:18;17741:26;;17813:9;17807:4;17803:20;17799:1;17788:9;17784:17;17777:47;17841:131;17967:4;17841:131;:::i;:::-;17833:139;;17560:419;;;:::o;17985:225::-;18125:34;18121:1;18113:6;18109:14;18102:58;18194:8;18189:2;18181:6;18177:15;18170:33;17985:225;:::o;18216:366::-;18358:3;18379:67;18443:2;18438:3;18379:67;:::i;:::-;18372:74;;18455:93;18544:3;18455:93;:::i;:::-;18573:2;18568:3;18564:12;18557:19;;18216:366;;;:::o;18588:419::-;18754:4;18792:2;18781:9;18777:18;18769:26;;18841:9;18835:4;18831:20;18827:1;18816:9;18812:17;18805:47;18869:131;18995:4;18869:131;:::i;:::-;18861:139;;18588:419;;;:::o;19013:177::-;19153:29;19149:1;19141:6;19137:14;19130:53;19013:177;:::o;19196:366::-;19338:3;19359:67;19423:2;19418:3;19359:67;:::i;:::-;19352:74;;19435:93;19524:3;19435:93;:::i;:::-;19553:2;19548:3;19544:12;19537:19;;19196:366;;;:::o;19568:419::-;19734:4;19772:2;19761:9;19757:18;19749:26;;19821:9;19815:4;19811:20;19807:1;19796:9;19792:17;19785:47;19849:131;19975:4;19849:131;:::i;:::-;19841:139;;19568:419;;;:::o;19993:223::-;20133:34;20129:1;20121:6;20117:14;20110:58;20202:6;20197:2;20189:6;20185:15;20178:31;19993:223;:::o;20222:366::-;20364:3;20385:67;20449:2;20444:3;20385:67;:::i;:::-;20378:74;;20461:93;20550:3;20461:93;:::i;:::-;20579:2;20574:3;20570:12;20563:19;;20222:366;;;:::o;20594:419::-;20760:4;20798:2;20787:9;20783:18;20775:26;;20847:9;20841:4;20837:20;20833:1;20822:9;20818:17;20811:47;20875:131;21001:4;20875:131;:::i;:::-;20867:139;;20594:419;;;:::o;21019:221::-;21159:34;21155:1;21147:6;21143:14;21136:58;21228:4;21223:2;21215:6;21211:15;21204:29;21019:221;:::o;21246:366::-;21388:3;21409:67;21473:2;21468:3;21409:67;:::i;:::-;21402:74;;21485:93;21574:3;21485:93;:::i;:::-;21603:2;21598:3;21594:12;21587:19;;21246:366;;;:::o;21618:419::-;21784:4;21822:2;21811:9;21807:18;21799:26;;21871:9;21865:4;21861:20;21857:1;21846:9;21842:17;21835:47;21899:131;22025:4;21899:131;:::i;:::-;21891:139;;21618:419;;;:::o;22043:348::-;22083:7;22106:20;22124:1;22106:20;:::i;:::-;22101:25;;22140:20;22158:1;22140:20;:::i;:::-;22135:25;;22328:1;22260:66;22256:74;22253:1;22250:81;22245:1;22238:9;22231:17;22227:105;22224:131;;;22335:18;;:::i;:::-;22224:131;22383:1;22380;22376:9;22365:20;;22043:348;;;;:::o;22397:180::-;22445:77;22442:1;22435:88;22542:4;22539:1;22532:15;22566:4;22563:1;22556:15;22583:185;22623:1;22640:20;22658:1;22640:20;:::i;:::-;22635:25;;22674:20;22692:1;22674:20;:::i;:::-;22669:25;;22713:1;22703:35;;22718:18;;:::i;:::-;22703:35;22760:1;22757;22753:9;22748:14;;22583:185;;;;:::o;22774:224::-;22914:34;22910:1;22902:6;22898:14;22891:58;22983:7;22978:2;22970:6;22966:15;22959:32;22774:224;:::o;23004:366::-;23146:3;23167:67;23231:2;23226:3;23167:67;:::i;:::-;23160:74;;23243:93;23332:3;23243:93;:::i;:::-;23361:2;23356:3;23352:12;23345:19;;23004:366;;;:::o;23376:419::-;23542:4;23580:2;23569:9;23565:18;23557:26;;23629:9;23623:4;23619:20;23615:1;23604:9;23600:17;23593:47;23657:131;23783:4;23657:131;:::i;:::-;23649:139;;23376:419;;;:::o;23801:222::-;23941:34;23937:1;23929:6;23925:14;23918:58;24010:5;24005:2;23997:6;23993:15;23986:30;23801:222;:::o;24029:366::-;24171:3;24192:67;24256:2;24251:3;24192:67;:::i;:::-;24185:74;;24268:93;24357:3;24268:93;:::i;:::-;24386:2;24381:3;24377:12;24370:19;;24029:366;;;:::o;24401:419::-;24567:4;24605:2;24594:9;24590:18;24582:26;;24654:9;24648:4;24644:20;24640:1;24629:9;24625:17;24618:47;24682:131;24808:4;24682:131;:::i;:::-;24674:139;;24401:419;;;:::o;24826:172::-;24966:24;24962:1;24954:6;24950:14;24943:48;24826:172;:::o;25004:366::-;25146:3;25167:67;25231:2;25226:3;25167:67;:::i;:::-;25160:74;;25243:93;25332:3;25243:93;:::i;:::-;25361:2;25356:3;25352:12;25345:19;;25004:366;;;:::o;25376:419::-;25542:4;25580:2;25569:9;25565:18;25557:26;;25629:9;25623:4;25619:20;25615:1;25604:9;25600:17;25593:47;25657:131;25783:4;25657:131;:::i;:::-;25649:139;;25376:419;;;:::o;25801:222::-;25941:34;25937:1;25929:6;25925:14;25918:58;26010:5;26005:2;25997:6;25993:15;25986:30;25801:222;:::o;26029:366::-;26171:3;26192:67;26256:2;26251:3;26192:67;:::i;:::-;26185:74;;26268:93;26357:3;26268:93;:::i;:::-;26386:2;26381:3;26377:12;26370:19;;26029:366;;;:::o;26401:419::-;26567:4;26605:2;26594:9;26590:18;26582:26;;26654:9;26648:4;26644:20;26640:1;26629:9;26625:17;26618:47;26682:131;26808:4;26682:131;:::i;:::-;26674:139;;26401:419;;;:::o;26826:297::-;26966:34;26962:1;26954:6;26950:14;26943:58;27035:34;27030:2;27022:6;27018:15;27011:59;27104:11;27099:2;27091:6;27087:15;27080:36;26826:297;:::o;27129:366::-;27271:3;27292:67;27356:2;27351:3;27292:67;:::i;:::-;27285:74;;27368:93;27457:3;27368:93;:::i;:::-;27486:2;27481:3;27477:12;27470:19;;27129:366;;;:::o;27501:419::-;27667:4;27705:2;27694:9;27690:18;27682:26;;27754:9;27748:4;27744:20;27740:1;27729:9;27725:17;27718:47;27782:131;27908:4;27782:131;:::i;:::-;27774:139;;27501:419;;;:::o;27926:240::-;28066:34;28062:1;28054:6;28050:14;28043:58;28135:23;28130:2;28122:6;28118:15;28111:48;27926:240;:::o;28172:366::-;28314:3;28335:67;28399:2;28394:3;28335:67;:::i;:::-;28328:74;;28411:93;28500:3;28411:93;:::i;:::-;28529:2;28524:3;28520:12;28513:19;;28172:366;;;:::o;28544:419::-;28710:4;28748:2;28737:9;28733:18;28725:26;;28797:9;28791:4;28787:20;28783:1;28772:9;28768:17;28761:47;28825:131;28951:4;28825:131;:::i;:::-;28817:139;;28544:419;;;:::o;28969:169::-;29109:21;29105:1;29097:6;29093:14;29086:45;28969:169;:::o;29144:366::-;29286:3;29307:67;29371:2;29366:3;29307:67;:::i;:::-;29300:74;;29383:93;29472:3;29383:93;:::i;:::-;29501:2;29496:3;29492:12;29485:19;;29144:366;;;:::o;29516:419::-;29682:4;29720:2;29709:9;29705:18;29697:26;;29769:9;29763:4;29759:20;29755:1;29744:9;29740:17;29733:47;29797:131;29923:4;29797:131;:::i;:::-;29789:139;;29516:419;;;:::o;29941:241::-;30081:34;30077:1;30069:6;30065:14;30058:58;30150:24;30145:2;30137:6;30133:15;30126:49;29941:241;:::o;30188:366::-;30330:3;30351:67;30415:2;30410:3;30351:67;:::i;:::-;30344:74;;30427:93;30516:3;30427:93;:::i;:::-;30545:2;30540:3;30536:12;30529:19;;30188:366;;;:::o;30560:419::-;30726:4;30764:2;30753:9;30749:18;30741:26;;30813:9;30807:4;30803:20;30799:1;30788:9;30784:17;30777:47;30841:131;30967:4;30841:131;:::i;:::-;30833:139;;30560:419;;;:::o;30985:194::-;31025:4;31045:20;31063:1;31045:20;:::i;:::-;31040:25;;31079:20;31097:1;31079:20;:::i;:::-;31074:25;;31123:1;31120;31116:9;31108:17;;31147:1;31141:4;31138:11;31135:37;;;31152:18;;:::i;:::-;31135:37;30985:194;;;;:::o;31185:147::-;31286:11;31323:3;31308:18;;31185:147;;;;:::o;31338:114::-;;:::o;31458:398::-;31617:3;31638:83;31719:1;31714:3;31638:83;:::i;:::-;31631:90;;31730:93;31819:3;31730:93;:::i;:::-;31848:1;31843:3;31839:11;31832:18;;31458:398;;;:::o;31862:379::-;32046:3;32068:147;32211:3;32068:147;:::i;:::-;32061:154;;32232:3;32225:10;;31862:379;;;:::o;32247:220::-;32387:34;32383:1;32375:6;32371:14;32364:58;32456:3;32451:2;32443:6;32439:15;32432:28;32247:220;:::o;32473:366::-;32615:3;32636:67;32700:2;32695:3;32636:67;:::i;:::-;32629:74;;32712:93;32801:3;32712:93;:::i;:::-;32830:2;32825:3;32821:12;32814:19;;32473:366;;;:::o;32845:419::-;33011:4;33049:2;33038:9;33034:18;33026:26;;33098:9;33092:4;33088:20;33084:1;33073:9;33069:17;33062:47;33126:131;33252:4;33126:131;:::i;:::-;33118:139;;32845:419;;;:::o;33270:220::-;33410:34;33406:1;33398:6;33394:14;33387:58;33479:3;33474:2;33466:6;33462:15;33455:28;33270:220;:::o;33496:366::-;33638:3;33659:67;33723:2;33718:3;33659:67;:::i;:::-;33652:74;;33735:93;33824:3;33735:93;:::i;:::-;33853:2;33848:3;33844:12;33837:19;;33496:366;;;:::o;33868:419::-;34034:4;34072:2;34061:9;34057:18;34049:26;;34121:9;34115:4;34111:20;34107:1;34096:9;34092:17;34085:47;34149:131;34275:4;34149:131;:::i;:::-;34141:139;;33868:419;;;:::o;34293:143::-;34350:5;34381:6;34375:13;34366:22;;34397:33;34424:5;34397:33;:::i;:::-;34293:143;;;;:::o;34442:351::-;34512:6;34561:2;34549:9;34540:7;34536:23;34532:32;34529:119;;;34567:79;;:::i;:::-;34529:119;34687:1;34712:64;34768:7;34759:6;34748:9;34744:22;34712:64;:::i;:::-;34702:74;;34658:128;34442:351;;;;:::o;34799:85::-;34844:7;34873:5;34862:16;;34799:85;;;:::o;34890:158::-;34948:9;34981:61;34999:42;35008:32;35034:5;35008:32;:::i;:::-;34999:42;:::i;:::-;34981:61;:::i;:::-;34968:74;;34890:158;;;:::o;35054:147::-;35149:45;35188:5;35149:45;:::i;:::-;35144:3;35137:58;35054:147;;:::o;35207:114::-;35274:6;35308:5;35302:12;35292:22;;35207:114;;;:::o;35327:184::-;35426:11;35460:6;35455:3;35448:19;35500:4;35495:3;35491:14;35476:29;;35327:184;;;;:::o;35517:132::-;35584:4;35607:3;35599:11;;35637:4;35632:3;35628:14;35620:22;;35517:132;;;:::o;35655:108::-;35732:24;35750:5;35732:24;:::i;:::-;35727:3;35720:37;35655:108;;:::o;35769:179::-;35838:10;35859:46;35901:3;35893:6;35859:46;:::i;:::-;35937:4;35932:3;35928:14;35914:28;;35769:179;;;;:::o;35954:113::-;36024:4;36056;36051:3;36047:14;36039:22;;35954:113;;;:::o;36103:732::-;36222:3;36251:54;36299:5;36251:54;:::i;:::-;36321:86;36400:6;36395:3;36321:86;:::i;:::-;36314:93;;36431:56;36481:5;36431:56;:::i;:::-;36510:7;36541:1;36526:284;36551:6;36548:1;36545:13;36526:284;;;36627:6;36621:13;36654:63;36713:3;36698:13;36654:63;:::i;:::-;36647:70;;36740:60;36793:6;36740:60;:::i;:::-;36730:70;;36586:224;36573:1;36570;36566:9;36561:14;;36526:284;;;36530:14;36826:3;36819:10;;36227:608;;;36103:732;;;;:::o;36841:831::-;37104:4;37142:3;37131:9;37127:19;37119:27;;37156:71;37224:1;37213:9;37209:17;37200:6;37156:71;:::i;:::-;37237:80;37313:2;37302:9;37298:18;37289:6;37237:80;:::i;:::-;37364:9;37358:4;37354:20;37349:2;37338:9;37334:18;37327:48;37392:108;37495:4;37486:6;37392:108;:::i;:::-;37384:116;;37510:72;37578:2;37567:9;37563:18;37554:6;37510:72;:::i;:::-;37592:73;37660:3;37649:9;37645:19;37636:6;37592:73;:::i;:::-;36841:831;;;;;;;;:::o
Swarm Source
ipfs://ff4ce30fa9ad9d4228f2c87a95b2e0a2b66861c96cba4ce03942aa1dc23c392b
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.