More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 53 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 21112204 | 3 days ago | IN | 0 ETH | 0.00018743 | ||||
Transfer | 21098456 | 5 days ago | IN | 0 ETH | 0.00020917 | ||||
Approve | 16674716 | 625 days ago | IN | 0 ETH | 0.00131352 | ||||
Approve | 16665006 | 626 days ago | IN | 0 ETH | 0.00124178 | ||||
Approve | 16664559 | 627 days ago | IN | 0 ETH | 0.00117276 | ||||
Approve | 16663628 | 627 days ago | IN | 0 ETH | 0.00153656 | ||||
Approve | 16663584 | 627 days ago | IN | 0 ETH | 0.00133656 | ||||
Approve | 16663578 | 627 days ago | IN | 0 ETH | 0.00148824 | ||||
Approve | 16663578 | 627 days ago | IN | 0 ETH | 0.00207587 | ||||
Approve | 16663562 | 627 days ago | IN | 0 ETH | 0.00215874 | ||||
Approve | 16663558 | 627 days ago | IN | 0 ETH | 0.00145428 | ||||
Approve | 16663554 | 627 days ago | IN | 0 ETH | 0.00245027 | ||||
Approve | 16663553 | 627 days ago | IN | 0 ETH | 0.00159854 | ||||
Approve | 16663547 | 627 days ago | IN | 0 ETH | 0.0026142 | ||||
Approve | 16663542 | 627 days ago | IN | 0 ETH | 0.0016358 | ||||
Approve | 16663539 | 627 days ago | IN | 0 ETH | 0.00204432 | ||||
Approve | 16663538 | 627 days ago | IN | 0 ETH | 0.001819 | ||||
Approve | 16663538 | 627 days ago | IN | 0 ETH | 0.00204432 | ||||
Approve | 16663515 | 627 days ago | IN | 0 ETH | 0.0014111 | ||||
Approve | 16663508 | 627 days ago | IN | 0 ETH | 0.00133127 | ||||
Approve | 16663480 | 627 days ago | IN | 0 ETH | 0.00132233 | ||||
Approve | 16663447 | 627 days ago | IN | 0 ETH | 0.00157504 | ||||
Approve | 16663445 | 627 days ago | IN | 0 ETH | 0.00141716 | ||||
Approve | 16663443 | 627 days ago | IN | 0 ETH | 0.00144962 | ||||
Approve | 16663442 | 627 days ago | IN | 0 ETH | 0.00150556 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16664561 | 627 days ago | 0.00000002 ETH | ||||
16664561 | 627 days ago | 0.00084658 ETH | ||||
16664561 | 627 days ago | 0.00677265 ETH | ||||
16664561 | 627 days ago | 0.00169316 ETH | ||||
16664561 | 627 days ago | 0.00931239 ETH | ||||
16663633 | 627 days ago | 0.0008561 ETH | ||||
16663633 | 627 days ago | 0.00684885 ETH | ||||
16663633 | 627 days ago | 0.00171221 ETH | ||||
16663633 | 627 days ago | 0.00941657 ETH | ||||
16663629 | 627 days ago | 0.00171221 ETH | ||||
16663629 | 627 days ago | 0.00941657 ETH | ||||
16663588 | 627 days ago | 0.00000059 ETH | ||||
16663588 | 627 days ago | 0.00108513 ETH | ||||
16663588 | 627 days ago | 0.00868111 ETH | ||||
16663588 | 627 days ago | 0.00217027 ETH | ||||
16663588 | 627 days ago | 0.01193433 ETH | ||||
16663571 | 627 days ago | 0.00000219 ETH | ||||
16663571 | 627 days ago | 0.00151205 ETH | ||||
16663571 | 627 days ago | 0.01209641 ETH | ||||
16663571 | 627 days ago | 0.0030241 ETH | ||||
16663571 | 627 days ago | 0.01663162 ETH | ||||
16663547 | 627 days ago | 0.00000094 ETH | ||||
16663547 | 627 days ago | 0.00117937 ETH | ||||
16663547 | 627 days ago | 0.00943503 ETH | ||||
16663547 | 627 days ago | 0.00235875 ETH |
Loading...
Loading
Contract Name:
HOAI
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-19 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private asdasd; uint256 private _lockTime; 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 waiveOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD)); _owner = address(0x000000000000000000000000000000000000dEaD); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getTime() public view returns (uint256) { return block.timestamp; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract HOAI is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; string private _name = "HOAI"; string private _symbol = "HOAI"; uint8 private _decimals = 9; address payable public marketingWalletAddress = payable(0x59C14e62f368eb27C2d3eb6A1314b441A1bf74f2); address payable public teamWalletAddress = payable(0x7b8c5bC8b245bCde2A3729655692F95c4Ba18431); address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; address public addressP; bool private tradingOpen=true; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isWalletLimitExempt; uint256 public sale = 0; mapping (address => bool) isTxLimitExempt; mapping (address => bool) public isBot; uint256 public blockN = 0; mapping (address => bool) public isMarketPair; mapping (address => bool) public isExcludedFromCut; uint256 public _buyLiquidityFee = 0; uint256 public _buyMarketingFee = 2; uint256 public _buyTeamFee = 1; uint256 public _sellLiquidityFee = 0; uint256 public _sellMarketingFee = 2; uint256 public _sellTeamFee = 1; uint256 public _liquidityShare = 4; uint256 public _marketingShare = 4; uint256 public _teamShare = 16; uint256 public _totalTaxIfBuying = 12; uint256 public _totalTaxIfSelling = 12; uint256 public _totalDistributionShares = 24; uint256 private _totalSupply = 10000000000 * 10**_decimals; uint256 public _maxTxAmount = 10000000000 * 10**_decimals; uint256 public _walletMax = 10000000000 * 10**_decimals; uint256 private minimumTokensBeforeSwap = 25000000 * 10**_decimals; IUniswapV2Router02 public uniswapV2Router; address public uniswapPair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public swapAndLiquifyByLimitOnly = false; bool public checkWalletLimit = false; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _allowances[address(this)][address(uniswapV2Router)] = _totalSupply; isExcludedFromFee[owner()] = true; isExcludedFromFee[address(this)] = true; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee); _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee); _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare); isWalletLimitExempt[owner()] = true; isWalletLimitExempt[address(uniswapPair)] = true; isWalletLimitExempt[address(this)] = true; isExcludedFromCut[owner()] = true; isExcludedFromCut[address(this)] = true; isTxLimitExempt[owner()] = true; isTxLimitExempt[address(this)] = true; isMarketPair[address(uniswapPair)] = true; _balances[_msgSender()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function minimumTokensBeforeSwapAmount() public view returns (uint256) { return minimumTokensBeforeSwap; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function setMarketPairStatus(address account, bool newValue) public onlyOwner { isMarketPair[account] = newValue; } function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner { isTxLimitExempt[holder] = exempt; } function setIsExcludedFromFee(address account, bool newValue) public onlyOwner { isExcludedFromFee[account] = newValue; } function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() { _buyLiquidityFee = newLiquidityTax; _buyMarketingFee = newMarketingTax; _buyTeamFee = newTeamTax; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee); } function setSelTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() { _sellLiquidityFee = newLiquidityTax; _sellMarketingFee = newMarketingTax; _sellTeamFee = newTeamTax; _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee); } function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() { _liquidityShare = newLiquidityShare; _marketingShare = newMarketingShare; _teamShare = newTeamShare; _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare); } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; } function enableDisableWalletLimit(bool newValue) external onlyOwner { checkWalletLimit = newValue; } function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner { isWalletLimitExempt[holder] = exempt; } function setWalletLimit(uint256 newLimit) external onlyOwner { _walletMax = newLimit; } function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() { minimumTokensBeforeSwap = newLimit; } function setMarketingWalletAddress(address newAddress) external onlyOwner() { marketingWalletAddress = payable(newAddress); } function setTeamWalletAddress(address newAddress) external onlyOwner() { teamWalletAddress = payable(newAddress); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner { swapAndLiquifyByLimitOnly = newValue; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)); } function setisExcludedFromCut(address account, bool newValue) public onlyOwner { isExcludedFromCut[account] = newValue; } function manageExcludeFromCut(address[] calldata addresses, bool status) public onlyOwner { require(addresses.length < 201); for (uint256 i; i < addresses.length; ++i) { isExcludedFromCut[addresses[i]] = status; } } function setAddressP(address _addressP)external onlyOwner() { addressP = _addressP; } function setBlockN(uint256 _blockN)external onlyOwner() { blockN = _blockN; } function setIsBot(address holder, bool exempt) external onlyOwner { isBot[holder] = exempt; } function getSaleAt()public view returns (uint256) { return sale; } function getBlock()public view returns (uint256) { return block.number; } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH()); if(newPairAddress == address(0)) //Create If Doesnt exist { newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); } uniswapPair = newPairAddress; //Set new pair address uniswapV2Router = _uniswapV2Router; //Set new router address isWalletLimitExempt[address(uniswapPair)] = true; isMarketPair[address(uniswapPair)] = true; } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); //Trade start check if (!tradingOpen) { require(sender == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } if(inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } else { if(sender == addressP && recipient == uniswapPair){ sale = block.number; } if (sender == uniswapPair) { if (block.number <= (sale + blockN)) { isBot[recipient] = true; } } if (sender != owner() && recipient != owner()) _checkTxLimit(sender,amount); uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap; if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) { if(swapAndLiquifyByLimitOnly) contractTokenBalance = minimumTokensBeforeSwap; swapAndLiquify(contractTokenBalance); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? amount : takeFee(sender, recipient, amount); if(checkWalletLimit && !isWalletLimitExempt[recipient]) require(balanceOf(recipient).add(finalAmount) <= _walletMax); _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function swapAndLiquify(uint256 tAmount) private lockTheSwap { uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2); uint256 tokensForSwap = tAmount.sub(tokensForLP); swapTokensForEth(tokensForSwap); uint256 amountReceived = address(this).balance; uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2)); uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2); uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee); uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam); if(amountBNBMarketing > 0) transferToAddressETH(marketingWalletAddress, amountBNBMarketing); if(amountBNBTeam > 0) transferToAddressETH(teamWalletAddress, amountBNBTeam); if(amountBNBLiquidity > 0 && tokensForLP > 0) addLiquidity(tokensForLP, amountBNBLiquidity); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function setTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint256 feeAmount = 0; if(isMarketPair[sender]) { feeAmount = amount.mul(_totalTaxIfBuying).div(100); } else if(isMarketPair[recipient]) { feeAmount = amount.mul(_totalTaxIfSelling).div(100); } if(feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return amount.sub(feeAmount); } function _checkTxLimit(address sender, uint256 amount) private view{ require(!isBot[sender], "From cannot be bot!"); require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addressP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSaleAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromCut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manageExcludeFromCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addressP","type":"address"}],"name":"setAddressP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockN","type":"uint256"}],"name":"setBlockN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSelTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setisExcludedFromCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526040518060400160405280600481526020017f484f414900000000000000000000000000000000000000000000000000000000815250600390805190602001906200005192919062000cc3565b506040518060400160405280600481526020017f484f414900000000000000000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000cc3565b506009600560006101000a81548160ff021916908360ff1602179055507359c14e62f368eb27c2d3eb6a1314b441a1bf74f2600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737b8c5bc8b245bcde2a3729655692f95c4ba18431600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506001600760146101000a81548160ff0219169083151502179055506000600c556000600f55600060125560026013556001601455600060155560026016556001601755600460185560046019556010601a55600c601b55600c601c556018601d55600560009054906101000a900460ff16600a6200021d919062000f3a565b6402540be4006200022f919062001077565b601e55600560009054906101000a900460ff16600a62000250919062000f3a565b6402540be40062000262919062001077565b601f55600560009054906101000a900460ff16600a62000283919062000f3a565b6402540be40062000295919062001077565b602055600560009054906101000a900460ff16600a620002b6919062000f3a565b63017d7840620002c7919062001077565b6021556001602360156101000a81548160ff0219169083151502179055506000602360166101000a81548160ff0219169083151502179055506000602360176101000a81548160ff0219169083151502179055503480156200032857600080fd5b5060006200033b62000c2f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043957600080fd5b505afa1580156200044e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000474919062000d8a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004d757600080fd5b505afa158015620004ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000512919062000d8a565b6040518363ffffffff1660e01b81526004016200053192919062000e05565b602060405180830381600087803b1580156200054c57600080fd5b505af115801562000561573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000587919062000d8a565b602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e54600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000620006c362000c3760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007a56014546200079160135460125462000c6060201b620032121790919060201c565b62000c6060201b620032121790919060201c565b601b81905550620007e4601754620007d060165460155462000c6060201b620032121790919060201c565b62000c6060201b620032121790919060201c565b601c8190555062000823601a546200080f60195460185462000c6060201b620032121790919060201c565b62000c6060201b620032121790919060201c565b601d819055506001600b60006200083f62000c3760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160006200097862000c3760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d600062000a3762000c3760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601e546008600062000b7162000c2f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000bbf62000c2f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601e5460405162000c20919062000e54565b60405180910390a3506200120c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000c71919062000e82565b90508381101562000cb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cb09062000e32565b60405180910390fd5b8091505092915050565b82805462000cd19062001123565b90600052602060002090601f01602090048101928262000cf5576000855562000d41565b82601f1062000d1057805160ff191683800117855562000d41565b8280016001018555821562000d41579182015b8281111562000d4057825182559160200191906001019062000d23565b5b50905062000d50919062000d54565b5090565b5b8082111562000d6f57600081600090555060010162000d55565b5090565b60008151905062000d8481620011f2565b92915050565b60006020828403121562000da35762000da2620011b7565b5b600062000db38482850162000d73565b91505092915050565b62000dc781620010d8565b82525050565b600062000ddc601b8362000e71565b915062000de982620011c9565b602082019050919050565b62000dff816200110c565b82525050565b600060408201905062000e1c600083018562000dbc565b62000e2b602083018462000dbc565b9392505050565b6000602082019050818103600083015262000e4d8162000dcd565b9050919050565b600060208201905062000e6b600083018462000df4565b92915050565b600082825260208201905092915050565b600062000e8f826200110c565b915062000e9c836200110c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ed45762000ed362001159565b5b828201905092915050565b6000808291508390505b600185111562000f315780860481111562000f095762000f0862001159565b5b600185161562000f195780820291505b808102905062000f2985620011bc565b945062000ee9565b94509492505050565b600062000f47826200110c565b915062000f548362001116565b925062000f837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f8b565b905092915050565b60008262000f9d576001905062001070565b8162000fad576000905062001070565b816001811462000fc6576002811462000fd15762001007565b600191505062001070565b60ff84111562000fe65762000fe562001159565b5b8360020a915084821115620010005762000fff62001159565b5b5062001070565b5060208310610133831016604e8410600b8410161715620010415782820a9050838111156200103b576200103a62001159565b5b62001070565b62001050848484600162000edf565b925090508184048111156200106a576200106962001159565b5b81810290505b9392505050565b600062001084826200110c565b915062001091836200110c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620010cd57620010cc62001159565b5b828202905092915050565b6000620010e582620010ec565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200113c57607f821691505b6020821081141562001153576200115262001188565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b620011fd81620010d8565b81146200120957600080fd5b50565b60805160601c61595862001232600039600081816117ce01526118ea01526159586000f3fe6080604052600436106104145760003560e01c80637d73900f1161021e578063c469b6dd11610123578063dc44b6a0116100ab578063f0cd1dac1161007a578063f0cd1dac14610fe6578063f1d5f51714611011578063f2fde38b1461103a578063f84ba65d14611063578063f872858a1461108c5761041b565b8063dc44b6a014610f2c578063dd62ed3e14610f57578063ec28438a14610f94578063ef422a1814610fbd5761041b565b8063c8607952116100f2578063c860795214610e43578063c867d60b14610e6e578063cab0347114610eab578063d158272d14610ed6578063da00097d14610f015761041b565b8063c469b6dd14610d99578063c49b9a8014610dc4578063c5d2418914610ded578063c816841b14610e185761041b565b8063a073d37f116101a6578063a5d69d1f11610175578063a5d69d1f14610ca2578063a83f53a714610ccb578063a8e1515014610cf6578063a9059cbb14610d33578063c2d4640e14610d705761041b565b8063a073d37f14610be4578063a08e671f14610c0f578063a457c2d714610c3a578063a52dc2e714610c775761041b565b806388790a68116101ed57806388790a6814610b235780638da5cb5b14610b4e5780638f70ccf714610b79578063914eb66a14610ba257806395d89b4114610bb95761041b565b80637d73900f14610a7b578063807c2d9c14610aa457806382eefb4314610acf578063844d591c14610afa5761041b565b80632e97766d11610324578063512f9170116102ac5780635881f3ef1161027b5780635881f3ef1461098057806361a23c69146109bd5780636ad1fe02146109e857806370a0823114610a135780637d1db4a514610a505761041b565b8063512f9170146108c25780635342acb4146108ed578063557ed1ba1461092a57806357a5802f146109555761041b565b80633bbac579116102f35780633bbac579146107cb5780633ecad271146108085780634a74bb02146108455780634cb80fd51461087057806350b20cac146108995761041b565b80632e97766d1461070f578063313ce5671461073a57806339509351146107655780633b97084a146107a25761041b565b806318160ddd116103a75780632563ae83116103765780632563ae831461063e57806327c8f835146106675780632af38605146106925780632b112e49146106bb5780632c4b2334146106e65761041b565b806318160ddd146105845780631870517a146105af5780632198cf6c146105d857806323b872dd146106015761041b565b80630d5e5c87116103e35780630d5e5c87146104da5780631245e3471461050357806314353ed11461052e5780631694505e146105595761041b565b806303c0f5d4146104205780630504bc7a1461044957806306fdde0314610472578063095ea7b31461049d5761041b565b3661041b57005b600080fd5b34801561042c57600080fd5b5061044760048036038101906104429190614a27565b6110b7565b005b34801561045557600080fd5b50610470600480360381019061046b919061493a565b6111a7565b005b34801561047e57600080fd5b50610487611280565b6040516104949190614fa5565b60405180910390f35b3480156104a957600080fd5b506104c460048036038101906104bf9190614a67565b611312565b6040516104d19190614f6f565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc9190614b61565b611330565b005b34801561050f57600080fd5b50610518611410565b6040516105259190614eca565b60405180910390f35b34801561053a57600080fd5b50610543611436565b6040516105509190615127565b60405180910390f35b34801561056557600080fd5b5061056e611440565b60405161057b9190614f8a565b60405180910390f35b34801561059057600080fd5b50610599611466565b6040516105a69190615127565b60405180910390f35b3480156105bb57600080fd5b506105d660048036038101906105d19190614b61565b611470565b005b3480156105e457600080fd5b506105ff60048036038101906105fa9190614a27565b611550565b005b34801561060d57600080fd5b50610628600480360381019061062391906149d4565b611640565b6040516106359190614f6f565b60405180910390f35b34801561064a57600080fd5b5061066560048036038101906106609190614b07565b61171a565b005b34801561067357600080fd5b5061067c6117cc565b6040516106899190614eaf565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b49190614a27565b6117f0565b005b3480156106c757600080fd5b506106d06118e0565b6040516106dd9190615127565b60405180910390f35b3480156106f257600080fd5b5061070d6004803603810190610708919061493a565b611924565b005b34801561071b57600080fd5b506107246119fd565b6040516107319190615127565b60405180910390f35b34801561074657600080fd5b5061074f611a05565b60405161075c91906151cc565b60405180910390f35b34801561077157600080fd5b5061078c60048036038101906107879190614a67565b611a1c565b6040516107999190614f6f565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c49190614b34565b611acf565b005b3480156107d757600080fd5b506107f260048036038101906107ed919061493a565b611b6e565b6040516107ff9190614f6f565b60405180910390f35b34801561081457600080fd5b5061082f600480360381019061082a919061493a565b611b8e565b60405161083c9190614f6f565b60405180910390f35b34801561085157600080fd5b5061085a611bae565b6040516108679190614f6f565b60405180910390f35b34801561087c57600080fd5b506108976004803603810190610892919061493a565b611bc1565b005b3480156108a557600080fd5b506108c060048036038101906108bb9190614aa7565b611c9a565b005b3480156108ce57600080fd5b506108d7611de2565b6040516108e49190614eaf565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f919061493a565b611e08565b6040516109219190614f6f565b60405180910390f35b34801561093657600080fd5b5061093f611e28565b60405161094c9190615127565b60405180910390f35b34801561096157600080fd5b5061096a611e30565b6040516109779190615127565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a2919061493a565b611e36565b6040516109b49190614eaf565b60405180910390f35b3480156109c957600080fd5b506109d2612394565b6040516109df9190615127565b60405180910390f35b3480156109f457600080fd5b506109fd61239a565b604051610a0a9190615127565b60405180910390f35b348015610a1f57600080fd5b50610a3a6004803603810190610a35919061493a565b6123a0565b604051610a479190615127565b60405180910390f35b348015610a5c57600080fd5b50610a656123e9565b604051610a729190615127565b60405180910390f35b348015610a8757600080fd5b50610aa26004803603810190610a9d9190614b34565b6123ef565b005b348015610ab057600080fd5b50610ab961248e565b604051610ac69190615127565b60405180910390f35b348015610adb57600080fd5b50610ae4612494565b604051610af19190615127565b60405180910390f35b348015610b0657600080fd5b50610b216004803603810190610b1c9190614a27565b61249a565b005b348015610b2f57600080fd5b50610b3861258a565b604051610b459190615127565b60405180910390f35b348015610b5a57600080fd5b50610b63612590565b604051610b709190614eaf565b60405180910390f35b348015610b8557600080fd5b50610ba06004803603810190610b9b9190614b07565b6125b9565b005b348015610bae57600080fd5b50610bb761266b565b005b348015610bc557600080fd5b50610bce6127c0565b604051610bdb9190614fa5565b60405180910390f35b348015610bf057600080fd5b50610bf9612852565b604051610c069190615127565b60405180910390f35b348015610c1b57600080fd5b50610c2461285c565b604051610c319190615127565b60405180910390f35b348015610c4657600080fd5b50610c616004803603810190610c5c9190614a67565b612862565b604051610c6e9190614f6f565b60405180910390f35b348015610c8357600080fd5b50610c8c61292f565b604051610c999190615127565b60405180910390f35b348015610cae57600080fd5b50610cc96004803603810190610cc49190614b07565b612935565b005b348015610cd757600080fd5b50610ce06129e7565b604051610ced9190615127565b60405180910390f35b348015610d0257600080fd5b50610d1d6004803603810190610d18919061493a565b6129ed565b604051610d2a9190614f6f565b60405180910390f35b348015610d3f57600080fd5b50610d5a6004803603810190610d559190614a67565b612a0d565b604051610d679190614f6f565b60405180910390f35b348015610d7c57600080fd5b50610d976004803603810190610d929190614b61565b612a2c565b005b348015610da557600080fd5b50610dae612b0c565b604051610dbb9190615127565b60405180910390f35b348015610dd057600080fd5b50610deb6004803603810190610de69190614b07565b612b12565b005b348015610df957600080fd5b50610e02612bfb565b604051610e0f9190615127565b60405180910390f35b348015610e2457600080fd5b50610e2d612c01565b604051610e3a9190614eaf565b60405180910390f35b348015610e4f57600080fd5b50610e58612c27565b604051610e659190615127565b60405180910390f35b348015610e7a57600080fd5b50610e956004803603810190610e90919061493a565b612c2d565b604051610ea29190614f6f565b60405180910390f35b348015610eb757600080fd5b50610ec0612c4d565b604051610ecd9190615127565b60405180910390f35b348015610ee257600080fd5b50610eeb612c53565b604051610ef89190614eca565b60405180910390f35b348015610f0d57600080fd5b50610f16612c79565b604051610f239190614f6f565b60405180910390f35b348015610f3857600080fd5b50610f41612c8c565b604051610f4e9190615127565b60405180910390f35b348015610f6357600080fd5b50610f7e6004803603810190610f799190614994565b612c92565b604051610f8b9190615127565b60405180910390f35b348015610fa057600080fd5b50610fbb6004803603810190610fb69190614b34565b612d19565b005b348015610fc957600080fd5b50610fe46004803603810190610fdf9190614a27565b612db8565b005b348015610ff257600080fd5b50610ffb612ea8565b6040516110089190615127565b60405180910390f35b34801561101d57600080fd5b5061103860048036038101906110339190614b34565b612eae565b005b34801561104657600080fd5b50611061600480360381019061105c919061493a565b612f4d565b005b34801561106f57600080fd5b5061108a60048036038101906110859190614a27565b61310f565b005b34801561109857600080fd5b506110a16131ff565b6040516110ae9190614f6f565b60405180910390f35b6110bf613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611143906150c7565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6111af613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611233906150c7565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606003805461128f90615433565b80601f01602080910402602001604051908101604052809291908181526020018280546112bb90615433565b80156113085780601f106112dd57610100808354040283529160200191611308565b820191906000526020600020905b8154815290600101906020018083116112eb57829003601f168201915b5050505050905090565b600061132661131f613270565b8484613278565b6001905092915050565b611338613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc906150c7565b60405180910390fd5b8260158190555081601681905550806017819055506114056017546113f760165460155461321290919063ffffffff16565b61321290919063ffffffff16565b601c81905550505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601e54905090565b611478613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc906150c7565b60405180910390fd5b82601281905550816013819055508060148190555061154560145461153760135460125461321290919063ffffffff16565b61321290919063ffffffff16565b601b81905550505050565b611558613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc906150c7565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061164d848484613443565b5061170f8461165a613270565b61170a856040518060600160405280602881526020016158d660289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006116c0613270565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc69092919063ffffffff16565b613278565b600190509392505050565b611722613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a6906150c7565b60405180910390fd5b80602360176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6117f8613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c906150c7565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061191f61190e7f00000000000000000000000000000000000000000000000000000000000000006123a0565b601e54613c2a90919063ffffffff16565b905090565b61192c613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b0906150c7565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600043905090565b6000600560009054906101000a900460ff16905090565b6000611ac5611a29613270565b84611ac08560096000611a3a613270565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321290919063ffffffff16565b613278565b6001905092915050565b611ad7613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5b906150c7565b60405180910390fd5b8060218190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b602360159054906101000a900460ff1681565b611bc9613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d906150c7565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ca2613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d26906150c7565b60405180910390fd5b60c98383905010611d3f57600080fd5b60005b83839050811015611ddc578160116000868685818110611d6557611d6461553b565b5b9050602002016020810190611d7a919061493a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611dd590615465565b9050611d42565b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60185481565b6000611e40613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec4906150c7565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611f1857600080fd5b505afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190614967565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611fb257600080fd5b505afa158015611fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fea9190614967565b6040518363ffffffff1660e01b8152600401612007929190614ee5565b60206040518083038186803b15801561201f57600080fd5b505afa158015612033573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120579190614967565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612218578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156120d457600080fd5b505afa1580156120e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210c9190614967565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561216e57600080fd5b505afa158015612182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a69190614967565b6040518363ffffffff1660e01b81526004016121c3929190614ee5565b602060405180830381600087803b1580156121dd57600080fd5b505af11580156121f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122159190614967565b91505b81602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60195481565b600c5481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601f5481565b6123f7613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b906150c7565b60405180910390fd5b80600f8190555050565b60205481565b601c5481565b6124a2613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461252f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612526906150c7565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6125c1613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612645906150c7565b60405180910390fd5b80600760146101000a81548160ff02191690831515021790555050565b612673613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f7906150c7565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6060600480546127cf90615433565b80601f01602080910402602001604051908101604052809291908181526020018280546127fb90615433565b80156128485780601f1061281d57610100808354040283529160200191612848565b820191906000526020600020905b81548152906001019060200180831161282b57829003601f168201915b5050505050905090565b6000602154905090565b601d5481565b600061292561286f613270565b84612920856040518060600160405280602581526020016158fe6025913960096000612899613270565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc69092919063ffffffff16565b613278565b6001905092915050565b600f5481565b61293d613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c1906150c7565b60405180910390fd5b80602360166101000a81548160ff02191690831515021790555050565b601a5481565b60116020528060005260406000206000915054906101000a900460ff1681565b6000612a21612a1a613270565b8484613443565b506001905092915050565b612a34613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab8906150c7565b60405180910390fd5b826018819055508160198190555080601a81905550612b01601a54612af360195460185461321290919063ffffffff16565b61321290919063ffffffff16565b601d81905550505050565b60145481565b612b1a613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9e906150c7565b60405180910390fd5b80602360156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612bf09190614f6f565b60405180910390a150565b60135481565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60175481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602360169054906101000a900460ff1681565b60125481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612d21613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da5906150c7565b60405180910390fd5b80601f8190555050565b612dc0613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e44906150c7565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b612eb6613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3a906150c7565b60405180910390fd5b8060208190555050565b612f55613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd9906150c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304990615027565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613117613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319b906150c7565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602360179054906101000a900460ff1681565b6000808284613221919061523c565b905083811015613266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325d90615067565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132df90615107565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334f90615047565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516134369190615127565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156134b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ab906150e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351b90614fc7565b60405180910390fd5b600760149054906101000a900460ff166135ae57613540612590565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a490615007565b60405180910390fd5b5b602360149054906101000a900460ff16156135d5576135ce848484613c74565b9050613bbf565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561367f5750602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561368c5743600c819055505b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561375257600f54600c546136f2919061523c565b4311613751576001600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b61375a612590565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156137c85750613798612590565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156137d8576137d78483613e47565b5b60006137e3306123a0565b9050600060215482101590508080156138095750602360149054906101000a900460ff16155b801561385f5750601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138775750602360159054906101000a900460ff165b156138a157602360169054906101000a900460ff16156138975760215491505b6138a082613f71565b5b61392a846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc69092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a105750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a2457613a1f878787614162565b613a26565b845b9050602360179054906101000a900460ff168015613a8e5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613abd57602054613ab182613aa3896123a0565b61321290919063ffffffff16565b1115613abc57600080fd5b5b613b0f81600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321290919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613baf9190615127565b60405180910390a3600193505050505b9392505050565b6000838311158290613c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c059190614fa5565b60405180910390fd5b5060008385613c1d919061531d565b9050809150509392505050565b6000613c6c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613bc6565b905092915050565b6000613cff826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc69092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d9482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321290919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e349190615127565b60405180910390a3600190509392505050565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ecb90615087565b60405180910390fd5b601f5481111580613f2e5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f6490614fe7565b60405180910390fd5b5050565b6001602360146101000a81548160ff0219169083151502179055506000613fca6002613fbc601d54613fae6018548761438990919063ffffffff16565b61440490919063ffffffff16565b61440490919063ffffffff16565b90506000613fe18284613c2a90919063ffffffff16565b9050613fec8161444e565b6000479050600061401d61400c600260185461440490919063ffffffff16565b601d54613c2a90919063ffffffff16565b9050600061405b600261404d8461403f6018548861438990919063ffffffff16565b61440490919063ffffffff16565b61440490919063ffffffff16565b9050600061408683614078601a548761438990919063ffffffff16565b61440490919063ffffffff16565b905060006140af826140a18588613c2a90919063ffffffff16565b613c2a90919063ffffffff16565b905060008111156140e7576140e6600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826146d9565b5b600082111561411d5761411c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836146d9565b5b60008311801561412d5750600087115b1561413d5761413c8784614724565b5b505050505050506000602360146101000a81548160ff02191690831515021790555050565b60008060009050601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141ea576141e360646141d5601b548661438990919063ffffffff16565b61440490919063ffffffff16565b9050614268565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614267576142646064614256601c548661438990919063ffffffff16565b61440490919063ffffffff16565b90505b5b600081111561436c576142c381600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321290919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143639190615127565b60405180910390a35b61437f8184613c2a90919063ffffffff16565b9150509392505050565b60008083141561439c57600090506143fe565b600082846143aa91906152c3565b90508284826143b99190615292565b146143f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143f0906150a7565b60405180910390fd5b809150505b92915050565b600061444683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614818565b905092915050565b6000600267ffffffffffffffff81111561446b5761446a61556a565b5b6040519080825280602002602001820160405280156144995781602001602082028036833780820191505090505b50905030816000815181106144b1576144b061553b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561455357600080fd5b505afa158015614567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061458b9190614967565b8160018151811061459f5761459e61553b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061460630602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613278565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161466a959493929190615172565b600060405180830381600087803b15801561468457600080fd5b505af1158015614698573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146cd929190615142565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561471f573d6000803e3d6000fd5b505050565b61475130602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613278565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061479d612590565b426040518863ffffffff1660e01b81526004016147bf96959493929190614f0e565b6060604051808303818588803b1580156147d857600080fd5b505af11580156147ec573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906148119190614bb4565b5050505050565b6000808311829061485f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016148569190614fa5565b60405180910390fd5b506000838561486e9190615292565b9050809150509392505050565b60008135905061488a81615890565b92915050565b60008151905061489f81615890565b92915050565b60008083601f8401126148bb576148ba61559e565b5b8235905067ffffffffffffffff8111156148d8576148d7615599565b5b6020830191508360208202830111156148f4576148f36155a3565b5b9250929050565b60008135905061490a816158a7565b92915050565b60008135905061491f816158be565b92915050565b600081519050614934816158be565b92915050565b6000602082840312156149505761494f6155ad565b5b600061495e8482850161487b565b91505092915050565b60006020828403121561497d5761497c6155ad565b5b600061498b84828501614890565b91505092915050565b600080604083850312156149ab576149aa6155ad565b5b60006149b98582860161487b565b92505060206149ca8582860161487b565b9150509250929050565b6000806000606084860312156149ed576149ec6155ad565b5b60006149fb8682870161487b565b9350506020614a0c8682870161487b565b9250506040614a1d86828701614910565b9150509250925092565b60008060408385031215614a3e57614a3d6155ad565b5b6000614a4c8582860161487b565b9250506020614a5d858286016148fb565b9150509250929050565b60008060408385031215614a7e57614a7d6155ad565b5b6000614a8c8582860161487b565b9250506020614a9d85828601614910565b9150509250929050565b600080600060408486031215614ac057614abf6155ad565b5b600084013567ffffffffffffffff811115614ade57614add6155a8565b5b614aea868287016148a5565b93509350506020614afd868287016148fb565b9150509250925092565b600060208284031215614b1d57614b1c6155ad565b5b6000614b2b848285016148fb565b91505092915050565b600060208284031215614b4a57614b496155ad565b5b6000614b5884828501614910565b91505092915050565b600080600060608486031215614b7a57614b796155ad565b5b6000614b8886828701614910565b9350506020614b9986828701614910565b9250506040614baa86828701614910565b9150509250925092565b600080600060608486031215614bcd57614bcc6155ad565b5b6000614bdb86828701614925565b9350506020614bec86828701614925565b9250506040614bfd86828701614925565b9150509250925092565b6000614c138383614c2e565b60208301905092915050565b614c2881615363565b82525050565b614c3781615351565b82525050565b614c4681615351565b82525050565b6000614c57826151f7565b614c61818561521a565b9350614c6c836151e7565b8060005b83811015614c9d578151614c848882614c07565b9750614c8f8361520d565b925050600181019050614c70565b5085935050505092915050565b614cb381615375565b82525050565b614cc2816153b8565b82525050565b614cd1816153ca565b82525050565b6000614ce282615202565b614cec818561522b565b9350614cfc818560208601615400565b614d05816155b2565b840191505092915050565b6000614d1d60238361522b565b9150614d28826155c3565b604082019050919050565b6000614d4060118361522b565b9150614d4b82615612565b602082019050919050565b6000614d63603f8361522b565b9150614d6e8261563b565b604082019050919050565b6000614d8660268361522b565b9150614d918261568a565b604082019050919050565b6000614da960228361522b565b9150614db4826156d9565b604082019050919050565b6000614dcc601b8361522b565b9150614dd782615728565b602082019050919050565b6000614def60138361522b565b9150614dfa82615751565b602082019050919050565b6000614e1260218361522b565b9150614e1d8261577a565b604082019050919050565b6000614e3560208361522b565b9150614e40826157c9565b602082019050919050565b6000614e5860258361522b565b9150614e63826157f2565b604082019050919050565b6000614e7b60248361522b565b9150614e8682615841565b604082019050919050565b614e9a816153a1565b82525050565b614ea9816153ab565b82525050565b6000602082019050614ec46000830184614c3d565b92915050565b6000602082019050614edf6000830184614c1f565b92915050565b6000604082019050614efa6000830185614c3d565b614f076020830184614c3d565b9392505050565b600060c082019050614f236000830189614c3d565b614f306020830188614e91565b614f3d6040830187614cc8565b614f4a6060830186614cc8565b614f576080830185614c3d565b614f6460a0830184614e91565b979650505050505050565b6000602082019050614f846000830184614caa565b92915050565b6000602082019050614f9f6000830184614cb9565b92915050565b60006020820190508181036000830152614fbf8184614cd7565b905092915050565b60006020820190508181036000830152614fe081614d10565b9050919050565b6000602082019050818103600083015261500081614d33565b9050919050565b6000602082019050818103600083015261502081614d56565b9050919050565b6000602082019050818103600083015261504081614d79565b9050919050565b6000602082019050818103600083015261506081614d9c565b9050919050565b6000602082019050818103600083015261508081614dbf565b9050919050565b600060208201905081810360008301526150a081614de2565b9050919050565b600060208201905081810360008301526150c081614e05565b9050919050565b600060208201905081810360008301526150e081614e28565b9050919050565b6000602082019050818103600083015261510081614e4b565b9050919050565b6000602082019050818103600083015261512081614e6e565b9050919050565b600060208201905061513c6000830184614e91565b92915050565b60006040820190506151576000830185614e91565b81810360208301526151698184614c4c565b90509392505050565b600060a0820190506151876000830188614e91565b6151946020830187614cc8565b81810360408301526151a68186614c4c565b90506151b56060830185614c3d565b6151c26080830184614e91565b9695505050505050565b60006020820190506151e16000830184614ea0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615247826153a1565b9150615252836153a1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615287576152866154ae565b5b828201905092915050565b600061529d826153a1565b91506152a8836153a1565b9250826152b8576152b76154dd565b5b828204905092915050565b60006152ce826153a1565b91506152d9836153a1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615312576153116154ae565b5b828202905092915050565b6000615328826153a1565b9150615333836153a1565b925082821015615346576153456154ae565b5b828203905092915050565b600061535c82615381565b9050919050565b600061536e82615381565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006153c3826153dc565b9050919050565b60006153d5826153a1565b9050919050565b60006153e7826153ee565b9050919050565b60006153f982615381565b9050919050565b60005b8381101561541e578082015181840152602081019050615403565b8381111561542d576000848401525b50505050565b6000600282049050600182168061544b57607f821691505b6020821081141561545f5761545e61550c565b5b50919050565b6000615470826153a1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156154a3576154a26154ae565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f46726f6d2063616e6e6f7420626520626f742100000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61589981615351565b81146158a457600080fd5b50565b6158b081615375565b81146158bb57600080fd5b50565b6158c7816153a1565b81146158d257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122062faaaaae6088552961f4e2bd0690149fc1102fd303405a9092611ae1462f77064736f6c63430008070033
Deployed Bytecode
0x6080604052600436106104145760003560e01c80637d73900f1161021e578063c469b6dd11610123578063dc44b6a0116100ab578063f0cd1dac1161007a578063f0cd1dac14610fe6578063f1d5f51714611011578063f2fde38b1461103a578063f84ba65d14611063578063f872858a1461108c5761041b565b8063dc44b6a014610f2c578063dd62ed3e14610f57578063ec28438a14610f94578063ef422a1814610fbd5761041b565b8063c8607952116100f2578063c860795214610e43578063c867d60b14610e6e578063cab0347114610eab578063d158272d14610ed6578063da00097d14610f015761041b565b8063c469b6dd14610d99578063c49b9a8014610dc4578063c5d2418914610ded578063c816841b14610e185761041b565b8063a073d37f116101a6578063a5d69d1f11610175578063a5d69d1f14610ca2578063a83f53a714610ccb578063a8e1515014610cf6578063a9059cbb14610d33578063c2d4640e14610d705761041b565b8063a073d37f14610be4578063a08e671f14610c0f578063a457c2d714610c3a578063a52dc2e714610c775761041b565b806388790a68116101ed57806388790a6814610b235780638da5cb5b14610b4e5780638f70ccf714610b79578063914eb66a14610ba257806395d89b4114610bb95761041b565b80637d73900f14610a7b578063807c2d9c14610aa457806382eefb4314610acf578063844d591c14610afa5761041b565b80632e97766d11610324578063512f9170116102ac5780635881f3ef1161027b5780635881f3ef1461098057806361a23c69146109bd5780636ad1fe02146109e857806370a0823114610a135780637d1db4a514610a505761041b565b8063512f9170146108c25780635342acb4146108ed578063557ed1ba1461092a57806357a5802f146109555761041b565b80633bbac579116102f35780633bbac579146107cb5780633ecad271146108085780634a74bb02146108455780634cb80fd51461087057806350b20cac146108995761041b565b80632e97766d1461070f578063313ce5671461073a57806339509351146107655780633b97084a146107a25761041b565b806318160ddd116103a75780632563ae83116103765780632563ae831461063e57806327c8f835146106675780632af38605146106925780632b112e49146106bb5780632c4b2334146106e65761041b565b806318160ddd146105845780631870517a146105af5780632198cf6c146105d857806323b872dd146106015761041b565b80630d5e5c87116103e35780630d5e5c87146104da5780631245e3471461050357806314353ed11461052e5780631694505e146105595761041b565b806303c0f5d4146104205780630504bc7a1461044957806306fdde0314610472578063095ea7b31461049d5761041b565b3661041b57005b600080fd5b34801561042c57600080fd5b5061044760048036038101906104429190614a27565b6110b7565b005b34801561045557600080fd5b50610470600480360381019061046b919061493a565b6111a7565b005b34801561047e57600080fd5b50610487611280565b6040516104949190614fa5565b60405180910390f35b3480156104a957600080fd5b506104c460048036038101906104bf9190614a67565b611312565b6040516104d19190614f6f565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc9190614b61565b611330565b005b34801561050f57600080fd5b50610518611410565b6040516105259190614eca565b60405180910390f35b34801561053a57600080fd5b50610543611436565b6040516105509190615127565b60405180910390f35b34801561056557600080fd5b5061056e611440565b60405161057b9190614f8a565b60405180910390f35b34801561059057600080fd5b50610599611466565b6040516105a69190615127565b60405180910390f35b3480156105bb57600080fd5b506105d660048036038101906105d19190614b61565b611470565b005b3480156105e457600080fd5b506105ff60048036038101906105fa9190614a27565b611550565b005b34801561060d57600080fd5b50610628600480360381019061062391906149d4565b611640565b6040516106359190614f6f565b60405180910390f35b34801561064a57600080fd5b5061066560048036038101906106609190614b07565b61171a565b005b34801561067357600080fd5b5061067c6117cc565b6040516106899190614eaf565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b49190614a27565b6117f0565b005b3480156106c757600080fd5b506106d06118e0565b6040516106dd9190615127565b60405180910390f35b3480156106f257600080fd5b5061070d6004803603810190610708919061493a565b611924565b005b34801561071b57600080fd5b506107246119fd565b6040516107319190615127565b60405180910390f35b34801561074657600080fd5b5061074f611a05565b60405161075c91906151cc565b60405180910390f35b34801561077157600080fd5b5061078c60048036038101906107879190614a67565b611a1c565b6040516107999190614f6f565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c49190614b34565b611acf565b005b3480156107d757600080fd5b506107f260048036038101906107ed919061493a565b611b6e565b6040516107ff9190614f6f565b60405180910390f35b34801561081457600080fd5b5061082f600480360381019061082a919061493a565b611b8e565b60405161083c9190614f6f565b60405180910390f35b34801561085157600080fd5b5061085a611bae565b6040516108679190614f6f565b60405180910390f35b34801561087c57600080fd5b506108976004803603810190610892919061493a565b611bc1565b005b3480156108a557600080fd5b506108c060048036038101906108bb9190614aa7565b611c9a565b005b3480156108ce57600080fd5b506108d7611de2565b6040516108e49190614eaf565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f919061493a565b611e08565b6040516109219190614f6f565b60405180910390f35b34801561093657600080fd5b5061093f611e28565b60405161094c9190615127565b60405180910390f35b34801561096157600080fd5b5061096a611e30565b6040516109779190615127565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a2919061493a565b611e36565b6040516109b49190614eaf565b60405180910390f35b3480156109c957600080fd5b506109d2612394565b6040516109df9190615127565b60405180910390f35b3480156109f457600080fd5b506109fd61239a565b604051610a0a9190615127565b60405180910390f35b348015610a1f57600080fd5b50610a3a6004803603810190610a35919061493a565b6123a0565b604051610a479190615127565b60405180910390f35b348015610a5c57600080fd5b50610a656123e9565b604051610a729190615127565b60405180910390f35b348015610a8757600080fd5b50610aa26004803603810190610a9d9190614b34565b6123ef565b005b348015610ab057600080fd5b50610ab961248e565b604051610ac69190615127565b60405180910390f35b348015610adb57600080fd5b50610ae4612494565b604051610af19190615127565b60405180910390f35b348015610b0657600080fd5b50610b216004803603810190610b1c9190614a27565b61249a565b005b348015610b2f57600080fd5b50610b3861258a565b604051610b459190615127565b60405180910390f35b348015610b5a57600080fd5b50610b63612590565b604051610b709190614eaf565b60405180910390f35b348015610b8557600080fd5b50610ba06004803603810190610b9b9190614b07565b6125b9565b005b348015610bae57600080fd5b50610bb761266b565b005b348015610bc557600080fd5b50610bce6127c0565b604051610bdb9190614fa5565b60405180910390f35b348015610bf057600080fd5b50610bf9612852565b604051610c069190615127565b60405180910390f35b348015610c1b57600080fd5b50610c2461285c565b604051610c319190615127565b60405180910390f35b348015610c4657600080fd5b50610c616004803603810190610c5c9190614a67565b612862565b604051610c6e9190614f6f565b60405180910390f35b348015610c8357600080fd5b50610c8c61292f565b604051610c999190615127565b60405180910390f35b348015610cae57600080fd5b50610cc96004803603810190610cc49190614b07565b612935565b005b348015610cd757600080fd5b50610ce06129e7565b604051610ced9190615127565b60405180910390f35b348015610d0257600080fd5b50610d1d6004803603810190610d18919061493a565b6129ed565b604051610d2a9190614f6f565b60405180910390f35b348015610d3f57600080fd5b50610d5a6004803603810190610d559190614a67565b612a0d565b604051610d679190614f6f565b60405180910390f35b348015610d7c57600080fd5b50610d976004803603810190610d929190614b61565b612a2c565b005b348015610da557600080fd5b50610dae612b0c565b604051610dbb9190615127565b60405180910390f35b348015610dd057600080fd5b50610deb6004803603810190610de69190614b07565b612b12565b005b348015610df957600080fd5b50610e02612bfb565b604051610e0f9190615127565b60405180910390f35b348015610e2457600080fd5b50610e2d612c01565b604051610e3a9190614eaf565b60405180910390f35b348015610e4f57600080fd5b50610e58612c27565b604051610e659190615127565b60405180910390f35b348015610e7a57600080fd5b50610e956004803603810190610e90919061493a565b612c2d565b604051610ea29190614f6f565b60405180910390f35b348015610eb757600080fd5b50610ec0612c4d565b604051610ecd9190615127565b60405180910390f35b348015610ee257600080fd5b50610eeb612c53565b604051610ef89190614eca565b60405180910390f35b348015610f0d57600080fd5b50610f16612c79565b604051610f239190614f6f565b60405180910390f35b348015610f3857600080fd5b50610f41612c8c565b604051610f4e9190615127565b60405180910390f35b348015610f6357600080fd5b50610f7e6004803603810190610f799190614994565b612c92565b604051610f8b9190615127565b60405180910390f35b348015610fa057600080fd5b50610fbb6004803603810190610fb69190614b34565b612d19565b005b348015610fc957600080fd5b50610fe46004803603810190610fdf9190614a27565b612db8565b005b348015610ff257600080fd5b50610ffb612ea8565b6040516110089190615127565b60405180910390f35b34801561101d57600080fd5b5061103860048036038101906110339190614b34565b612eae565b005b34801561104657600080fd5b50611061600480360381019061105c919061493a565b612f4d565b005b34801561106f57600080fd5b5061108a60048036038101906110859190614a27565b61310f565b005b34801561109857600080fd5b506110a16131ff565b6040516110ae9190614f6f565b60405180910390f35b6110bf613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611143906150c7565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6111af613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611233906150c7565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606003805461128f90615433565b80601f01602080910402602001604051908101604052809291908181526020018280546112bb90615433565b80156113085780601f106112dd57610100808354040283529160200191611308565b820191906000526020600020905b8154815290600101906020018083116112eb57829003601f168201915b5050505050905090565b600061132661131f613270565b8484613278565b6001905092915050565b611338613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc906150c7565b60405180910390fd5b8260158190555081601681905550806017819055506114056017546113f760165460155461321290919063ffffffff16565b61321290919063ffffffff16565b601c81905550505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601e54905090565b611478613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc906150c7565b60405180910390fd5b82601281905550816013819055508060148190555061154560145461153760135460125461321290919063ffffffff16565b61321290919063ffffffff16565b601b81905550505050565b611558613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc906150c7565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061164d848484613443565b5061170f8461165a613270565b61170a856040518060600160405280602881526020016158d660289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006116c0613270565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc69092919063ffffffff16565b613278565b600190509392505050565b611722613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a6906150c7565b60405180910390fd5b80602360176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6117f8613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c906150c7565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061191f61190e7f000000000000000000000000000000000000000000000000000000000000dead6123a0565b601e54613c2a90919063ffffffff16565b905090565b61192c613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b0906150c7565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600043905090565b6000600560009054906101000a900460ff16905090565b6000611ac5611a29613270565b84611ac08560096000611a3a613270565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321290919063ffffffff16565b613278565b6001905092915050565b611ad7613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5b906150c7565b60405180910390fd5b8060218190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b602360159054906101000a900460ff1681565b611bc9613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d906150c7565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ca2613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d26906150c7565b60405180910390fd5b60c98383905010611d3f57600080fd5b60005b83839050811015611ddc578160116000868685818110611d6557611d6461553b565b5b9050602002016020810190611d7a919061493a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611dd590615465565b9050611d42565b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60185481565b6000611e40613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec4906150c7565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611f1857600080fd5b505afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190614967565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611fb257600080fd5b505afa158015611fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fea9190614967565b6040518363ffffffff1660e01b8152600401612007929190614ee5565b60206040518083038186803b15801561201f57600080fd5b505afa158015612033573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120579190614967565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612218578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156120d457600080fd5b505afa1580156120e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210c9190614967565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561216e57600080fd5b505afa158015612182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a69190614967565b6040518363ffffffff1660e01b81526004016121c3929190614ee5565b602060405180830381600087803b1580156121dd57600080fd5b505af11580156121f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122159190614967565b91505b81602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60195481565b600c5481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601f5481565b6123f7613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b906150c7565b60405180910390fd5b80600f8190555050565b60205481565b601c5481565b6124a2613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461252f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612526906150c7565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6125c1613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612645906150c7565b60405180910390fd5b80600760146101000a81548160ff02191690831515021790555050565b612673613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f7906150c7565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6060600480546127cf90615433565b80601f01602080910402602001604051908101604052809291908181526020018280546127fb90615433565b80156128485780601f1061281d57610100808354040283529160200191612848565b820191906000526020600020905b81548152906001019060200180831161282b57829003601f168201915b5050505050905090565b6000602154905090565b601d5481565b600061292561286f613270565b84612920856040518060600160405280602581526020016158fe6025913960096000612899613270565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc69092919063ffffffff16565b613278565b6001905092915050565b600f5481565b61293d613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c1906150c7565b60405180910390fd5b80602360166101000a81548160ff02191690831515021790555050565b601a5481565b60116020528060005260406000206000915054906101000a900460ff1681565b6000612a21612a1a613270565b8484613443565b506001905092915050565b612a34613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab8906150c7565b60405180910390fd5b826018819055508160198190555080601a81905550612b01601a54612af360195460185461321290919063ffffffff16565b61321290919063ffffffff16565b601d81905550505050565b60145481565b612b1a613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9e906150c7565b60405180910390fd5b80602360156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612bf09190614f6f565b60405180910390a150565b60135481565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60175481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602360169054906101000a900460ff1681565b60125481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612d21613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da5906150c7565b60405180910390fd5b80601f8190555050565b612dc0613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e44906150c7565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b612eb6613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3a906150c7565b60405180910390fd5b8060208190555050565b612f55613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd9906150c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304990615027565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613117613270565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319b906150c7565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602360179054906101000a900460ff1681565b6000808284613221919061523c565b905083811015613266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325d90615067565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132df90615107565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334f90615047565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516134369190615127565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156134b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ab906150e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351b90614fc7565b60405180910390fd5b600760149054906101000a900460ff166135ae57613540612590565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a490615007565b60405180910390fd5b5b602360149054906101000a900460ff16156135d5576135ce848484613c74565b9050613bbf565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561367f5750602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561368c5743600c819055505b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561375257600f54600c546136f2919061523c565b4311613751576001600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b61375a612590565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156137c85750613798612590565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156137d8576137d78483613e47565b5b60006137e3306123a0565b9050600060215482101590508080156138095750602360149054906101000a900460ff16155b801561385f5750601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138775750602360159054906101000a900460ff165b156138a157602360169054906101000a900460ff16156138975760215491505b6138a082613f71565b5b61392a846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc69092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a105750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a2457613a1f878787614162565b613a26565b845b9050602360179054906101000a900460ff168015613a8e5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613abd57602054613ab182613aa3896123a0565b61321290919063ffffffff16565b1115613abc57600080fd5b5b613b0f81600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321290919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613baf9190615127565b60405180910390a3600193505050505b9392505050565b6000838311158290613c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c059190614fa5565b60405180910390fd5b5060008385613c1d919061531d565b9050809150509392505050565b6000613c6c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613bc6565b905092915050565b6000613cff826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc69092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d9482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321290919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e349190615127565b60405180910390a3600190509392505050565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ecb90615087565b60405180910390fd5b601f5481111580613f2e5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f6490614fe7565b60405180910390fd5b5050565b6001602360146101000a81548160ff0219169083151502179055506000613fca6002613fbc601d54613fae6018548761438990919063ffffffff16565b61440490919063ffffffff16565b61440490919063ffffffff16565b90506000613fe18284613c2a90919063ffffffff16565b9050613fec8161444e565b6000479050600061401d61400c600260185461440490919063ffffffff16565b601d54613c2a90919063ffffffff16565b9050600061405b600261404d8461403f6018548861438990919063ffffffff16565b61440490919063ffffffff16565b61440490919063ffffffff16565b9050600061408683614078601a548761438990919063ffffffff16565b61440490919063ffffffff16565b905060006140af826140a18588613c2a90919063ffffffff16565b613c2a90919063ffffffff16565b905060008111156140e7576140e6600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826146d9565b5b600082111561411d5761411c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836146d9565b5b60008311801561412d5750600087115b1561413d5761413c8784614724565b5b505050505050506000602360146101000a81548160ff02191690831515021790555050565b60008060009050601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141ea576141e360646141d5601b548661438990919063ffffffff16565b61440490919063ffffffff16565b9050614268565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614267576142646064614256601c548661438990919063ffffffff16565b61440490919063ffffffff16565b90505b5b600081111561436c576142c381600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321290919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143639190615127565b60405180910390a35b61437f8184613c2a90919063ffffffff16565b9150509392505050565b60008083141561439c57600090506143fe565b600082846143aa91906152c3565b90508284826143b99190615292565b146143f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143f0906150a7565b60405180910390fd5b809150505b92915050565b600061444683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614818565b905092915050565b6000600267ffffffffffffffff81111561446b5761446a61556a565b5b6040519080825280602002602001820160405280156144995781602001602082028036833780820191505090505b50905030816000815181106144b1576144b061553b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561455357600080fd5b505afa158015614567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061458b9190614967565b8160018151811061459f5761459e61553b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061460630602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613278565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161466a959493929190615172565b600060405180830381600087803b15801561468457600080fd5b505af1158015614698573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146cd929190615142565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561471f573d6000803e3d6000fd5b505050565b61475130602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613278565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061479d612590565b426040518863ffffffff1660e01b81526004016147bf96959493929190614f0e565b6060604051808303818588803b1580156147d857600080fd5b505af11580156147ec573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906148119190614bb4565b5050505050565b6000808311829061485f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016148569190614fa5565b60405180910390fd5b506000838561486e9190615292565b9050809150509392505050565b60008135905061488a81615890565b92915050565b60008151905061489f81615890565b92915050565b60008083601f8401126148bb576148ba61559e565b5b8235905067ffffffffffffffff8111156148d8576148d7615599565b5b6020830191508360208202830111156148f4576148f36155a3565b5b9250929050565b60008135905061490a816158a7565b92915050565b60008135905061491f816158be565b92915050565b600081519050614934816158be565b92915050565b6000602082840312156149505761494f6155ad565b5b600061495e8482850161487b565b91505092915050565b60006020828403121561497d5761497c6155ad565b5b600061498b84828501614890565b91505092915050565b600080604083850312156149ab576149aa6155ad565b5b60006149b98582860161487b565b92505060206149ca8582860161487b565b9150509250929050565b6000806000606084860312156149ed576149ec6155ad565b5b60006149fb8682870161487b565b9350506020614a0c8682870161487b565b9250506040614a1d86828701614910565b9150509250925092565b60008060408385031215614a3e57614a3d6155ad565b5b6000614a4c8582860161487b565b9250506020614a5d858286016148fb565b9150509250929050565b60008060408385031215614a7e57614a7d6155ad565b5b6000614a8c8582860161487b565b9250506020614a9d85828601614910565b9150509250929050565b600080600060408486031215614ac057614abf6155ad565b5b600084013567ffffffffffffffff811115614ade57614add6155a8565b5b614aea868287016148a5565b93509350506020614afd868287016148fb565b9150509250925092565b600060208284031215614b1d57614b1c6155ad565b5b6000614b2b848285016148fb565b91505092915050565b600060208284031215614b4a57614b496155ad565b5b6000614b5884828501614910565b91505092915050565b600080600060608486031215614b7a57614b796155ad565b5b6000614b8886828701614910565b9350506020614b9986828701614910565b9250506040614baa86828701614910565b9150509250925092565b600080600060608486031215614bcd57614bcc6155ad565b5b6000614bdb86828701614925565b9350506020614bec86828701614925565b9250506040614bfd86828701614925565b9150509250925092565b6000614c138383614c2e565b60208301905092915050565b614c2881615363565b82525050565b614c3781615351565b82525050565b614c4681615351565b82525050565b6000614c57826151f7565b614c61818561521a565b9350614c6c836151e7565b8060005b83811015614c9d578151614c848882614c07565b9750614c8f8361520d565b925050600181019050614c70565b5085935050505092915050565b614cb381615375565b82525050565b614cc2816153b8565b82525050565b614cd1816153ca565b82525050565b6000614ce282615202565b614cec818561522b565b9350614cfc818560208601615400565b614d05816155b2565b840191505092915050565b6000614d1d60238361522b565b9150614d28826155c3565b604082019050919050565b6000614d4060118361522b565b9150614d4b82615612565b602082019050919050565b6000614d63603f8361522b565b9150614d6e8261563b565b604082019050919050565b6000614d8660268361522b565b9150614d918261568a565b604082019050919050565b6000614da960228361522b565b9150614db4826156d9565b604082019050919050565b6000614dcc601b8361522b565b9150614dd782615728565b602082019050919050565b6000614def60138361522b565b9150614dfa82615751565b602082019050919050565b6000614e1260218361522b565b9150614e1d8261577a565b604082019050919050565b6000614e3560208361522b565b9150614e40826157c9565b602082019050919050565b6000614e5860258361522b565b9150614e63826157f2565b604082019050919050565b6000614e7b60248361522b565b9150614e8682615841565b604082019050919050565b614e9a816153a1565b82525050565b614ea9816153ab565b82525050565b6000602082019050614ec46000830184614c3d565b92915050565b6000602082019050614edf6000830184614c1f565b92915050565b6000604082019050614efa6000830185614c3d565b614f076020830184614c3d565b9392505050565b600060c082019050614f236000830189614c3d565b614f306020830188614e91565b614f3d6040830187614cc8565b614f4a6060830186614cc8565b614f576080830185614c3d565b614f6460a0830184614e91565b979650505050505050565b6000602082019050614f846000830184614caa565b92915050565b6000602082019050614f9f6000830184614cb9565b92915050565b60006020820190508181036000830152614fbf8184614cd7565b905092915050565b60006020820190508181036000830152614fe081614d10565b9050919050565b6000602082019050818103600083015261500081614d33565b9050919050565b6000602082019050818103600083015261502081614d56565b9050919050565b6000602082019050818103600083015261504081614d79565b9050919050565b6000602082019050818103600083015261506081614d9c565b9050919050565b6000602082019050818103600083015261508081614dbf565b9050919050565b600060208201905081810360008301526150a081614de2565b9050919050565b600060208201905081810360008301526150c081614e05565b9050919050565b600060208201905081810360008301526150e081614e28565b9050919050565b6000602082019050818103600083015261510081614e4b565b9050919050565b6000602082019050818103600083015261512081614e6e565b9050919050565b600060208201905061513c6000830184614e91565b92915050565b60006040820190506151576000830185614e91565b81810360208301526151698184614c4c565b90509392505050565b600060a0820190506151876000830188614e91565b6151946020830187614cc8565b81810360408301526151a68186614c4c565b90506151b56060830185614c3d565b6151c26080830184614e91565b9695505050505050565b60006020820190506151e16000830184614ea0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615247826153a1565b9150615252836153a1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615287576152866154ae565b5b828201905092915050565b600061529d826153a1565b91506152a8836153a1565b9250826152b8576152b76154dd565b5b828204905092915050565b60006152ce826153a1565b91506152d9836153a1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615312576153116154ae565b5b828202905092915050565b6000615328826153a1565b9150615333836153a1565b925082821015615346576153456154ae565b5b828203905092915050565b600061535c82615381565b9050919050565b600061536e82615381565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006153c3826153dc565b9050919050565b60006153d5826153a1565b9050919050565b60006153e7826153ee565b9050919050565b60006153f982615381565b9050919050565b60005b8381101561541e578082015181840152602081019050615403565b8381111561542d576000848401525b50505050565b6000600282049050600182168061544b57607f821691505b6020821081141561545f5761545e61550c565b5b50919050565b6000615470826153a1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156154a3576154a26154ae565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f46726f6d2063616e6e6f7420626520626f742100000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61589981615351565b81146158a457600080fd5b50565b6158b081615375565b81146158bb57600080fd5b50565b6158c7816153a1565b81146158d257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122062faaaaae6088552961f4e2bd0690149fc1102fd303405a9092611ae1462f77064736f6c63430008070033
Deployed Bytecode Sourcemap
14439:16772:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23744:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23537:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18463:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19757:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21031:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14781:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23863:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16389:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18740:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20690:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21993:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25268:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21872:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14882:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23124:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22978:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22525:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23951:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18649:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19126:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22246:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15367:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15448:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16504:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22378:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23267:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14970:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15165:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6508:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15812:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24184:807;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15853:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15283:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18848:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16180:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23645:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16247:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15977:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20271:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15686:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5792:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30243:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6017:227;;;;;;;;;;;;;:::i;:::-;;18554:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19629:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16022:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19352:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15414:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22841:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15894:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15500:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25093:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21383:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15643:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22662:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15601:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16437:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15729:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15222:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15772:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14675:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16551:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15559:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18975:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21753:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20547:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15933:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22136:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6252:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20408:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16603:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23744:109;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23839:6:::1;23823:5;:13;23829:6;23823:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;23744:109:::0;;:::o;23537:100::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23620:9:::1;23609:8;;:20;;;;;;;;;;;;;;;;;;23537:100:::0;:::o;18463:83::-;18500:13;18533:5;18526:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18463:83;:::o;19757:161::-;19832:4;19849:39;19858:12;:10;:12::i;:::-;19872:7;19881:6;19849:8;:39::i;:::-;19906:4;19899:11;;19757:161;;;;:::o;21031:340::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21174:15:::1;21154:17;:35;;;;21220:15;21200:17;:35;;;;21261:10;21246:12;:25;;;;21305:58;21350:12;;21305:40;21327:17;;21305;;:21;;:40;;;;:::i;:::-;:44;;:58;;;;:::i;:::-;21284:18;:79;;;;21031:340:::0;;;:::o;14781:94::-;;;;;;;;;;;;;:::o;23863:80::-;23904:7;23931:4;;23924:11;;23863:80;:::o;16389:41::-;;;;;;;;;;;;;:::o;18740:100::-;18793:7;18820:12;;18813:19;;18740:100;:::o;20690:333::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20832:15:::1;20813:16;:34;;;;20877:15;20858:16;:34;;;;20917:10;20903:11;:24;;;;20960:55;21003:11;;20960:38;20981:16;;20960;;:20;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;20940:17;:75;;;;20690:333:::0;;;:::o;21993:135::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22114:6:::1;22084:19;:27;22104:6;22084:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21993:135:::0;;:::o;25268:313::-;25366:4;25383:36;25393:6;25401:9;25412:6;25383:9;:36::i;:::-;;25430:121;25439:6;25447:12;:10;:12::i;:::-;25461:89;25499:6;25461:89;;;;;;;;;;;;;;;;;:11;:19;25473:6;25461:19;;;;;;;;;;;;;;;:33;25481:12;:10;:12::i;:::-;25461:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;25430:8;:121::i;:::-;25569:4;25562:11;;25268:313;;;;;:::o;21872:113::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21969:8:::1;21950:16;;:27;;;;;;;;;;;;;;;;;;21872:113:::0;:::o;14882:81::-;;;:::o;23124:135::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23243:8:::1;23214:17;:26;23232:7;23214:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;23124:135:::0;;:::o;22978:128::-;23031:7;23058:40;23075:22;23085:11;23075:9;:22::i;:::-;23058:12;;:16;;:40;;;;:::i;:::-;23051:47;;22978:128;:::o;22525:129::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22635:10:::1;22607:17;;:39;;;;;;;;;;;;;;;;;;22525:129:::0;:::o;23951:87::-;23991:7;24018:12;24011:19;;23951:87;:::o;18649:83::-;18690:5;18715:9;;;;;;;;;;;18708:16;;18649:83;:::o;19126:218::-;19214:4;19231:83;19240:12;:10;:12::i;:::-;19254:7;19263:50;19302:10;19263:11;:25;19275:12;:10;:12::i;:::-;19263:25;;;;;;;;;;;;;;;:34;19289:7;19263:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19231:8;:83::i;:::-;19332:4;19325:11;;19126:218;;;;:::o;22246:124::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22354:8:::1;22328:23;:34;;;;22246:124:::0;:::o;15367:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;15448:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;16504:40::-;;;;;;;;;;;;;:::o;22378:139::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22498:10:::1;22465:22;;:44;;;;;;;;;;;;;;;;;;22378:139:::0;:::o;23267:260::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23395:3:::1;23376:9;;:16;;:22;23368:31;;;::::0;::::1;;23415:9;23410:110;23430:9;;:16;;23426:1;:20;23410:110;;;23502:6;23468:17;:31;23486:9;;23496:1;23486:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;23468:31;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;23448:3;;;;:::i;:::-;;;23410:110;;;;23267:260:::0;;;:::o;14970:23::-;;;;;;;;;;;;;:::o;15165:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6508:90::-;6548:7;6575:15;6568:22;;6508:90;:::o;15812:34::-;;;;:::o;24184:807::-;24264:22;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24301:35:::1;24358:16;24301:74;;24424:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24406:53;;;24468:4;24475:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24406:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24389:110;;24541:1;24515:28;;:14;:28;;;24512:225;;;24629:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24611:74;;;24694:4;24701:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24611:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24594:131;;24512:225;24763:14;24749:11;;:28;;;;;;;;;;;;;;;;;;24829:16;24811:15;;:34;;;;;;;;;;;;;;;;;;24927:4;24883:19;:41;24911:11;;;;;;;;;;;24883:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;24979:4;24942:12;:34;24963:11;;;;;;;;;;;24942:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;24288:703;24184:807:::0;;;:::o;15853:34::-;;;;:::o;15283:23::-;;;;:::o;18848:119::-;18914:7;18941:9;:18;18951:7;18941:18;;;;;;;;;;;;;;;;18934:25;;18848:119;;;:::o;16180:59::-;;;;:::o;23645:91::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23721:7:::1;23712:6;:16;;;;23645:91:::0;:::o;16247:59::-;;;;:::o;15977:38::-;;;;:::o;20271:129::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20384:8:::1;20360:12;:21;20373:7;20360:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20271:129:::0;;:::o;15686:36::-;;;;:::o;5792:79::-;5830:7;5857:6;;;;;;;;;;;5850:13;;5792:79;:::o;30243:101::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30324:12:::1;30310:11;;:26;;;;;;;;;;;;;;;;;;30243:101:::0;:::o;6017:227::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6121:42:::1;6084:81;;6105:6;::::0;::::1;;;;;;;;6084:81;;;;;;;;;;;;6193:42;6176:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;6017:227::o:0;18554:87::-;18593:13;18626:7;18619:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18554:87;:::o;19629:120::-;19691:7;19718:23;;19711:30;;19629:120;:::o;16022:44::-;;;;:::o;19352:269::-;19445:4;19462:129;19471:12;:10;:12::i;:::-;19485:7;19494:96;19533:15;19494:96;;;;;;;;;;;;;;;;;:11;:25;19506:12;:10;:12::i;:::-;19494:25;;;;;;;;;;;;;;;:34;19520:7;19494:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19462:8;:129::i;:::-;19609:4;19602:11;;19352:269;;;;:::o;15414:25::-;;;;:::o;22841:125::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22950:8:::1;22922:25;;:36;;;;;;;;;;;;;;;;;;22841:125:::0;:::o;15894:30::-;;;;:::o;15500:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;25093:167::-;25171:4;25188:42;25198:12;:10;:12::i;:::-;25212:9;25223:6;25188:9;:42::i;:::-;;25248:4;25241:11;;25093:167;;;;:::o;21383:358::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21542:17:::1;21524:15;:35;;;;21588:17;21570:15;:35;;;;21629:12;21616:10;:25;;;;21681:52;21722:10;;21681:36;21701:15;;21681;;:19;;:36;;;;:::i;:::-;:40;;:52;;;;:::i;:::-;21654:24;:79;;;;21383:358:::0;;;:::o;15643:30::-;;;;:::o;22662:171::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22763:8:::1;22739:21;;:32;;;;;;;;;;;;;;;;;;22787:38;22816:8;22787:38;;;;;;:::i;:::-;;;;;;;;22662:171:::0;:::o;15601:35::-;;;;:::o;16437:26::-;;;;;;;;;;;;;:::o;15729:36::-;;;;:::o;15222:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;15772:31::-;;;;:::o;14675:99::-;;;;;;;;;;;;;:::o;16551:45::-;;;;;;;;;;;;;:::o;15559:35::-;;;;:::o;18975:143::-;19056:7;19083:11;:18;19095:5;19083:18;;;;;;;;;;;;;;;:27;19102:7;19083:27;;;;;;;;;;;;;;;;19076:34;;18975:143;;;;:::o;21753:111::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21845:11:::1;21830:12;:26;;;;21753:111:::0;:::o;20547:135::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20666:8:::1;20637:17;:26;20655:7;20637:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;20547:135:::0;;:::o;15933:37::-;;;;:::o;22136:102::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22222:8:::1;22208:10;:22;;;;22136:102:::0;:::o;6252:244::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6361:1:::1;6341:22;;:8;:22;;;;6333:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6451:8;6422:38;;6443:6;::::0;::::1;;;;;;;;6422:38;;;;;;;;;;;;6480:8;6471:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6252:244:::0;:::o;20408:127::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20521:6:::1;20495:15;:23;20511:6;20495:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20408:127:::0;;:::o;16603:36::-;;;;;;;;;;;;;:::o;1170:181::-;1228:7;1248:9;1264:1;1260;:5;;;;:::i;:::-;1248:17;;1289:1;1284;:6;;1276:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1342:1;1335:8;;;1170:181;;;;:::o;102:115::-;155:15;198:10;183:26;;102:115;:::o;19926:337::-;20036:1;20019:19;;:5;:19;;;;20011:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20117:1;20098:21;;:7;:21;;;;20090:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20201:6;20171:11;:18;20183:5;20171:18;;;;;;;;;;;;;;;:27;20190:7;20171:27;;;;;;;;;;;;;;;:36;;;;20239:7;20223:32;;20232:5;20223:32;;;20248:6;20223:32;;;;;;:::i;:::-;;;;;;;;19926:337;;;:::o;25589:2046::-;25676:4;25721:1;25703:20;;:6;:20;;;;25695:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25805:1;25784:23;;:9;:23;;;;25776:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25892:11;;;;;;;;;;;25887:138;;25938:7;:5;:7::i;:::-;25928:17;;:6;:17;;;25920:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;25887:138;26040:16;;;;;;;;;;;26037:1591;;;26090:41;26105:6;26113:9;26124:6;26090:14;:41::i;:::-;26083:48;;;;26037:1591;26194:8;;;;;;;;;;;26184:18;;:6;:18;;;:46;;;;;26219:11;;;;;;;;;;;26206:24;;:9;:24;;;26184:46;26181:96;;;26253:12;26246:4;:19;;;;26181:96;26303:11;;;;;;;;;;;26293:21;;:6;:21;;;26289:149;;;26359:6;;26352:4;;:13;;;;:::i;:::-;26335:12;:31;26331:96;;26407:4;26388:5;:16;26394:9;26388:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;26331:96;26289:149;26464:7;:5;:7::i;:::-;26454:17;;:6;:17;;;;:41;;;;;26488:7;:5;:7::i;:::-;26475:20;;:9;:20;;;;26454:41;26450:75;;;26497:28;26511:6;26518;26497:13;:28::i;:::-;26450:75;26543:28;26574:24;26592:4;26574:9;:24::i;:::-;26543:55;;26613:28;26668:23;;26644:20;:47;;26613:78;;26724:23;:44;;;;;26752:16;;;;;;;;;;;26751:17;26724:44;:69;;;;;26773:12;:20;26786:6;26773:20;;;;;;;;;;;;;;;;;;;;;;;;;26772:21;26724:69;:94;;;;;26797:21;;;;;;;;;;;26724:94;26720:305;;;26856:25;;;;;;;;;;;26853:97;;;26927:23;;26904:46;;26853:97;26969:36;26984:20;26969:14;:36::i;:::-;26720:305;27061:53;27083:6;27061:53;;;;;;;;;;;;;;;;;:9;:17;27071:6;27061:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;27041:9;:17;27051:6;27041:17;;;;;;;;;;;;;;;:73;;;;27131:19;27154:17;:25;27172:6;27154:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;27183:17;:28;27201:9;27183:28;;;;;;;;;;;;;;;;;;;;;;;;;27154:57;27153:148;;27267:34;27275:6;27283:9;27294:6;27267:7;:34::i;:::-;27153:148;;;27258:6;27153:148;27131:170;;27321:16;;;;;;;;;;;:51;;;;;27342:19;:30;27362:9;27342:30;;;;;;;;;;;;;;;;;;;;;;;;;27341:31;27321:51;27318:133;;;27440:10;;27399:37;27424:11;27399:20;27409:9;27399;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;27391:60;;;;;;27318:133;27491:37;27516:11;27491:9;:20;27501:9;27491:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;27468:9;:20;27478:9;27468:20;;;;;;;;;;;;;;;:60;;;;27567:9;27550:40;;27559:6;27550:40;;;27578:11;27550:40;;;;;;:::i;:::-;;;;;;;;27612:4;27605:11;;;;;25589:2046;;;;;;:::o;1503:192::-;1589:7;1622:1;1617;:6;;1625:12;1609:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1649:9;1665:1;1661;:5;;;;:::i;:::-;1649:17;;1686:1;1679:8;;;1503:192;;;;;:::o;1359:136::-;1417:7;1444:43;1448:1;1451;1444:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1437:50;;1359:136;;;;:::o;27643:330::-;27736:4;27773:53;27795:6;27773:53;;;;;;;;;;;;;;;;;:9;:17;27783:6;27773:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;27753:9;:17;27763:6;27753:17;;;;;;;;;;;;;;;:73;;;;27860:32;27885:6;27860:9;:20;27870:9;27860:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;27837:9;:20;27847:9;27837:20;;;;;;;;;;;;;;;:55;;;;27925:9;27908:35;;27917:6;27908:35;;;27936:6;27908:35;;;;;;:::i;:::-;;;;;;;;27961:4;27954:11;;27643:330;;;;;:::o;30986:222::-;31073:5;:13;31079:6;31073:13;;;;;;;;;;;;;;;;;;;;;;;;;31072:14;31064:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;31139:12;;31129:6;:22;;:49;;;;31155:15;:23;31171:6;31155:23;;;;;;;;;;;;;;;;;;;;;;;;;31129:49;31121:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;30986:222;;:::o;27981:1048::-;17081:4;17062:16;;:23;;;;;;;;;;;;;;;;;;28063:19:::1;28085:65;28148:1;28085:58;28118:24;;28085:28;28097:15;;28085:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;28063:87;;28161:21;28185:24;28197:11;28185:7;:11;;:24;;;;:::i;:::-;28161:48;;28222:31;28239:13;28222:16;:31::i;:::-;28264:22;28289:21;28264:46;;28323:19;28345:52;28374:22;28394:1;28374:15;;:19;;:22;;;;:::i;:::-;28345:24;;:28;;:52;;;;:::i;:::-;28323:74;;28418:26;28447:59;28504:1;28447:52;28487:11;28447:35;28466:15;;28447:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;28418:88;;28517:21;28541:47;28576:11;28541:30;28560:10;;28541:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;28517:71;;28599:26;28628:57;28671:13;28628:38;28647:18;28628:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;28599:86;;28722:1;28701:18;:22;28698:104;;;28738:64;28759:22;;;;;;;;;;;28783:18;28738:20;:64::i;:::-;28698:104;28834:1;28818:13;:17;28815:89;;;28850:54;28871:17;;;;;;;;;;;28890:13;28850:20;:54::i;:::-;28815:89;28941:1;28920:18;:22;:41;;;;;28960:1;28946:11;:15;28920:41;28917:104;;;28976:45;28989:11;29002:18;28976:12;:45::i;:::-;28917:104;28042:987;;;;;;;17127:5:::0;17108:16;;:24;;;;;;;;;;;;;;;;;;27981:1048;:::o;30352:622::-;30438:7;30468:17;30488:1;30468:21;;30513:12;:20;30526:6;30513:20;;;;;;;;;;;;;;;;;;;;;;;;;30510:223;;;30562:38;30596:3;30562:29;30573:17;;30562:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;30550:50;;30510:223;;;30630:12;:23;30643:9;30630:23;;;;;;;;;;;;;;;;;;;;;;;;;30627:106;;;30682:39;30717:3;30682:30;30693:18;;30682:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;30670:51;;30627:106;30510:223;30768:1;30756:9;:13;30753:173;;;30813:39;30842:9;30813;:24;30831:4;30813:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;30786:9;:24;30804:4;30786:24;;;;;;;;;;;;;;;:66;;;;30897:4;30872:42;;30881:6;30872:42;;;30904:9;30872:42;;;;;;:::i;:::-;;;;;;;;30753:173;30945:21;30956:9;30945:6;:10;;:21;;;;:::i;:::-;30938:28;;;30352:622;;;;;:::o;1703:250::-;1761:7;1790:1;1785;:6;1781:47;;;1815:1;1808:8;;;;1781:47;1840:9;1856:1;1852;:5;;;;:::i;:::-;1840:17;;1885:1;1880;1876;:5;;;;:::i;:::-;:10;1868:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1944:1;1937:8;;;1703:250;;;;;:::o;1961:132::-;2019:7;2046:39;2050:1;2053;2046:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2039:46;;1961:132;;;;:::o;29041:666::-;29167:21;29205:1;29191:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29167:40;;29236:4;29218;29223:1;29218:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29262:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29252:4;29257:1;29252:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29297:62;29314:4;29329:15;;;;;;;;;;;29347:11;29297:8;:62::i;:::-;29398:15;;;;;;;;;;;:66;;;29479:11;29505:1;29549:4;29576;29612:15;29398:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29664:35;29681:11;29694:4;29664:35;;;;;;;:::i;:::-;;;;;;;;29096:611;29041:666;:::o;24046:126::-;24138:9;:18;;:26;24157:6;24138:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24046:126;;:::o;29715:513::-;29863:62;29880:4;29895:15;;;;;;;;;;;29913:11;29863:8;:62::i;:::-;29968:15;;;;;;;;;;;:31;;;30007:9;30040:4;30060:11;30086:1;30129;30172:7;:5;:7::i;:::-;30194:15;29968:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29715:513;;:::o;2101:278::-;2187:7;2219:1;2215;:5;2222:12;2207:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2246:9;2262:1;2258;:5;;;;:::i;:::-;2246:17;;2370:1;2363:8;;;2101:278;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;318:568::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:122;;459:79;;:::i;:::-;418:122;572:6;559:20;549:30;;602:18;594:6;591:30;588:117;;;624:79;;:::i;:::-;588:117;738:4;730:6;726:17;714:29;;792:3;784:4;776:6;772:17;762:8;758:32;755:41;752:128;;;799:79;;:::i;:::-;752:128;318:568;;;;;:::o;892:133::-;935:5;973:6;960:20;951:29;;989:30;1013:5;989:30;:::i;:::-;892:133;;;;:::o;1031:139::-;1077:5;1115:6;1102:20;1093:29;;1131:33;1158:5;1131:33;:::i;:::-;1031:139;;;;:::o;1176:143::-;1233:5;1264:6;1258:13;1249:22;;1280:33;1307:5;1280:33;:::i;:::-;1176:143;;;;:::o;1325:329::-;1384:6;1433:2;1421:9;1412:7;1408:23;1404:32;1401:119;;;1439:79;;:::i;:::-;1401:119;1559:1;1584:53;1629:7;1620:6;1609:9;1605:22;1584:53;:::i;:::-;1574:63;;1530:117;1325:329;;;;:::o;1660:351::-;1730:6;1779:2;1767:9;1758:7;1754:23;1750:32;1747:119;;;1785:79;;:::i;:::-;1747:119;1905:1;1930:64;1986:7;1977:6;1966:9;1962:22;1930:64;:::i;:::-;1920:74;;1876:128;1660:351;;;;:::o;2017:474::-;2085:6;2093;2142:2;2130:9;2121:7;2117:23;2113:32;2110:119;;;2148:79;;:::i;:::-;2110:119;2268:1;2293:53;2338:7;2329:6;2318:9;2314:22;2293:53;:::i;:::-;2283:63;;2239:117;2395:2;2421:53;2466:7;2457:6;2446:9;2442:22;2421:53;:::i;:::-;2411:63;;2366:118;2017:474;;;;;:::o;2497:619::-;2574:6;2582;2590;2639:2;2627:9;2618:7;2614:23;2610:32;2607:119;;;2645:79;;:::i;:::-;2607:119;2765:1;2790:53;2835:7;2826:6;2815:9;2811:22;2790:53;:::i;:::-;2780:63;;2736:117;2892:2;2918:53;2963:7;2954:6;2943:9;2939:22;2918:53;:::i;:::-;2908:63;;2863:118;3020:2;3046:53;3091:7;3082:6;3071:9;3067:22;3046:53;:::i;:::-;3036:63;;2991:118;2497:619;;;;;:::o;3122:468::-;3187:6;3195;3244:2;3232:9;3223:7;3219:23;3215:32;3212:119;;;3250:79;;:::i;:::-;3212:119;3370:1;3395:53;3440:7;3431:6;3420:9;3416:22;3395:53;:::i;:::-;3385:63;;3341:117;3497:2;3523:50;3565:7;3556:6;3545:9;3541:22;3523:50;:::i;:::-;3513:60;;3468:115;3122:468;;;;;:::o;3596:474::-;3664:6;3672;3721:2;3709:9;3700:7;3696:23;3692:32;3689:119;;;3727:79;;:::i;:::-;3689:119;3847:1;3872:53;3917:7;3908:6;3897:9;3893:22;3872:53;:::i;:::-;3862:63;;3818:117;3974:2;4000:53;4045:7;4036:6;4025:9;4021:22;4000:53;:::i;:::-;3990:63;;3945:118;3596:474;;;;;:::o;4076:698::-;4168:6;4176;4184;4233:2;4221:9;4212:7;4208:23;4204:32;4201:119;;;4239:79;;:::i;:::-;4201:119;4387:1;4376:9;4372:17;4359:31;4417:18;4409:6;4406:30;4403:117;;;4439:79;;:::i;:::-;4403:117;4552:80;4624:7;4615:6;4604:9;4600:22;4552:80;:::i;:::-;4534:98;;;;4330:312;4681:2;4707:50;4749:7;4740:6;4729:9;4725:22;4707:50;:::i;:::-;4697:60;;4652:115;4076:698;;;;;:::o;4780:323::-;4836:6;4885:2;4873:9;4864:7;4860:23;4856:32;4853:119;;;4891:79;;:::i;:::-;4853:119;5011:1;5036:50;5078:7;5069:6;5058:9;5054:22;5036:50;:::i;:::-;5026:60;;4982:114;4780:323;;;;:::o;5109:329::-;5168:6;5217:2;5205:9;5196:7;5192:23;5188:32;5185:119;;;5223:79;;:::i;:::-;5185:119;5343:1;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5314:117;5109:329;;;;:::o;5444:619::-;5521:6;5529;5537;5586:2;5574:9;5565:7;5561:23;5557:32;5554:119;;;5592:79;;:::i;:::-;5554:119;5712:1;5737:53;5782:7;5773:6;5762:9;5758:22;5737:53;:::i;:::-;5727:63;;5683:117;5839:2;5865:53;5910:7;5901:6;5890:9;5886:22;5865:53;:::i;:::-;5855:63;;5810:118;5967:2;5993:53;6038:7;6029:6;6018:9;6014:22;5993:53;:::i;:::-;5983:63;;5938:118;5444:619;;;;;:::o;6069:663::-;6157:6;6165;6173;6222:2;6210:9;6201:7;6197:23;6193:32;6190:119;;;6228:79;;:::i;:::-;6190:119;6348:1;6373:64;6429:7;6420:6;6409:9;6405:22;6373:64;:::i;:::-;6363:74;;6319:128;6486:2;6512:64;6568:7;6559:6;6548:9;6544:22;6512:64;:::i;:::-;6502:74;;6457:129;6625:2;6651:64;6707:7;6698:6;6687:9;6683:22;6651:64;:::i;:::-;6641:74;;6596:129;6069:663;;;;;:::o;6738:179::-;6807:10;6828:46;6870:3;6862:6;6828:46;:::i;:::-;6906:4;6901:3;6897:14;6883:28;;6738:179;;;;:::o;6923:142::-;7026:32;7052:5;7026:32;:::i;:::-;7021:3;7014:45;6923:142;;:::o;7071:108::-;7148:24;7166:5;7148:24;:::i;:::-;7143:3;7136:37;7071:108;;:::o;7185:118::-;7272:24;7290:5;7272:24;:::i;:::-;7267:3;7260:37;7185:118;;:::o;7339:732::-;7458:3;7487:54;7535:5;7487:54;:::i;:::-;7557:86;7636:6;7631:3;7557:86;:::i;:::-;7550:93;;7667:56;7717:5;7667:56;:::i;:::-;7746:7;7777:1;7762:284;7787:6;7784:1;7781:13;7762:284;;;7863:6;7857:13;7890:63;7949:3;7934:13;7890:63;:::i;:::-;7883:70;;7976:60;8029:6;7976:60;:::i;:::-;7966:70;;7822:224;7809:1;7806;7802:9;7797:14;;7762:284;;;7766:14;8062:3;8055:10;;7463:608;;;7339:732;;;;:::o;8077:109::-;8158:21;8173:5;8158:21;:::i;:::-;8153:3;8146:34;8077:109;;:::o;8192:185::-;8306:64;8364:5;8306:64;:::i;:::-;8301:3;8294:77;8192:185;;:::o;8383:147::-;8478:45;8517:5;8478:45;:::i;:::-;8473:3;8466:58;8383:147;;:::o;8536:364::-;8624:3;8652:39;8685:5;8652:39;:::i;:::-;8707:71;8771:6;8766:3;8707:71;:::i;:::-;8700:78;;8787:52;8832:6;8827:3;8820:4;8813:5;8809:16;8787:52;:::i;:::-;8864:29;8886:6;8864:29;:::i;:::-;8859:3;8855:39;8848:46;;8628:272;8536:364;;;;:::o;8906:366::-;9048:3;9069:67;9133:2;9128:3;9069:67;:::i;:::-;9062:74;;9145:93;9234:3;9145:93;:::i;:::-;9263:2;9258:3;9254:12;9247:19;;8906:366;;;:::o;9278:::-;9420:3;9441:67;9505:2;9500:3;9441:67;:::i;:::-;9434:74;;9517:93;9606:3;9517:93;:::i;:::-;9635:2;9630:3;9626:12;9619:19;;9278:366;;;:::o;9650:::-;9792:3;9813:67;9877:2;9872:3;9813:67;:::i;:::-;9806:74;;9889:93;9978:3;9889:93;:::i;:::-;10007:2;10002:3;9998:12;9991:19;;9650:366;;;:::o;10022:::-;10164:3;10185:67;10249:2;10244:3;10185:67;:::i;:::-;10178:74;;10261:93;10350:3;10261:93;:::i;:::-;10379:2;10374:3;10370:12;10363:19;;10022:366;;;:::o;10394:::-;10536:3;10557:67;10621:2;10616:3;10557:67;:::i;:::-;10550:74;;10633:93;10722:3;10633:93;:::i;:::-;10751:2;10746:3;10742:12;10735:19;;10394:366;;;:::o;10766:::-;10908:3;10929:67;10993:2;10988:3;10929:67;:::i;:::-;10922:74;;11005:93;11094:3;11005:93;:::i;:::-;11123:2;11118:3;11114:12;11107:19;;10766:366;;;:::o;11138:::-;11280:3;11301:67;11365:2;11360:3;11301:67;:::i;:::-;11294:74;;11377:93;11466:3;11377:93;:::i;:::-;11495:2;11490:3;11486:12;11479:19;;11138:366;;;:::o;11510:::-;11652:3;11673:67;11737:2;11732:3;11673:67;:::i;:::-;11666:74;;11749:93;11838:3;11749:93;:::i;:::-;11867:2;11862:3;11858:12;11851:19;;11510:366;;;:::o;11882:::-;12024:3;12045:67;12109:2;12104:3;12045:67;:::i;:::-;12038:74;;12121:93;12210:3;12121:93;:::i;:::-;12239:2;12234:3;12230:12;12223:19;;11882:366;;;:::o;12254:::-;12396:3;12417:67;12481:2;12476:3;12417:67;:::i;:::-;12410:74;;12493:93;12582:3;12493:93;:::i;:::-;12611:2;12606:3;12602:12;12595:19;;12254:366;;;:::o;12626:::-;12768:3;12789:67;12853:2;12848:3;12789:67;:::i;:::-;12782:74;;12865:93;12954:3;12865:93;:::i;:::-;12983:2;12978:3;12974:12;12967:19;;12626:366;;;:::o;12998:118::-;13085:24;13103:5;13085:24;:::i;:::-;13080:3;13073:37;12998:118;;:::o;13122:112::-;13205:22;13221:5;13205:22;:::i;:::-;13200:3;13193:35;13122:112;;:::o;13240:222::-;13333:4;13371:2;13360:9;13356:18;13348:26;;13384:71;13452:1;13441:9;13437:17;13428:6;13384:71;:::i;:::-;13240:222;;;;:::o;13468:254::-;13577:4;13615:2;13604:9;13600:18;13592:26;;13628:87;13712:1;13701:9;13697:17;13688:6;13628:87;:::i;:::-;13468:254;;;;:::o;13728:332::-;13849:4;13887:2;13876:9;13872:18;13864:26;;13900:71;13968:1;13957:9;13953:17;13944:6;13900:71;:::i;:::-;13981:72;14049:2;14038:9;14034:18;14025:6;13981:72;:::i;:::-;13728:332;;;;;:::o;14066:807::-;14315:4;14353:3;14342:9;14338:19;14330:27;;14367:71;14435:1;14424:9;14420:17;14411:6;14367:71;:::i;:::-;14448:72;14516:2;14505:9;14501:18;14492:6;14448:72;:::i;:::-;14530:80;14606:2;14595:9;14591:18;14582:6;14530:80;:::i;:::-;14620;14696:2;14685:9;14681:18;14672:6;14620:80;:::i;:::-;14710:73;14778:3;14767:9;14763:19;14754:6;14710:73;:::i;:::-;14793;14861:3;14850:9;14846:19;14837:6;14793:73;:::i;:::-;14066:807;;;;;;;;;:::o;14879:210::-;14966:4;15004:2;14993:9;14989:18;14981:26;;15017:65;15079:1;15068:9;15064:17;15055:6;15017:65;:::i;:::-;14879:210;;;;:::o;15095:276::-;15215:4;15253:2;15242:9;15238:18;15230:26;;15266:98;15361:1;15350:9;15346:17;15337:6;15266:98;:::i;:::-;15095:276;;;;:::o;15377:313::-;15490:4;15528:2;15517:9;15513:18;15505:26;;15577:9;15571:4;15567:20;15563:1;15552:9;15548:17;15541:47;15605:78;15678:4;15669:6;15605:78;:::i;:::-;15597:86;;15377:313;;;;:::o;15696:419::-;15862:4;15900:2;15889:9;15885:18;15877:26;;15949:9;15943:4;15939:20;15935:1;15924:9;15920:17;15913:47;15977:131;16103:4;15977:131;:::i;:::-;15969:139;;15696:419;;;:::o;16121:::-;16287:4;16325:2;16314:9;16310:18;16302:26;;16374:9;16368:4;16364:20;16360:1;16349:9;16345:17;16338:47;16402:131;16528:4;16402:131;:::i;:::-;16394:139;;16121:419;;;:::o;16546:::-;16712:4;16750:2;16739:9;16735:18;16727:26;;16799:9;16793:4;16789:20;16785:1;16774:9;16770:17;16763:47;16827:131;16953:4;16827:131;:::i;:::-;16819:139;;16546:419;;;:::o;16971:::-;17137:4;17175:2;17164:9;17160:18;17152:26;;17224:9;17218:4;17214:20;17210:1;17199:9;17195:17;17188:47;17252:131;17378:4;17252:131;:::i;:::-;17244:139;;16971:419;;;:::o;17396:::-;17562:4;17600:2;17589:9;17585:18;17577:26;;17649:9;17643:4;17639:20;17635:1;17624:9;17620:17;17613:47;17677:131;17803:4;17677:131;:::i;:::-;17669:139;;17396:419;;;:::o;17821:::-;17987:4;18025:2;18014:9;18010:18;18002:26;;18074:9;18068:4;18064:20;18060:1;18049:9;18045:17;18038:47;18102:131;18228:4;18102:131;:::i;:::-;18094:139;;17821:419;;;:::o;18246:::-;18412:4;18450:2;18439:9;18435:18;18427:26;;18499:9;18493:4;18489:20;18485:1;18474:9;18470:17;18463:47;18527:131;18653:4;18527:131;:::i;:::-;18519:139;;18246:419;;;:::o;18671:::-;18837:4;18875:2;18864:9;18860:18;18852:26;;18924:9;18918:4;18914:20;18910:1;18899:9;18895:17;18888:47;18952:131;19078:4;18952:131;:::i;:::-;18944:139;;18671:419;;;:::o;19096:::-;19262:4;19300:2;19289:9;19285:18;19277:26;;19349:9;19343:4;19339:20;19335:1;19324:9;19320:17;19313:47;19377:131;19503:4;19377:131;:::i;:::-;19369:139;;19096:419;;;:::o;19521:::-;19687:4;19725:2;19714:9;19710:18;19702:26;;19774:9;19768:4;19764:20;19760:1;19749:9;19745:17;19738:47;19802:131;19928:4;19802:131;:::i;:::-;19794:139;;19521:419;;;:::o;19946:::-;20112:4;20150:2;20139:9;20135:18;20127:26;;20199:9;20193:4;20189:20;20185:1;20174:9;20170:17;20163:47;20227:131;20353:4;20227:131;:::i;:::-;20219:139;;19946:419;;;:::o;20371:222::-;20464:4;20502:2;20491:9;20487:18;20479:26;;20515:71;20583:1;20572:9;20568:17;20559:6;20515:71;:::i;:::-;20371:222;;;;:::o;20599:483::-;20770:4;20808:2;20797:9;20793:18;20785:26;;20821:71;20889:1;20878:9;20874:17;20865:6;20821:71;:::i;:::-;20939:9;20933:4;20929:20;20924:2;20913:9;20909:18;20902:48;20967:108;21070:4;21061:6;20967:108;:::i;:::-;20959:116;;20599:483;;;;;:::o;21088:831::-;21351:4;21389:3;21378:9;21374:19;21366:27;;21403:71;21471:1;21460:9;21456:17;21447:6;21403:71;:::i;:::-;21484:80;21560:2;21549:9;21545:18;21536:6;21484:80;:::i;:::-;21611:9;21605:4;21601:20;21596:2;21585:9;21581:18;21574:48;21639:108;21742:4;21733:6;21639:108;:::i;:::-;21631:116;;21757:72;21825:2;21814:9;21810:18;21801:6;21757:72;:::i;:::-;21839:73;21907:3;21896:9;21892:19;21883:6;21839:73;:::i;:::-;21088:831;;;;;;;;:::o;21925:214::-;22014:4;22052:2;22041:9;22037:18;22029:26;;22065:67;22129:1;22118:9;22114:17;22105:6;22065:67;:::i;:::-;21925:214;;;;:::o;22226:132::-;22293:4;22316:3;22308:11;;22346:4;22341:3;22337:14;22329:22;;22226:132;;;:::o;22364:114::-;22431:6;22465:5;22459:12;22449:22;;22364:114;;;:::o;22484:99::-;22536:6;22570:5;22564:12;22554:22;;22484:99;;;:::o;22589:113::-;22659:4;22691;22686:3;22682:14;22674:22;;22589:113;;;:::o;22708:184::-;22807:11;22841:6;22836:3;22829:19;22881:4;22876:3;22872:14;22857:29;;22708:184;;;;:::o;22898:169::-;22982:11;23016:6;23011:3;23004:19;23056:4;23051:3;23047:14;23032:29;;22898:169;;;;:::o;23073:305::-;23113:3;23132:20;23150:1;23132:20;:::i;:::-;23127:25;;23166:20;23184:1;23166:20;:::i;:::-;23161:25;;23320:1;23252:66;23248:74;23245:1;23242:81;23239:107;;;23326:18;;:::i;:::-;23239:107;23370:1;23367;23363:9;23356:16;;23073:305;;;;:::o;23384:185::-;23424:1;23441:20;23459:1;23441:20;:::i;:::-;23436:25;;23475:20;23493:1;23475:20;:::i;:::-;23470:25;;23514:1;23504:35;;23519:18;;:::i;:::-;23504:35;23561:1;23558;23554:9;23549:14;;23384:185;;;;:::o;23575:348::-;23615:7;23638:20;23656:1;23638:20;:::i;:::-;23633:25;;23672:20;23690:1;23672:20;:::i;:::-;23667:25;;23860:1;23792:66;23788:74;23785:1;23782:81;23777:1;23770:9;23763:17;23759:105;23756:131;;;23867:18;;:::i;:::-;23756:131;23915:1;23912;23908:9;23897:20;;23575:348;;;;:::o;23929:191::-;23969:4;23989:20;24007:1;23989:20;:::i;:::-;23984:25;;24023:20;24041:1;24023:20;:::i;:::-;24018:25;;24062:1;24059;24056:8;24053:34;;;24067:18;;:::i;:::-;24053:34;24112:1;24109;24105:9;24097:17;;23929:191;;;;:::o;24126:96::-;24163:7;24192:24;24210:5;24192:24;:::i;:::-;24181:35;;24126:96;;;:::o;24228:104::-;24273:7;24302:24;24320:5;24302:24;:::i;:::-;24291:35;;24228:104;;;:::o;24338:90::-;24372:7;24415:5;24408:13;24401:21;24390:32;;24338:90;;;:::o;24434:126::-;24471:7;24511:42;24504:5;24500:54;24489:65;;24434:126;;;:::o;24566:77::-;24603:7;24632:5;24621:16;;24566:77;;;:::o;24649:86::-;24684:7;24724:4;24717:5;24713:16;24702:27;;24649:86;;;:::o;24741:153::-;24818:9;24851:37;24882:5;24851:37;:::i;:::-;24838:50;;24741:153;;;:::o;24900:121::-;24958:9;24991:24;25009:5;24991:24;:::i;:::-;24978:37;;24900:121;;;:::o;25027:126::-;25077:9;25110:37;25141:5;25110:37;:::i;:::-;25097:50;;25027:126;;;:::o;25159:113::-;25209:9;25242:24;25260:5;25242:24;:::i;:::-;25229:37;;25159:113;;;:::o;25278:307::-;25346:1;25356:113;25370:6;25367:1;25364:13;25356:113;;;25455:1;25450:3;25446:11;25440:18;25436:1;25431:3;25427:11;25420:39;25392:2;25389:1;25385:10;25380:15;;25356:113;;;25487:6;25484:1;25481:13;25478:101;;;25567:1;25558:6;25553:3;25549:16;25542:27;25478:101;25327:258;25278:307;;;:::o;25591:320::-;25635:6;25672:1;25666:4;25662:12;25652:22;;25719:1;25713:4;25709:12;25740:18;25730:81;;25796:4;25788:6;25784:17;25774:27;;25730:81;25858:2;25850:6;25847:14;25827:18;25824:38;25821:84;;;25877:18;;:::i;:::-;25821:84;25642:269;25591:320;;;:::o;25917:233::-;25956:3;25979:24;25997:5;25979:24;:::i;:::-;25970:33;;26025:66;26018:5;26015:77;26012:103;;;26095:18;;:::i;:::-;26012:103;26142:1;26135:5;26131:13;26124:20;;25917:233;;;:::o;26156:180::-;26204:77;26201:1;26194:88;26301:4;26298:1;26291:15;26325:4;26322:1;26315:15;26342:180;26390:77;26387:1;26380:88;26487:4;26484:1;26477:15;26511:4;26508:1;26501:15;26528:180;26576:77;26573:1;26566:88;26673:4;26670:1;26663:15;26697:4;26694:1;26687:15;26714:180;26762:77;26759:1;26752:88;26859:4;26856:1;26849:15;26883:4;26880:1;26873:15;26900:180;26948:77;26945:1;26938:88;27045:4;27042:1;27035:15;27069:4;27066:1;27059:15;27086:117;27195:1;27192;27185:12;27209:117;27318:1;27315;27308:12;27332:117;27441:1;27438;27431:12;27455:117;27564:1;27561;27554:12;27578:117;27687:1;27684;27677:12;27701:102;27742:6;27793:2;27789:7;27784:2;27777:5;27773:14;27769:28;27759:38;;27701:102;;;:::o;27809:222::-;27949:34;27945:1;27937:6;27933:14;27926:58;28018:5;28013:2;28005:6;28001:15;27994:30;27809:222;:::o;28037:167::-;28177:19;28173:1;28165:6;28161:14;28154:43;28037:167;:::o;28210:250::-;28350:34;28346:1;28338:6;28334:14;28327:58;28419:33;28414:2;28406:6;28402:15;28395:58;28210:250;:::o;28466:225::-;28606:34;28602:1;28594:6;28590:14;28583:58;28675:8;28670:2;28662:6;28658:15;28651:33;28466:225;:::o;28697:221::-;28837:34;28833:1;28825:6;28821:14;28814:58;28906:4;28901:2;28893:6;28889:15;28882:29;28697:221;:::o;28924:177::-;29064:29;29060:1;29052:6;29048:14;29041:53;28924:177;:::o;29107:169::-;29247:21;29243:1;29235:6;29231:14;29224:45;29107:169;:::o;29282:220::-;29422:34;29418:1;29410:6;29406:14;29399:58;29491:3;29486:2;29478:6;29474:15;29467:28;29282:220;:::o;29508:182::-;29648:34;29644:1;29636:6;29632:14;29625:58;29508:182;:::o;29696:224::-;29836:34;29832:1;29824:6;29820:14;29813:58;29905:7;29900:2;29892:6;29888:15;29881:32;29696:224;:::o;29926:223::-;30066:34;30062:1;30054:6;30050:14;30043:58;30135:6;30130:2;30122:6;30118:15;30111:31;29926:223;:::o;30155:122::-;30228:24;30246:5;30228:24;:::i;:::-;30221:5;30218:35;30208:63;;30267:1;30264;30257:12;30208:63;30155:122;:::o;30283:116::-;30353:21;30368:5;30353:21;:::i;:::-;30346:5;30343:32;30333:60;;30389:1;30386;30379:12;30333:60;30283:116;:::o;30405:122::-;30478:24;30496:5;30478:24;:::i;:::-;30471:5;30468:35;30458:63;;30517:1;30514;30507:12;30458:63;30405:122;:::o
Swarm Source
ipfs://62faaaaae6088552961f4e2bd0690149fc1102fd303405a9092611ae1462f770
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,864.43 | 0.000000023855 | $0.000068 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.