ERC-20
Overview
Max Total Supply
100,000,000,000,000 AVOCATO
Holders
82
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
439,821,755,667.337573308 AVOCATOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Avocato
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-21 */ // File: contracts/avocato.sol pragma solidity ^0.8.7; contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } contract ERC20Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "ERC20Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "ERC20Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view 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); } 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 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; 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 swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; 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 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; } contract Avocato is IERC20, Context, ERC20Ownable { using SafeMath for uint256; address dead = 0x000000000000000000000000000000000000dEaD; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping (address => uint) private _setCoolDown; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1e14 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _maxTxAmount = _tTotal; uint256 private _tFeeTotal; string private constant _name = "AVOCATO"; string private constant _symbol = "AVOCATO"; uint8 private constant _decimals = 9; uint8 private _refTax = 2; // Fee for Reflection uint8 private _previousRefTax = _refTax; uint8 private _liqTax = 2; // Fee for Liquidity uint8 private _previousLiqTax = _liqTax; uint8 private _devTax = 4; // Fee to marketing/charity wallet uint8 private _previousDevTax = _devTax; IUniswapV2Router02 private pcsV2Router; address private pcsV2Pair; address payable private feeWallet; bool inSwapAndLiquify; bool private swapAndLiquifyEnabled = true; bool private coolDownEnabled = true; bool private _firstTrans = true; bool private _limitBuys = false; uint256 private numTokensSellToAddToLiquidity; event MaxTxAmountUpdated(uint _maxTxAmount); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() { _rOwned[_msgSender()] = _rTotal; feeWallet = payable(0x489764379f3a3366286Fe97a9b33ba029ef2dA4d); numTokensSellToAddToLiquidity = _tTotal.mul(1).div(1000); _isExcludedFromFee[_msgSender()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure override returns (string memory) { return _name; } function symbol() public pure override returns (string memory) { return _symbol; } function decimals() public pure override returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender,address recipient,uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender,_msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance") ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero") ); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function setCooldownEnabled(bool onoff) external onlyOwner() { coolDownEnabled = onoff; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount, , , , , ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, "Amt must be less than supply"); if (!deductTransferFee) { (uint256 rAmount, , , , , ) = _getValues(tAmount); return rAmount; } else { (, uint256 rTransferAmount, , , , ) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require(rAmount <= _rTotal, "Amt must be less than tot refl"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256,uint256,uint256,uint256,uint256,uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount)private view returns (uint256,uint256,uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount,uint256 tFee,uint256 tLiquidity,uint256 currentRate) private pure returns (uint256,uint256,uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_refTax).div(10**2); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liqTax + _devTax).div(10**2); } function removeAllFee() private { if (_refTax == 0 && _liqTax == 0 && _devTax == 0) return; _previousRefTax = _refTax; _previousLiqTax = _liqTax; _previousDevTax = _devTax; _refTax = 0; _liqTax = 0; _devTax = 0; } function restoreAllFee() private { _refTax = _previousRefTax; _liqTax = _previousLiqTax; _devTax = _previousDevTax; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve(address owner,address spender,uint256 amount) private { require(owner != address(0), "ERC20: approve from zero address"); require(spender != address(0), "ERC20: approve to zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from,address to,uint256 amount) private { require(from != address(0), "ERC20: transfer from zero address"); require(to != address(0), "ERC20: transfer to zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (_limitBuys == true) { require(amount <= 1000000000000 * 10**9); } if (from == pcsV2Pair && to != address(pcsV2Router) && ! _isExcludedFromFee[to] && coolDownEnabled) { require(amount <= _maxTxAmount); require(_setCoolDown[to] < block.timestamp); _setCoolDown[to] = block.timestamp + (30 seconds); } if(_firstTrans == true) { IUniswapV2Router02 _pcsV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); pcsV2Router = _pcsV2Router; pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).getPair(address(this), _pcsV2Router.WETH()); _limitBuys = true; _firstTrans = false; } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwapAndLiquify && to == pcsV2Pair && swapAndLiquifyEnabled) { if (contractTokenBalance >= numTokensSellToAddToLiquidity) { swapAndLiquify(contractTokenBalance); } } bool takeFee = true; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } _tokenTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 spentAmount = 0; uint256 totSpentAmount = 0; if (_devTax != 0) { spentAmount = contractTokenBalance.mul(50).div(100); swapTokensForETH(spentAmount); sendTax(address(this).balance); totSpentAmount = totSpentAmount + spentAmount; } } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = pcsV2Router.WETH(); _approve(address(this), address(pcsV2Router), tokenAmount); pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp.add(300) ); } function sendTax(uint256 amount) private { feeWallet.transfer(amount); block.timestamp.add(300); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(pcsV2Router), tokenAmount); pcsV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable dead, block.timestamp.add(300) ); } function Initiate() external onlyOwner { _firstTrans = true; } function SwapEnable() external onlyOwner { swapAndLiquifyEnabled = true; } function SwapDisable() external onlyOwner { swapAndLiquifyEnabled = false; } function LimitBuysOn() external onlyOwner { _limitBuys = true; } function LimitBuysOff() external onlyOwner { _limitBuys = false; } function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private { if (!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _tokenTransferNoFee(address sender,address recipient,uint256 amount) private { _rOwned[sender] = _rOwned[sender].sub(amount); _rOwned[recipient] = _rOwned[recipient].add(amount); if (_isExcluded[sender]) { _tOwned[sender] = _tOwned[sender].sub(amount); } if (_isExcluded[recipient]) { _tOwned[recipient] = _tOwned[recipient].add(amount); } emit Transfer(sender, recipient, amount); } }
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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":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":"Initiate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LimitBuysOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LimitBuysOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405261dead600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555069152d02c7e14af6800000600019620000619190620005f7565b600019620000709190620005b2565b60095569152d02c7e14af6800000600a556002600c60006101000a81548160ff021916908360ff160217905550600c60009054906101000a900460ff16600c60016101000a81548160ff021916908360ff1602179055506002600c60026101000a81548160ff021916908360ff160217905550600c60029054906101000a900460ff16600c60036101000a81548160ff021916908360ff1602179055506004600c60046101000a81548160ff021916908360ff160217905550600c60049054906101000a900460ff16600c60056101000a81548160ff021916908360ff1602179055506001600e60156101000a81548160ff0219169083151502179055506001600e60166101000a81548160ff0219169083151502179055506001600e60176101000a81548160ff0219169083151502179055506000600e60186101000a81548160ff021916908315150217905550348015620001cc57600080fd5b506000620001df620004b360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506009546002600062000294620004b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073489764379f3a3366286fe97a9b33ba029ef2da4d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003676103e862000353600169152d02c7e14af6800000620004bb60201b6200156b1790919060201c565b620004d360201b620015811790919060201c565b600f8190555060016006600062000383620004b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200043c620004b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69152d02c7e14af6800000604051620004a59190620004fc565b60405180910390a36200068d565b600033905090565b60008183620004cb919062000551565b905092915050565b60008183620004e3919062000519565b905092915050565b620004f681620005ed565b82525050565b6000602082019050620005136000830184620004eb565b92915050565b60006200052682620005ed565b91506200053383620005ed565b9250826200054657620005456200065e565b5b828204905092915050565b60006200055e82620005ed565b91506200056b83620005ed565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620005a757620005a66200062f565b5b828202905092915050565b6000620005bf82620005ed565b9150620005cc83620005ed565b925082821015620005e257620005e16200062f565b5b828203905092915050565b6000819050919050565b60006200060482620005ed565b91506200061183620005ed565b9250826200062457620006236200065e565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6144b6806200069d6000396000f3fe6080604052600436106101855760003560e01c806370a08231116100d157806395d89b411161008a578063b8578bfd11610064578063b8578bfd146105a1578063d3dbc861146105b8578063dd62ed3e146105cf578063f2fde38b1461060c5761018c565b806395d89b41146104fc578063a457c2d714610527578063a9059cbb146105645761018c565b806370a0823114610412578063715018a61461044f5780637b7141e41461046657806388f820201461047d5780638da5cb5b146104ba5780638dd45fb2146104e55761018c565b8063395093511161013e578063437823ec11610118578063437823ec146103465780634549b0391461036f5780635342acb4146103ac5780635932ead1146103e95761018c565b806339509351146102c95780633bd5d173146103065780633f97d3f41461032f5761018c565b806306fdde0314610191578063095ea7b3146101bc57806318160ddd146101f957806323b872dd146102245780632d83811914610261578063313ce5671461029e5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610635565b6040516101b39190613c4e565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de91906138ae565b610672565b6040516101f09190613c33565b60405180910390f35b34801561020557600080fd5b5061020e610690565b60405161021b9190613db0565b60405180910390f35b34801561023057600080fd5b5061024b6004803603810190610246919061385b565b6106a2565b6040516102589190613c33565b60405180910390f35b34801561026d57600080fd5b506102886004803603810190610283919061391b565b61077b565b6040516102959190613db0565b60405180910390f35b3480156102aa57600080fd5b506102b36107e9565b6040516102c09190613e25565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb91906138ae565b6107f2565b6040516102fd9190613c33565b60405180910390f35b34801561031257600080fd5b5061032d6004803603810190610328919061391b565b6108a5565b005b34801561033b57600080fd5b50610344610a20565b005b34801561035257600080fd5b5061036d600480360381019061036891906137c1565b610ab9565b005b34801561037b57600080fd5b5061039660048036038101906103919190613948565b610b90565b6040516103a39190613db0565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce91906137c1565b610c1c565b6040516103e09190613c33565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b91906138ee565b610c72565b005b34801561041e57600080fd5b50610439600480360381019061043491906137c1565b610d0b565b6040516104469190613db0565b60405180910390f35b34801561045b57600080fd5b50610464610df6565b005b34801561047257600080fd5b5061047b610f30565b005b34801561048957600080fd5b506104a4600480360381019061049f91906137c1565b610fc9565b6040516104b19190613c33565b60405180910390f35b3480156104c657600080fd5b506104cf61101f565b6040516104dc9190613bef565b60405180910390f35b3480156104f157600080fd5b506104fa611048565b005b34801561050857600080fd5b506105116110e1565b60405161051e9190613c4e565b60405180910390f35b34801561053357600080fd5b5061054e600480360381019061054991906138ae565b61111e565b60405161055b9190613c33565b60405180910390f35b34801561057057600080fd5b5061058b600480360381019061058691906138ae565b6111eb565b6040516105989190613c33565b60405180910390f35b3480156105ad57600080fd5b506105b6611209565b005b3480156105c457600080fd5b506105cd6112a2565b005b3480156105db57600080fd5b506105f660048036038101906105f1919061381b565b61133b565b6040516106039190613db0565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e91906137c1565b6113c2565b005b60606040518060400160405280600781526020017f41564f4341544f00000000000000000000000000000000000000000000000000815250905090565b600061068661067f611597565b848461159f565b6001905092915050565b600069152d02c7e14af6800000905090565b60006106af84848461176a565b610770846106bb611597565b61076b8560405180606001604052806028815260200161443460289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610721611597565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e689092919063ffffffff16565b61159f565b600190509392505050565b60006009548211156107c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b990613cf0565b60405180910390fd5b60006107cc611ebd565b90506107e1818461158190919063ffffffff16565b915050919050565b60006009905090565b600061089b6107ff611597565b846108968560046000610810611597565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b61159f565b6001905092915050565b60006108af611597565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093590613d70565b60405180910390fd5b600061094983611efe565b505050505090506109a281600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109fa81600954611f5a90919063ffffffff16565b600981905550610a1583600b54611ee890919063ffffffff16565b600b81905550505050565b610a28611597565b73ffffffffffffffffffffffffffffffffffffffff16610a4661101f565b73ffffffffffffffffffffffffffffffffffffffff1614610a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9390613d30565b60405180910390fd5b6001600e60186101000a81548160ff021916908315150217905550565b610ac1611597565b73ffffffffffffffffffffffffffffffffffffffff16610adf61101f565b73ffffffffffffffffffffffffffffffffffffffff1614610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c90613d30565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600069152d02c7e14af6800000831115610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd690613c90565b60405180910390fd5b81610bff576000610bef84611efe565b5050505050905080915050610c16565b6000610c0a84611efe565b50505050915050809150505b92915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c7a611597565b73ffffffffffffffffffffffffffffffffffffffff16610c9861101f565b73ffffffffffffffffffffffffffffffffffffffff1614610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce590613d30565b60405180910390fd5b80600e60166101000a81548160ff02191690831515021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610da657600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610df1565b610dee600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461077b565b90505b919050565b610dfe611597565b73ffffffffffffffffffffffffffffffffffffffff16610e1c61101f565b73ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6990613d30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f38611597565b73ffffffffffffffffffffffffffffffffffffffff16610f5661101f565b73ffffffffffffffffffffffffffffffffffffffff1614610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390613d30565b60405180910390fd5b6000600e60186101000a81548160ff021916908315150217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611050611597565b73ffffffffffffffffffffffffffffffffffffffff1661106e61101f565b73ffffffffffffffffffffffffffffffffffffffff16146110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb90613d30565b60405180910390fd5b6000600e60156101000a81548160ff021916908315150217905550565b60606040518060400160405280600781526020017f41564f4341544f00000000000000000000000000000000000000000000000000815250905090565b60006111e161112b611597565b846111dc8560405180606001604052806025815260200161445c6025913960046000611155611597565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e689092919063ffffffff16565b61159f565b6001905092915050565b60006111ff6111f8611597565b848461176a565b6001905092915050565b611211611597565b73ffffffffffffffffffffffffffffffffffffffff1661122f61101f565b73ffffffffffffffffffffffffffffffffffffffff1614611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c90613d30565b60405180910390fd5b6001600e60156101000a81548160ff021916908315150217905550565b6112aa611597565b73ffffffffffffffffffffffffffffffffffffffff166112c861101f565b73ffffffffffffffffffffffffffffffffffffffff161461131e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131590613d30565b60405180910390fd5b6001600e60176101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113ca611597565b73ffffffffffffffffffffffffffffffffffffffff166113e861101f565b73ffffffffffffffffffffffffffffffffffffffff161461143e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143590613d30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a590613d10565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081836115799190613f53565b905092915050565b6000818361158f9190613f22565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160690613d90565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690613c70565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161175d9190613db0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d190613cb0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561184a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184190613cd0565b60405180910390fd5b6000811161188d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188490613d50565b60405180910390fd5b60011515600e60189054906101000a900460ff16151514156118c057683635c9adc5dea000008111156118bf57600080fd5b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561196b5750600c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119c15750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119d95750600e60169054906101000a900460ff165b15611a8957600a548111156119ed57600080fd5b42600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a3857600080fd5b601e42611a459190613e95565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60011515600e60179054906101000a900460ff1615151415611cfc576000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b4557600080fd5b505afa158015611b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7d91906137ee565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611bdf57600080fd5b505afa158015611bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1791906137ee565b6040518363ffffffff1660e01b8152600401611c34929190613c0a565b60206040518083038186803b158015611c4c57600080fd5b505afa158015611c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8491906137ee565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60186101000a81548160ff0219169083151502179055506000600e60176101000a81548160ff021916908315150217905550505b6000611d0730610d0b565b9050600e60149054906101000a900460ff16158015611d735750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611d8b5750600e60159054906101000a900460ff165b15611da457600f548110611da357611da281611f70565b5b5b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e4b5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e5557600090505b611e6185858584612012565b5050505050565b6000838311158290611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea79190613c4e565b60405180910390fd5b5082840390509392505050565b6000806000611eca612323565b91509150611ee1818361158190919063ffffffff16565b9250505090565b60008183611ef69190613e95565b905092915050565b6000806000806000806000806000611f158a6125f6565b9250925092506000806000611f338d8686611f2e611ebd565b612650565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b60008183611f689190613fad565b905092915050565b6001600e60146101000a81548160ff0219169083151502179055506000806000600c60049054906101000a900460ff1660ff1614611ff257611fcf6064611fc160328661156b90919063ffffffff16565b61158190919063ffffffff16565b9150611fda826126d9565b611fe34761293f565b8181611fef9190613e95565b90505b50506000600e60146101000a81548160ff02191690831515021790555050565b806120205761201f6129c1565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120c35750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120d8576120d3848484612af2565b61230f565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561217b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121905761218b848484612d52565b61230e565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122345750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561224957612244848484612fb2565b61230d565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122eb5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612300576122fb84848461317d565b61230c565b61230b848484612fb2565b5b5b5b5b8061231d5761231c613472565b5b50505050565b60008060006009549050600069152d02c7e14af6800000905060005b6008805490508110156125a95782600260006008848154811061236557612364614122565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061245357508160036000600884815481106123eb576123ea614122565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156124725760095469152d02c7e14af6800000945094505050506125f2565b612502600260006008848154811061248d5761248c614122565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611f5a90919063ffffffff16565b9250612594600360006008848154811061251f5761251e614122565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611f5a90919063ffffffff16565b915080806125a19061407b565b91505061233f565b506125c969152d02c7e14af680000060095461158190919063ffffffff16565b8210156125e95760095469152d02c7e14af68000009350935050506125f2565b81819350935050505b9091565b600080600080612605856134f2565b9050600061261286613533565b9050600061263b8261262d858a611f5a90919063ffffffff16565b611f5a90919063ffffffff16565b90508083839550955095505050509193909250565b600080600080612669858961156b90919063ffffffff16565b90506000612680868961156b90919063ffffffff16565b90506000612697878961156b90919063ffffffff16565b905060006126c0826126b28587611f5a90919063ffffffff16565b611f5a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600267ffffffffffffffff8111156126f6576126f5614151565b5b6040519080825280602002602001820160405280156127245781602001602082028036833780820191505090505b509050308160008151811061273c5761273b614122565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156127de57600080fd5b505afa1580156127f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281691906137ee565b8160018151811061282a57612829614122565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061289130600c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461159f565b600c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084306128e961012c42611ee890919063ffffffff16565b6040518663ffffffff1660e01b8152600401612909959493929190613dcb565b600060405180830381600087803b15801561292357600080fd5b505af1158015612937573d6000803e3d6000fd5b505050505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156129a7573d6000803e3d6000fd5b506129bd61012c42611ee890919063ffffffff16565b5050565b6000600c60009054906101000a900460ff1660ff161480156129f557506000600c60029054906101000a900460ff1660ff16145b8015612a1357506000600c60049054906101000a900460ff1660ff16145b15612a1d57612af0565b600c60009054906101000a900460ff16600c60016101000a81548160ff021916908360ff160217905550600c60029054906101000a900460ff16600c60036101000a81548160ff021916908360ff160217905550600c60049054906101000a900460ff16600c60056101000a81548160ff021916908360ff1602179055506000600c60006101000a81548160ff021916908360ff1602179055506000600c60026101000a81548160ff021916908360ff1602179055506000600c60046101000a81548160ff021916908360ff1602179055505b565b600080600080600080612b0487611efe565b955095509550955095509550612b6287600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bf786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c8c85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cd88161358e565b612ce28483613733565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612d3f9190613db0565b60405180910390a3505050505050505050565b600080600080600080612d6487611efe565b955095509550955095509550612dc286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e5783600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612eec85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f388161358e565b612f428483613733565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612f9f9190613db0565b60405180910390a3505050505050505050565b600080600080600080612fc487611efe565b95509550955095509550955061302286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130b785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131038161358e565b61310d8483613733565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161316a9190613db0565b60405180910390a3505050505050505050565b60008060008060008061318f87611efe565b9550955095509550955095506131ed87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061328286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061331783600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133ac85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133f88161358e565b6134028483613733565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161345f9190613db0565b60405180910390a3505050505050505050565b600c60019054906101000a900460ff16600c60006101000a81548160ff021916908360ff160217905550600c60039054906101000a900460ff16600c60026101000a81548160ff021916908360ff160217905550600c60059054906101000a900460ff16600c60046101000a81548160ff021916908360ff160217905550565b600061352c606461351e600c60009054906101000a900460ff1660ff168561156b90919063ffffffff16565b61158190919063ffffffff16565b9050919050565b60006135876064613579600c60049054906101000a900460ff16600c60029054906101000a900460ff166135679190613eeb565b60ff168561156b90919063ffffffff16565b61158190919063ffffffff16565b9050919050565b6000613598611ebd565b905060006135af828461156b90919063ffffffff16565b905061360381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561372e576136ea83600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61374882600954611f5a90919063ffffffff16565b60098190555061376381600b54611ee890919063ffffffff16565b600b819055505050565b60008135905061377c816143ee565b92915050565b600081519050613791816143ee565b92915050565b6000813590506137a681614405565b92915050565b6000813590506137bb8161441c565b92915050565b6000602082840312156137d7576137d6614180565b5b60006137e58482850161376d565b91505092915050565b60006020828403121561380457613803614180565b5b600061381284828501613782565b91505092915050565b6000806040838503121561383257613831614180565b5b60006138408582860161376d565b92505060206138518582860161376d565b9150509250929050565b60008060006060848603121561387457613873614180565b5b60006138828682870161376d565b93505060206138938682870161376d565b92505060406138a4868287016137ac565b9150509250925092565b600080604083850312156138c5576138c4614180565b5b60006138d38582860161376d565b92505060206138e4858286016137ac565b9150509250929050565b60006020828403121561390457613903614180565b5b600061391284828501613797565b91505092915050565b60006020828403121561393157613930614180565b5b600061393f848285016137ac565b91505092915050565b6000806040838503121561395f5761395e614180565b5b600061396d858286016137ac565b925050602061397e85828601613797565b9150509250929050565b600061399483836139a0565b60208301905092915050565b6139a981613fe1565b82525050565b6139b881613fe1565b82525050565b60006139c982613e50565b6139d38185613e73565b93506139de83613e40565b8060005b83811015613a0f5781516139f68882613988565b9750613a0183613e66565b9250506001810190506139e2565b5085935050505092915050565b613a2581613ff3565b82525050565b613a3481614036565b82525050565b6000613a4582613e5b565b613a4f8185613e84565b9350613a5f818560208601614048565b613a6881614185565b840191505092915050565b6000613a80601e83613e84565b9150613a8b82614196565b602082019050919050565b6000613aa3601c83613e84565b9150613aae826141bf565b602082019050919050565b6000613ac6602183613e84565b9150613ad1826141e8565b604082019050919050565b6000613ae9601f83613e84565b9150613af482614237565b602082019050919050565b6000613b0c601e83613e84565b9150613b1782614260565b602082019050919050565b6000613b2f602b83613e84565b9150613b3a82614289565b604082019050919050565b6000613b52602583613e84565b9150613b5d826142d8565b604082019050919050565b6000613b75602983613e84565b9150613b8082614327565b604082019050919050565b6000613b98602c83613e84565b9150613ba382614376565b604082019050919050565b6000613bbb602083613e84565b9150613bc6826143c5565b602082019050919050565b613bda8161401f565b82525050565b613be981614029565b82525050565b6000602082019050613c0460008301846139af565b92915050565b6000604082019050613c1f60008301856139af565b613c2c60208301846139af565b9392505050565b6000602082019050613c486000830184613a1c565b92915050565b60006020820190508181036000830152613c688184613a3a565b905092915050565b60006020820190508181036000830152613c8981613a73565b9050919050565b60006020820190508181036000830152613ca981613a96565b9050919050565b60006020820190508181036000830152613cc981613ab9565b9050919050565b60006020820190508181036000830152613ce981613adc565b9050919050565b60006020820190508181036000830152613d0981613aff565b9050919050565b60006020820190508181036000830152613d2981613b22565b9050919050565b60006020820190508181036000830152613d4981613b45565b9050919050565b60006020820190508181036000830152613d6981613b68565b9050919050565b60006020820190508181036000830152613d8981613b8b565b9050919050565b60006020820190508181036000830152613da981613bae565b9050919050565b6000602082019050613dc56000830184613bd1565b92915050565b600060a082019050613de06000830188613bd1565b613ded6020830187613a2b565b8181036040830152613dff81866139be565b9050613e0e60608301856139af565b613e1b6080830184613bd1565b9695505050505050565b6000602082019050613e3a6000830184613be0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613ea08261401f565b9150613eab8361401f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ee057613edf6140c4565b5b828201905092915050565b6000613ef682614029565b9150613f0183614029565b92508260ff03821115613f1757613f166140c4565b5b828201905092915050565b6000613f2d8261401f565b9150613f388361401f565b925082613f4857613f476140f3565b5b828204905092915050565b6000613f5e8261401f565b9150613f698361401f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613fa257613fa16140c4565b5b828202905092915050565b6000613fb88261401f565b9150613fc38361401f565b925082821015613fd657613fd56140c4565b5b828203905092915050565b6000613fec82613fff565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006140418261401f565b9050919050565b60005b8381101561406657808201518184015260208101905061404b565b83811115614075576000848401525b50505050565b60006140868261401f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140b9576140b86140c4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a20617070726f766520746f207a65726f20616464726573730000600082015250565b7f416d74206d757374206265206c657373207468616e20737570706c7900000000600082015250565b7f45524332303a207472616e736665722066726f6d207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220746f207a65726f206164647265737300600082015250565b7f416d74206d757374206265206c657373207468616e20746f74207265666c0000600082015250565b7f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d207a65726f2061646472657373600082015250565b6143f781613fe1565b811461440257600080fd5b50565b61440e81613ff3565b811461441957600080fd5b50565b6144258161401f565b811461443057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122076def3dcfa6f74c2d4dab532fdc65bf156f1a5b494ccc7c5de557e3703a65b8d64736f6c63430008070033
Deployed Bytecode
0x6080604052600436106101855760003560e01c806370a08231116100d157806395d89b411161008a578063b8578bfd11610064578063b8578bfd146105a1578063d3dbc861146105b8578063dd62ed3e146105cf578063f2fde38b1461060c5761018c565b806395d89b41146104fc578063a457c2d714610527578063a9059cbb146105645761018c565b806370a0823114610412578063715018a61461044f5780637b7141e41461046657806388f820201461047d5780638da5cb5b146104ba5780638dd45fb2146104e55761018c565b8063395093511161013e578063437823ec11610118578063437823ec146103465780634549b0391461036f5780635342acb4146103ac5780635932ead1146103e95761018c565b806339509351146102c95780633bd5d173146103065780633f97d3f41461032f5761018c565b806306fdde0314610191578063095ea7b3146101bc57806318160ddd146101f957806323b872dd146102245780632d83811914610261578063313ce5671461029e5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610635565b6040516101b39190613c4e565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de91906138ae565b610672565b6040516101f09190613c33565b60405180910390f35b34801561020557600080fd5b5061020e610690565b60405161021b9190613db0565b60405180910390f35b34801561023057600080fd5b5061024b6004803603810190610246919061385b565b6106a2565b6040516102589190613c33565b60405180910390f35b34801561026d57600080fd5b506102886004803603810190610283919061391b565b61077b565b6040516102959190613db0565b60405180910390f35b3480156102aa57600080fd5b506102b36107e9565b6040516102c09190613e25565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb91906138ae565b6107f2565b6040516102fd9190613c33565b60405180910390f35b34801561031257600080fd5b5061032d6004803603810190610328919061391b565b6108a5565b005b34801561033b57600080fd5b50610344610a20565b005b34801561035257600080fd5b5061036d600480360381019061036891906137c1565b610ab9565b005b34801561037b57600080fd5b5061039660048036038101906103919190613948565b610b90565b6040516103a39190613db0565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce91906137c1565b610c1c565b6040516103e09190613c33565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b91906138ee565b610c72565b005b34801561041e57600080fd5b50610439600480360381019061043491906137c1565b610d0b565b6040516104469190613db0565b60405180910390f35b34801561045b57600080fd5b50610464610df6565b005b34801561047257600080fd5b5061047b610f30565b005b34801561048957600080fd5b506104a4600480360381019061049f91906137c1565b610fc9565b6040516104b19190613c33565b60405180910390f35b3480156104c657600080fd5b506104cf61101f565b6040516104dc9190613bef565b60405180910390f35b3480156104f157600080fd5b506104fa611048565b005b34801561050857600080fd5b506105116110e1565b60405161051e9190613c4e565b60405180910390f35b34801561053357600080fd5b5061054e600480360381019061054991906138ae565b61111e565b60405161055b9190613c33565b60405180910390f35b34801561057057600080fd5b5061058b600480360381019061058691906138ae565b6111eb565b6040516105989190613c33565b60405180910390f35b3480156105ad57600080fd5b506105b6611209565b005b3480156105c457600080fd5b506105cd6112a2565b005b3480156105db57600080fd5b506105f660048036038101906105f1919061381b565b61133b565b6040516106039190613db0565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e91906137c1565b6113c2565b005b60606040518060400160405280600781526020017f41564f4341544f00000000000000000000000000000000000000000000000000815250905090565b600061068661067f611597565b848461159f565b6001905092915050565b600069152d02c7e14af6800000905090565b60006106af84848461176a565b610770846106bb611597565b61076b8560405180606001604052806028815260200161443460289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610721611597565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e689092919063ffffffff16565b61159f565b600190509392505050565b60006009548211156107c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b990613cf0565b60405180910390fd5b60006107cc611ebd565b90506107e1818461158190919063ffffffff16565b915050919050565b60006009905090565b600061089b6107ff611597565b846108968560046000610810611597565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b61159f565b6001905092915050565b60006108af611597565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093590613d70565b60405180910390fd5b600061094983611efe565b505050505090506109a281600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109fa81600954611f5a90919063ffffffff16565b600981905550610a1583600b54611ee890919063ffffffff16565b600b81905550505050565b610a28611597565b73ffffffffffffffffffffffffffffffffffffffff16610a4661101f565b73ffffffffffffffffffffffffffffffffffffffff1614610a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9390613d30565b60405180910390fd5b6001600e60186101000a81548160ff021916908315150217905550565b610ac1611597565b73ffffffffffffffffffffffffffffffffffffffff16610adf61101f565b73ffffffffffffffffffffffffffffffffffffffff1614610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c90613d30565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600069152d02c7e14af6800000831115610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd690613c90565b60405180910390fd5b81610bff576000610bef84611efe565b5050505050905080915050610c16565b6000610c0a84611efe565b50505050915050809150505b92915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c7a611597565b73ffffffffffffffffffffffffffffffffffffffff16610c9861101f565b73ffffffffffffffffffffffffffffffffffffffff1614610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce590613d30565b60405180910390fd5b80600e60166101000a81548160ff02191690831515021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610da657600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610df1565b610dee600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461077b565b90505b919050565b610dfe611597565b73ffffffffffffffffffffffffffffffffffffffff16610e1c61101f565b73ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6990613d30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f38611597565b73ffffffffffffffffffffffffffffffffffffffff16610f5661101f565b73ffffffffffffffffffffffffffffffffffffffff1614610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390613d30565b60405180910390fd5b6000600e60186101000a81548160ff021916908315150217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611050611597565b73ffffffffffffffffffffffffffffffffffffffff1661106e61101f565b73ffffffffffffffffffffffffffffffffffffffff16146110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb90613d30565b60405180910390fd5b6000600e60156101000a81548160ff021916908315150217905550565b60606040518060400160405280600781526020017f41564f4341544f00000000000000000000000000000000000000000000000000815250905090565b60006111e161112b611597565b846111dc8560405180606001604052806025815260200161445c6025913960046000611155611597565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e689092919063ffffffff16565b61159f565b6001905092915050565b60006111ff6111f8611597565b848461176a565b6001905092915050565b611211611597565b73ffffffffffffffffffffffffffffffffffffffff1661122f61101f565b73ffffffffffffffffffffffffffffffffffffffff1614611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c90613d30565b60405180910390fd5b6001600e60156101000a81548160ff021916908315150217905550565b6112aa611597565b73ffffffffffffffffffffffffffffffffffffffff166112c861101f565b73ffffffffffffffffffffffffffffffffffffffff161461131e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131590613d30565b60405180910390fd5b6001600e60176101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113ca611597565b73ffffffffffffffffffffffffffffffffffffffff166113e861101f565b73ffffffffffffffffffffffffffffffffffffffff161461143e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143590613d30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a590613d10565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081836115799190613f53565b905092915050565b6000818361158f9190613f22565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160690613d90565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690613c70565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161175d9190613db0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d190613cb0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561184a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184190613cd0565b60405180910390fd5b6000811161188d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188490613d50565b60405180910390fd5b60011515600e60189054906101000a900460ff16151514156118c057683635c9adc5dea000008111156118bf57600080fd5b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561196b5750600c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119c15750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119d95750600e60169054906101000a900460ff165b15611a8957600a548111156119ed57600080fd5b42600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a3857600080fd5b601e42611a459190613e95565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60011515600e60179054906101000a900460ff1615151415611cfc576000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b4557600080fd5b505afa158015611b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7d91906137ee565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611bdf57600080fd5b505afa158015611bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1791906137ee565b6040518363ffffffff1660e01b8152600401611c34929190613c0a565b60206040518083038186803b158015611c4c57600080fd5b505afa158015611c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8491906137ee565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60186101000a81548160ff0219169083151502179055506000600e60176101000a81548160ff021916908315150217905550505b6000611d0730610d0b565b9050600e60149054906101000a900460ff16158015611d735750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611d8b5750600e60159054906101000a900460ff165b15611da457600f548110611da357611da281611f70565b5b5b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e4b5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e5557600090505b611e6185858584612012565b5050505050565b6000838311158290611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea79190613c4e565b60405180910390fd5b5082840390509392505050565b6000806000611eca612323565b91509150611ee1818361158190919063ffffffff16565b9250505090565b60008183611ef69190613e95565b905092915050565b6000806000806000806000806000611f158a6125f6565b9250925092506000806000611f338d8686611f2e611ebd565b612650565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b60008183611f689190613fad565b905092915050565b6001600e60146101000a81548160ff0219169083151502179055506000806000600c60049054906101000a900460ff1660ff1614611ff257611fcf6064611fc160328661156b90919063ffffffff16565b61158190919063ffffffff16565b9150611fda826126d9565b611fe34761293f565b8181611fef9190613e95565b90505b50506000600e60146101000a81548160ff02191690831515021790555050565b806120205761201f6129c1565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120c35750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120d8576120d3848484612af2565b61230f565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561217b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121905761218b848484612d52565b61230e565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122345750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561224957612244848484612fb2565b61230d565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122eb5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612300576122fb84848461317d565b61230c565b61230b848484612fb2565b5b5b5b5b8061231d5761231c613472565b5b50505050565b60008060006009549050600069152d02c7e14af6800000905060005b6008805490508110156125a95782600260006008848154811061236557612364614122565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061245357508160036000600884815481106123eb576123ea614122565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156124725760095469152d02c7e14af6800000945094505050506125f2565b612502600260006008848154811061248d5761248c614122565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611f5a90919063ffffffff16565b9250612594600360006008848154811061251f5761251e614122565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611f5a90919063ffffffff16565b915080806125a19061407b565b91505061233f565b506125c969152d02c7e14af680000060095461158190919063ffffffff16565b8210156125e95760095469152d02c7e14af68000009350935050506125f2565b81819350935050505b9091565b600080600080612605856134f2565b9050600061261286613533565b9050600061263b8261262d858a611f5a90919063ffffffff16565b611f5a90919063ffffffff16565b90508083839550955095505050509193909250565b600080600080612669858961156b90919063ffffffff16565b90506000612680868961156b90919063ffffffff16565b90506000612697878961156b90919063ffffffff16565b905060006126c0826126b28587611f5a90919063ffffffff16565b611f5a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600267ffffffffffffffff8111156126f6576126f5614151565b5b6040519080825280602002602001820160405280156127245781602001602082028036833780820191505090505b509050308160008151811061273c5761273b614122565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156127de57600080fd5b505afa1580156127f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281691906137ee565b8160018151811061282a57612829614122565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061289130600c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461159f565b600c60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084306128e961012c42611ee890919063ffffffff16565b6040518663ffffffff1660e01b8152600401612909959493929190613dcb565b600060405180830381600087803b15801561292357600080fd5b505af1158015612937573d6000803e3d6000fd5b505050505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156129a7573d6000803e3d6000fd5b506129bd61012c42611ee890919063ffffffff16565b5050565b6000600c60009054906101000a900460ff1660ff161480156129f557506000600c60029054906101000a900460ff1660ff16145b8015612a1357506000600c60049054906101000a900460ff1660ff16145b15612a1d57612af0565b600c60009054906101000a900460ff16600c60016101000a81548160ff021916908360ff160217905550600c60029054906101000a900460ff16600c60036101000a81548160ff021916908360ff160217905550600c60049054906101000a900460ff16600c60056101000a81548160ff021916908360ff1602179055506000600c60006101000a81548160ff021916908360ff1602179055506000600c60026101000a81548160ff021916908360ff1602179055506000600c60046101000a81548160ff021916908360ff1602179055505b565b600080600080600080612b0487611efe565b955095509550955095509550612b6287600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bf786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c8c85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cd88161358e565b612ce28483613733565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612d3f9190613db0565b60405180910390a3505050505050505050565b600080600080600080612d6487611efe565b955095509550955095509550612dc286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e5783600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612eec85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f388161358e565b612f428483613733565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612f9f9190613db0565b60405180910390a3505050505050505050565b600080600080600080612fc487611efe565b95509550955095509550955061302286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130b785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131038161358e565b61310d8483613733565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161316a9190613db0565b60405180910390a3505050505050505050565b60008060008060008061318f87611efe565b9550955095509550955095506131ed87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061328286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061331783600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133ac85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133f88161358e565b6134028483613733565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161345f9190613db0565b60405180910390a3505050505050505050565b600c60019054906101000a900460ff16600c60006101000a81548160ff021916908360ff160217905550600c60039054906101000a900460ff16600c60026101000a81548160ff021916908360ff160217905550600c60059054906101000a900460ff16600c60046101000a81548160ff021916908360ff160217905550565b600061352c606461351e600c60009054906101000a900460ff1660ff168561156b90919063ffffffff16565b61158190919063ffffffff16565b9050919050565b60006135876064613579600c60049054906101000a900460ff16600c60029054906101000a900460ff166135679190613eeb565b60ff168561156b90919063ffffffff16565b61158190919063ffffffff16565b9050919050565b6000613598611ebd565b905060006135af828461156b90919063ffffffff16565b905061360381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561372e576136ea83600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ee890919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61374882600954611f5a90919063ffffffff16565b60098190555061376381600b54611ee890919063ffffffff16565b600b819055505050565b60008135905061377c816143ee565b92915050565b600081519050613791816143ee565b92915050565b6000813590506137a681614405565b92915050565b6000813590506137bb8161441c565b92915050565b6000602082840312156137d7576137d6614180565b5b60006137e58482850161376d565b91505092915050565b60006020828403121561380457613803614180565b5b600061381284828501613782565b91505092915050565b6000806040838503121561383257613831614180565b5b60006138408582860161376d565b92505060206138518582860161376d565b9150509250929050565b60008060006060848603121561387457613873614180565b5b60006138828682870161376d565b93505060206138938682870161376d565b92505060406138a4868287016137ac565b9150509250925092565b600080604083850312156138c5576138c4614180565b5b60006138d38582860161376d565b92505060206138e4858286016137ac565b9150509250929050565b60006020828403121561390457613903614180565b5b600061391284828501613797565b91505092915050565b60006020828403121561393157613930614180565b5b600061393f848285016137ac565b91505092915050565b6000806040838503121561395f5761395e614180565b5b600061396d858286016137ac565b925050602061397e85828601613797565b9150509250929050565b600061399483836139a0565b60208301905092915050565b6139a981613fe1565b82525050565b6139b881613fe1565b82525050565b60006139c982613e50565b6139d38185613e73565b93506139de83613e40565b8060005b83811015613a0f5781516139f68882613988565b9750613a0183613e66565b9250506001810190506139e2565b5085935050505092915050565b613a2581613ff3565b82525050565b613a3481614036565b82525050565b6000613a4582613e5b565b613a4f8185613e84565b9350613a5f818560208601614048565b613a6881614185565b840191505092915050565b6000613a80601e83613e84565b9150613a8b82614196565b602082019050919050565b6000613aa3601c83613e84565b9150613aae826141bf565b602082019050919050565b6000613ac6602183613e84565b9150613ad1826141e8565b604082019050919050565b6000613ae9601f83613e84565b9150613af482614237565b602082019050919050565b6000613b0c601e83613e84565b9150613b1782614260565b602082019050919050565b6000613b2f602b83613e84565b9150613b3a82614289565b604082019050919050565b6000613b52602583613e84565b9150613b5d826142d8565b604082019050919050565b6000613b75602983613e84565b9150613b8082614327565b604082019050919050565b6000613b98602c83613e84565b9150613ba382614376565b604082019050919050565b6000613bbb602083613e84565b9150613bc6826143c5565b602082019050919050565b613bda8161401f565b82525050565b613be981614029565b82525050565b6000602082019050613c0460008301846139af565b92915050565b6000604082019050613c1f60008301856139af565b613c2c60208301846139af565b9392505050565b6000602082019050613c486000830184613a1c565b92915050565b60006020820190508181036000830152613c688184613a3a565b905092915050565b60006020820190508181036000830152613c8981613a73565b9050919050565b60006020820190508181036000830152613ca981613a96565b9050919050565b60006020820190508181036000830152613cc981613ab9565b9050919050565b60006020820190508181036000830152613ce981613adc565b9050919050565b60006020820190508181036000830152613d0981613aff565b9050919050565b60006020820190508181036000830152613d2981613b22565b9050919050565b60006020820190508181036000830152613d4981613b45565b9050919050565b60006020820190508181036000830152613d6981613b68565b9050919050565b60006020820190508181036000830152613d8981613b8b565b9050919050565b60006020820190508181036000830152613da981613bae565b9050919050565b6000602082019050613dc56000830184613bd1565b92915050565b600060a082019050613de06000830188613bd1565b613ded6020830187613a2b565b8181036040830152613dff81866139be565b9050613e0e60608301856139af565b613e1b6080830184613bd1565b9695505050505050565b6000602082019050613e3a6000830184613be0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613ea08261401f565b9150613eab8361401f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ee057613edf6140c4565b5b828201905092915050565b6000613ef682614029565b9150613f0183614029565b92508260ff03821115613f1757613f166140c4565b5b828201905092915050565b6000613f2d8261401f565b9150613f388361401f565b925082613f4857613f476140f3565b5b828204905092915050565b6000613f5e8261401f565b9150613f698361401f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613fa257613fa16140c4565b5b828202905092915050565b6000613fb88261401f565b9150613fc38361401f565b925082821015613fd657613fd56140c4565b5b828203905092915050565b6000613fec82613fff565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006140418261401f565b9050919050565b60005b8381101561406657808201518184015260208101905061404b565b83811115614075576000848401525b50505050565b60006140868261401f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140b9576140b86140c4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a20617070726f766520746f207a65726f20616464726573730000600082015250565b7f416d74206d757374206265206c657373207468616e20737570706c7900000000600082015250565b7f45524332303a207472616e736665722066726f6d207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220746f207a65726f206164647265737300600082015250565b7f416d74206d757374206265206c657373207468616e20746f74207265666c0000600082015250565b7f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d207a65726f2061646472657373600082015250565b6143f781613fe1565b811461440257600080fd5b50565b61440e81613ff3565b811461441957600080fd5b50565b6144258161401f565b811461443057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122076def3dcfa6f74c2d4dab532fdc65bf156f1a5b494ccc7c5de557e3703a65b8d64736f6c63430008070033
Deployed Bytecode Sourcemap
12885:16741:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15157:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16082:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15455:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16249:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18208:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15357:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16584:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17370:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25525:78;;;;;;;;;;;;;:::i;:::-;;21640:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17758:444;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21757:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17261:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15556:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;740:148;;;;;;;;;;;;;:::i;:::-;;25609:80;;;;;;;;;;;;;:::i;:::-;;17133:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;512:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25429:90;;;;;;;;;;;;;:::i;:::-;;15255:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16808:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15760:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25335:88;;;;;;;;;;;;;:::i;:::-;;25253:76;;;;;;;;;;;;;:::i;:::-;;15933:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;896:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15157:92;15203:13;15236:5;;;;;;;;;;;;;;;;;15229:12;;15157:92;:::o;16082:161::-;16157:4;16174:39;16183:12;:10;:12::i;:::-;16197:7;16206:6;16174:8;:39::i;:::-;16231:4;16224:11;;16082:161;;;;:::o;15455:95::-;15508:7;13493:12;15528:14;;15455:95;:::o;16249:329::-;16345:4;16362:36;16372:6;16380:9;16391:6;16362:9;:36::i;:::-;16409:139;16418:6;16425:12;:10;:12::i;:::-;16448:89;16486:6;16448:89;;;;;;;;;;;;;;;;;:11;:19;16460:6;16448:19;;;;;;;;;;;;;;;:33;16468:12;:10;:12::i;:::-;16448:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;16409:8;:139::i;:::-;16566:4;16559:11;;16249:329;;;;;:::o;18208:241::-;18275:7;18314;;18303;:18;;18295:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;18367:19;18389:10;:8;:10::i;:::-;18367:32;;18417:24;18429:11;18417:7;:11;;:24;;;;:::i;:::-;18410:31;;;18208:241;;;:::o;15357:92::-;15407:5;13779:1;15425:16;;15357:92;:::o;16584:218::-;16672:4;16689:83;16698:12;:10;:12::i;:::-;16712:7;16721:50;16760:10;16721:11;:25;16733:12;:10;:12::i;:::-;16721:25;;;;;;;;;;;;;;;:34;16747:7;16721:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;16689:8;:83::i;:::-;16790:4;16783:11;;16584:218;;;;:::o;17370:382::-;17422:14;17439:12;:10;:12::i;:::-;17422:29;;17471:11;:19;17483:6;17471:19;;;;;;;;;;;;;;;;;;;;;;;;;17470:20;17462:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;17551:15;17580:19;17591:7;17580:10;:19::i;:::-;17550:49;;;;;;;17628:28;17648:7;17628;:15;17636:6;17628:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17610:7;:15;17618:6;17610:15;;;;;;;;;;;;;;;:46;;;;17677:20;17689:7;17677;;:11;;:20;;;;:::i;:::-;17667:7;:30;;;;17721:23;17736:7;17721:10;;:14;;:23;;;;:::i;:::-;17708:10;:36;;;;17411:341;;17370:382;:::o;25525:78::-;658:12;:10;:12::i;:::-;647:23;;:7;:5;:7::i;:::-;:23;;;639:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;25591:4:::1;25578:10;;:17;;;;;;;;;;;;;;;;;;25525:78::o:0;21640:111::-;658:12;:10;:12::i;:::-;647:23;;:7;:5;:7::i;:::-;:23;;;639:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21739:4:::1;21709:18;:27;21728:7;21709:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;21640:111:::0;:::o;17758:444::-;17849:7;13493:12;17877:7;:18;;17869:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;17944:17;17939:256;;17979:15;18008:19;18019:7;18008:10;:19::i;:::-;17978:49;;;;;;;18049:7;18042:14;;;;;17939:256;18092:23;18127:19;18138:7;18127:10;:19::i;:::-;18089:57;;;;;;;18168:15;18161:22;;;17758:444;;;;;:::o;21757:124::-;21822:4;21846:18;:27;21865:7;21846:27;;;;;;;;;;;;;;;;;;;;;;;;;21839:34;;21757:124;;;:::o;17261:103::-;658:12;:10;:12::i;:::-;647:23;;:7;:5;:7::i;:::-;:23;;;639:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17351:5:::1;17333:15;;:23;;;;;;;;;;;;;;;;;;17261:103:::0;:::o;15556:198::-;15622:7;15646:11;:20;15658:7;15646:20;;;;;;;;;;;;;;;;;;;;;;;;;15642:49;;;15675:7;:16;15683:7;15675:16;;;;;;;;;;;;;;;;15668:23;;;;15642:49;15709:37;15729:7;:16;15737:7;15729:16;;;;;;;;;;;;;;;;15709:19;:37::i;:::-;15702:44;;15556:198;;;;:::o;740:148::-;658:12;:10;:12::i;:::-;647:23;;:7;:5;:7::i;:::-;:23;;;639:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;847:1:::1;810:40;;831:6;::::0;::::1;;;;;;;;810:40;;;;;;;;;;;;878:1;861:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;740:148::o:0;25609:80::-;658:12;:10;:12::i;:::-;647:23;;:7;:5;:7::i;:::-;:23;;;639:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;25676:5:::1;25663:10;;:18;;;;;;;;;;;;;;;;;;25609:80::o:0;17133:120::-;17201:4;17225:11;:20;17237:7;17225:20;;;;;;;;;;;;;;;;;;;;;;;;;17218:27;;17133:120;;;:::o;512:87::-;558:7;585:6;;;;;;;;;;;578:13;;512:87;:::o;25429:90::-;658:12;:10;:12::i;:::-;647:23;;:7;:5;:7::i;:::-;:23;;;639:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;25506:5:::1;25482:21;;:29;;;;;;;;;;;;;;;;;;25429:90::o:0;15255:96::-;15303:13;15336:7;;;;;;;;;;;;;;;;;15329:14;;15255:96;:::o;16808:319::-;16901:4;16918:179;16941:12;:10;:12::i;:::-;16968:7;16990:96;17029:15;16990:96;;;;;;;;;;;;;;;;;:11;:25;17002:12;:10;:12::i;:::-;16990:25;;;;;;;;;;;;;;;:34;17016:7;16990:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;16918:8;:179::i;:::-;17115:4;17108:11;;16808:319;;;;:::o;15760:167::-;15838:4;15855:42;15865:12;:10;:12::i;:::-;15879:9;15890:6;15855:9;:42::i;:::-;15915:4;15908:11;;15760:167;;;;:::o;25335:88::-;658:12;:10;:12::i;:::-;647:23;;:7;:5;:7::i;:::-;:23;;;639:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;25411:4:::1;25387:21;;:28;;;;;;;;;;;;;;;;;;25335:88::o:0;25253:76::-;658:12;:10;:12::i;:::-;647:23;;:7;:5;:7::i;:::-;:23;;;639:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;25317:4:::1;25303:11;;:18;;;;;;;;;;;;;;;;;;25253:76::o:0;15933:143::-;16014:7;16041:11;:18;16053:5;16041:18;;;;;;;;;;;;;;;:27;16060:7;16041:27;;;;;;;;;;;;;;;;16034:34;;15933:143;;;;:::o;896:249::-;658:12;:10;:12::i;:::-;647:23;;:7;:5;:7::i;:::-;:23;;;639:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1005:1:::1;985:22;;:8;:22;;;;977:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;1100:8;1071:38;;1092:6;::::0;::::1;;;;;;;;1071:38;;;;;;;;;;;;1129:8;1120:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;896:249:::0;:::o;2876:98::-;2934:7;2965:1;2961;:5;;;;:::i;:::-;2954:12;;2876:98;;;;:::o;2980:::-;3038:7;3069:1;3065;:5;;;;:::i;:::-;3058:12;;2980:98;;;;:::o;85:::-;138:7;165:10;158:17;;85:98;:::o;21887:325::-;21995:1;21978:19;;:5;:19;;;;21970:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22072:1;22053:21;;:7;:21;;;;22045:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22150:6;22120:11;:18;22132:5;22120:18;;;;;;;;;;;;;;;:27;22139:7;22120:27;;;;;;;;;;;;;;;:36;;;;22188:7;22172:32;;22181:5;22172:32;;;22197:6;22172:32;;;;;;:::i;:::-;;;;;;;;21887:325;;;:::o;22218:1568::-;22320:1;22304:18;;:4;:18;;;;22296:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22393:1;22379:16;;:2;:16;;;;22371:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22459:1;22450:6;:10;22442:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22535:4;22521:18;;:10;;;;;;;;;;;:18;;;22517:91;;;22574:21;22564:6;:31;;22556:40;;;;;;22517:91;22630:9;;;;;;;;;;;22622:17;;:4;:17;;;:47;;;;;22657:11;;;;;;;;;;;22643:26;;:2;:26;;;;22622:47;:75;;;;;22675:18;:22;22694:2;22675:22;;;;;;;;;;;;;;;;;;;;;;;;;22673:24;22622:75;:94;;;;;22701:15;;;;;;;;;;;22622:94;22618:296;;;22755:12;;22745:6;:22;;22737:31;;;;;;22814:15;22795:12;:16;22808:2;22795:16;;;;;;;;;;;;;;;;:34;22787:43;;;;;;22887:10;22868:15;:30;;;;:::i;:::-;22849:12;:16;22862:2;22849:16;;;;;;;;;;;;;;;:49;;;;22618:296;22942:4;22927:19;;:11;;;;;;;;;;;:19;;;22924:366;;;22963:31;23016:42;22963:96;;23088:12;23074:11;;:26;;;;;;;;;;;;;;;;;;23145:12;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23127:49;;;23185:4;23192:12;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23127:85;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23115:9;;:97;;;;;;;;;;;;;;;;;;23240:4;23227:10;;:17;;;;;;;;;;;;;;;;;;23273:5;23259:11;;:19;;;;;;;;;;;;;;;;;;22948:342;22924:366;23300:28;23331:24;23349:4;23331:9;:24::i;:::-;23300:55;;23371:16;;;;;;;;;;;23370:17;:36;;;;;23397:9;;;;;;;;;;;23391:15;;:2;:15;;;23370:36;:61;;;;;23410:21;;;;;;;;;;;23370:61;23366:223;;;23476:29;;23452:20;:53;23448:130;;23526:36;23541:20;23526:14;:36::i;:::-;23448:130;23366:223;23599:12;23614:4;23599:19;;23633:18;:24;23652:4;23633:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;23661:18;:22;23680:2;23661:22;;;;;;;;;;;;;;;;;;;;;;;;;23633:50;23629:98;;;23710:5;23700:15;;23629:98;23737:41;23752:4;23758:2;23762:6;23770:7;23737:14;:41::i;:::-;22285:1501;;22218:1568;;;:::o;3188:206::-;3274:7;3332:1;3327;:6;;3335:12;3319:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3374:1;3370;:5;3363:12;;3188:206;;;;;:::o;19826:164::-;19868:7;19889:15;19906;19925:19;:17;:19::i;:::-;19888:56;;;;19962:20;19974:7;19962;:11;;:20;;;;:::i;:::-;19955:27;;;;19826:164;:::o;2668:98::-;2726:7;2757:1;2753;:5;;;;:::i;:::-;2746:12;;2668:98;;;;:::o;18643:414::-;18702:7;18710;18718;18726;18734;18742;18763:23;18788:12;18802:18;18824:20;18836:7;18824:11;:20::i;:::-;18762:82;;;;;;18856:15;18873:23;18898:12;18914:50;18926:7;18935:4;18941:10;18953;:8;:10::i;:::-;18914:11;:50::i;:::-;18855:109;;;;;;18983:7;18992:15;19009:4;19015:15;19032:4;19038:10;18975:74;;;;;;;;;;;;;;;;;;18643:414;;;;;;;:::o;2772:98::-;2830:7;2861:1;2857;:5;;;;:::i;:::-;2850:12;;2772:98;;;;:::o;23792:408::-;14719:4;14700:16;;:23;;;;;;;;;;;;;;;;;;23877:19:::1;23911:22:::0;23963:1:::1;23952:7;;;;;;;;;;;:12;;;23948:245;;23995:37;24028:3;23995:28;24020:2;23995:20;:24;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;23981:51;;24047:29;24064:11;24047:16;:29::i;:::-;24091:30;24099:21;24091:7;:30::i;:::-;24170:11;24153:14;:28;;;;:::i;:::-;24136:45;;23948:245;23866:334;;14765:5:::0;14746:16;;:24;;;;;;;;;;;;;;;;;;23792:408;:::o;25695:788::-;25805:7;25800:28;;25814:14;:12;:14::i;:::-;25800:28;25843:11;:19;25855:6;25843:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;25867:11;:22;25879:9;25867:22;;;;;;;;;;;;;;;;;;;;;;;;;25866:23;25843:46;25839:597;;;25906:48;25928:6;25936:9;25947:6;25906:21;:48::i;:::-;25839:597;;;25977:11;:19;25989:6;25977:19;;;;;;;;;;;;;;;;;;;;;;;;;25976:20;:46;;;;;26000:11;:22;26012:9;26000:22;;;;;;;;;;;;;;;;;;;;;;;;;25976:46;25972:464;;;26039:46;26059:6;26067:9;26078:6;26039:19;:46::i;:::-;25972:464;;;26108:11;:19;26120:6;26108:19;;;;;;;;;;;;;;;;;;;;;;;;;26107:20;:47;;;;;26132:11;:22;26144:9;26132:22;;;;;;;;;;;;;;;;;;;;;;;;;26131:23;26107:47;26103:333;;;26171:44;26189:6;26197:9;26208:6;26171:17;:44::i;:::-;26103:333;;;26237:11;:19;26249:6;26237:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;26260:11;:22;26272:9;26260:22;;;;;;;;;;;;;;;;;;;;;;;;;26237:45;26233:203;;;26299:48;26321:6;26329:9;26340:6;26299:21;:48::i;:::-;26233:203;;;26380:44;26398:6;26406:9;26417:6;26380:17;:44::i;:::-;26233:203;26103:333;25972:464;25839:597;26451:7;26446:29;;26460:15;:13;:15::i;:::-;26446:29;25695:788;;;;:::o;19996:556::-;20047:7;20056;20076:15;20094:7;;20076:25;;20112:15;13493:12;20112:25;;20153:9;20148:289;20172:9;:16;;;;20168:1;:20;20148:289;;;20238:7;20214;:21;20222:9;20232:1;20222:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20214:21;;;;;;;;;;;;;;;;:31;:66;;;;20273:7;20249;:21;20257:9;20267:1;20257:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20249:21;;;;;;;;;;;;;;;;:31;20214:66;20210:97;;;20290:7;;13493:12;20282:25;;;;;;;;;20210:97;20332:34;20344:7;:21;20352:9;20362:1;20352:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20344:21;;;;;;;;;;;;;;;;20332:7;:11;;:34;;;;:::i;:::-;20322:44;;20391:34;20403:7;:21;20411:9;20421:1;20411:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20403:21;;;;;;;;;;;;;;;;20391:7;:11;;:34;;;;:::i;:::-;20381:44;;20190:3;;;;;:::i;:::-;;;;20148:289;;;;20461:20;13493:12;20461:7;;:11;;:20;;;;:::i;:::-;20451:7;:30;20447:61;;;20491:7;;13493:12;20483:25;;;;;;;;20447:61;20527:7;20536;20519:25;;;;;;19996:556;;;:::o;19063:327::-;19122:7;19130;19138;19158:12;19173:24;19189:7;19173:15;:24::i;:::-;19158:39;;19208:18;19229:30;19251:7;19229:21;:30::i;:::-;19208:51;;19270:23;19296:33;19318:10;19296:17;19308:4;19296:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;19270:59;;19348:15;19365:4;19371:10;19340:42;;;;;;;;;19063:327;;;;;:::o;19396:424::-;19508:7;19516;19524;19544:15;19562:24;19574:11;19562:7;:11;;:24;;;;:::i;:::-;19544:42;;19597:12;19612:21;19621:11;19612:4;:8;;:21;;;;:::i;:::-;19597:36;;19644:18;19665:27;19680:11;19665:10;:14;;:27;;;;:::i;:::-;19644:48;;19703:23;19729:33;19751:10;19729:17;19741:4;19729:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;19703:59;;19781:7;19790:15;19807:4;19773:39;;;;;;;;;;19396:424;;;;;;;;:::o;24206:496::-;24272:21;24310:1;24296:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24272:40;;24341:4;24323;24328:1;24323:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24367:11;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24357:4;24362:1;24357:7;;;;;;;;:::i;:::-;;;;;;;:28;;;;;;;;;;;24396:58;24413:4;24428:11;;;;;;;;;;;24442;24396:8;:58::i;:::-;24465:11;;;;;;;;;;;:62;;;24542:11;24568:1;24612:4;24639;24659:24;24679:3;24659:15;:19;;:24;;;;:::i;:::-;24465:229;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24261:441;24206:496;:::o;24708:121::-;24760:9;;;;;;;;;;;:18;;:26;24779:6;24760:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24797:24;24817:3;24797:15;:19;;:24;;;;:::i;:::-;;24708:121;:::o;21194:285::-;21252:1;21241:7;;;;;;;;;;;:12;;;:28;;;;;21268:1;21257:7;;;;;;;;;;;:12;;;21241:28;:44;;;;;21284:1;21273:7;;;;;;;;;;;:12;;;21241:44;21237:57;;;21287:7;;21237:57;21324:7;;;;;;;;;;;21306:15;;:25;;;;;;;;;;;;;;;;;;21360:7;;;;;;;;;;;21342:15;;:25;;;;;;;;;;;;;;;;;;21396:7;;;;;;;;;;;21378:15;;:25;;;;;;;;;;;;;;;;;;21426:1;21416:7;;:11;;;;;;;;;;;;;;;;;;21448:1;21438:7;;:11;;;;;;;;;;;;;;;;;;21470:1;21460:7;;:11;;;;;;;;;;;;;;;;;;21194:285;:::o;27752:650::-;27867:15;27897:23;27935:12;27962:23;28000:12;28027:18;28059:19;28070:7;28059:10;:19::i;:::-;27852:226;;;;;;;;;;;;28107:28;28127:7;28107;:15;28115:6;28107:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28089:7;:15;28097:6;28089:15;;;;;;;;;;;;;;;:46;;;;28164:28;28184:7;28164;:15;28172:6;28164:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28146:7;:15;28154:6;28146:15;;;;;;;;;;;;;;;:46;;;;28224:39;28247:15;28224:7;:18;28232:9;28224:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28203:7;:18;28211:9;28203:18;;;;;;;;;;;;;;;:60;;;;28274:26;28289:10;28274:14;:26::i;:::-;28311:23;28323:4;28329;28311:11;:23::i;:::-;28367:9;28350:44;;28359:6;28350:44;;;28378:15;28350:44;;;;;;:::i;:::-;;;;;;;;27841:561;;;;;;27752:650;;;:::o;27084:662::-;27197:15;27227:23;27265:12;27292:23;27330:12;27357:18;27389:19;27400:7;27389:10;:19::i;:::-;27182:226;;;;;;;;;;;;27437:28;27457:7;27437;:15;27445:6;27437:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27419:7;:15;27427:6;27419:15;;;;;;;;;;;;;;;:46;;;;27497:39;27520:15;27497:7;:18;27505:9;27497:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27476:7;:18;27484:9;27476:18;;;;;;;;;;;;;;;:60;;;;27568:39;27591:15;27568:7;:18;27576:9;27568:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27547:7;:18;27555:9;27547:18;;;;;;;;;;;;;;;:60;;;;27618:26;27633:10;27618:14;:26::i;:::-;27655:23;27667:4;27673;27655:11;:23::i;:::-;27711:9;27694:44;;27703:6;27694:44;;;27722:15;27694:44;;;;;;:::i;:::-;;;;;;;;27171:575;;;;;;27084:662;;;:::o;26489:589::-;26600:15;26630:23;26668:12;26695:23;26733:12;26760:18;26792:19;26803:7;26792:10;:19::i;:::-;26585:226;;;;;;;;;;;;26840:28;26860:7;26840;:15;26848:6;26840:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26822:7;:15;26830:6;26822:15;;;;;;;;;;;;;;;:46;;;;26900:39;26923:15;26900:7;:18;26908:9;26900:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26879:7;:18;26887:9;26879:18;;;;;;;;;;;;;;;:60;;;;26950:26;26965:10;26950:14;:26::i;:::-;26987:23;26999:4;27005;26987:11;:23::i;:::-;27043:9;27026:44;;27035:6;27026:44;;;27054:15;27026:44;;;;;;:::i;:::-;;;;;;;;26574:504;;;;;;26489:589;;;:::o;28408:721::-;28523:15;28553:23;28591:12;28618:23;28656:12;28683:18;28715:19;28726:7;28715:10;:19::i;:::-;28508:226;;;;;;;;;;;;28763:28;28783:7;28763;:15;28771:6;28763:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28745:7;:15;28753:6;28745:15;;;;;;;;;;;;;;;:46;;;;28820:28;28840:7;28820;:15;28828:6;28820:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28802:7;:15;28810:6;28802:15;;;;;;;;;;;;;;;:46;;;;28880:39;28903:15;28880:7;:18;28888:9;28880:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28859:7;:18;28867:9;28859:18;;;;;;;;;;;;;;;:60;;;;28951:39;28974:15;28951:7;:18;28959:9;28951:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28930:7;:18;28938:9;28930:18;;;;;;;;;;;;;;;:60;;;;29001:26;29016:10;29001:14;:26::i;:::-;29038:23;29050:4;29056;29038:11;:23::i;:::-;29094:9;29077:44;;29086:6;29077:44;;;29105:15;29077:44;;;;;;:::i;:::-;;;;;;;;28497:632;;;;;;28408:721;;;:::o;21485:149::-;21539:15;;;;;;;;;;;21529:7;;:25;;;;;;;;;;;;;;;;;;21575:15;;;;;;;;;;;21565:7;;:25;;;;;;;;;;;;;;;;;;21611:15;;;;;;;;;;;21601:7;;:25;;;;;;;;;;;;;;;;;;21485:149::o;20906:130::-;20970:7;20997:31;21022:5;20997:20;21009:7;;;;;;;;;;;20997:20;;:7;:11;;:20;;;;:::i;:::-;:24;;:31;;;;:::i;:::-;20990:38;;20906:130;;;:::o;21042:146::-;21112:7;21139:41;21174:5;21139:30;21161:7;;;;;;;;;;;21151;;;;;;;;;;;:17;;;;:::i;:::-;21139:30;;:7;:11;;:30;;;;:::i;:::-;:34;;:41;;;;:::i;:::-;21132:48;;21042:146;;;:::o;20558:342::-;20621:19;20643:10;:8;:10::i;:::-;20621:32;;20664:18;20685:27;20700:11;20685:10;:14;;:27;;;;:::i;:::-;20664:48;;20748:38;20775:10;20748:7;:22;20764:4;20748:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;20723:7;:22;20739:4;20723:22;;;;;;;;;;;;;;;:63;;;;20801:11;:26;20821:4;20801:26;;;;;;;;;;;;;;;;;;;;;;;;;20797:95;;;20854:38;20881:10;20854:7;:22;20870:4;20854:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;20829:7;:22;20845:4;20829:22;;;;;;;;;;;;;;;:63;;;;20797:95;20610:290;;20558:342;:::o;18490:147::-;18568:17;18580:4;18568:7;;:11;;:17;;;;:::i;:::-;18558:7;:27;;;;18609:20;18624:4;18609:10;;:14;;:20;;;;:::i;:::-;18596:10;:33;;;;18490:147;;:::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;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:329::-;644:6;693:2;681:9;672:7;668:23;664:32;661:119;;;699:79;;:::i;:::-;661:119;819:1;844:53;889:7;880:6;869:9;865:22;844:53;:::i;:::-;834:63;;790:117;585:329;;;;:::o;920:351::-;990:6;1039:2;1027:9;1018:7;1014:23;1010:32;1007:119;;;1045:79;;:::i;:::-;1007:119;1165:1;1190:64;1246:7;1237:6;1226:9;1222:22;1190:64;:::i;:::-;1180:74;;1136:128;920:351;;;;:::o;1277:474::-;1345:6;1353;1402:2;1390:9;1381:7;1377:23;1373:32;1370:119;;;1408:79;;:::i;:::-;1370:119;1528:1;1553:53;1598:7;1589:6;1578:9;1574:22;1553:53;:::i;:::-;1543:63;;1499:117;1655:2;1681:53;1726:7;1717:6;1706:9;1702:22;1681:53;:::i;:::-;1671:63;;1626:118;1277:474;;;;;:::o;1757:619::-;1834:6;1842;1850;1899:2;1887:9;1878:7;1874:23;1870:32;1867:119;;;1905:79;;:::i;:::-;1867:119;2025:1;2050:53;2095:7;2086:6;2075:9;2071:22;2050:53;:::i;:::-;2040:63;;1996:117;2152:2;2178:53;2223:7;2214:6;2203:9;2199:22;2178:53;:::i;:::-;2168:63;;2123:118;2280:2;2306:53;2351:7;2342:6;2331:9;2327:22;2306:53;:::i;:::-;2296:63;;2251:118;1757:619;;;;;:::o;2382:474::-;2450:6;2458;2507:2;2495:9;2486:7;2482:23;2478:32;2475:119;;;2513:79;;:::i;:::-;2475:119;2633:1;2658:53;2703:7;2694:6;2683:9;2679:22;2658:53;:::i;:::-;2648:63;;2604:117;2760:2;2786:53;2831:7;2822:6;2811:9;2807:22;2786:53;:::i;:::-;2776:63;;2731:118;2382:474;;;;;:::o;2862:323::-;2918:6;2967:2;2955:9;2946:7;2942:23;2938:32;2935:119;;;2973:79;;:::i;:::-;2935:119;3093:1;3118:50;3160:7;3151:6;3140:9;3136:22;3118:50;:::i;:::-;3108:60;;3064:114;2862:323;;;;:::o;3191:329::-;3250:6;3299:2;3287:9;3278:7;3274:23;3270:32;3267:119;;;3305:79;;:::i;:::-;3267:119;3425:1;3450:53;3495:7;3486:6;3475:9;3471:22;3450:53;:::i;:::-;3440:63;;3396:117;3191:329;;;;:::o;3526:468::-;3591:6;3599;3648:2;3636:9;3627:7;3623:23;3619:32;3616:119;;;3654:79;;:::i;:::-;3616:119;3774:1;3799:53;3844:7;3835:6;3824:9;3820:22;3799:53;:::i;:::-;3789:63;;3745:117;3901:2;3927:50;3969:7;3960:6;3949:9;3945:22;3927:50;:::i;:::-;3917:60;;3872:115;3526:468;;;;;:::o;4000:179::-;4069:10;4090:46;4132:3;4124:6;4090:46;:::i;:::-;4168:4;4163:3;4159:14;4145:28;;4000:179;;;;:::o;4185:108::-;4262:24;4280:5;4262:24;:::i;:::-;4257:3;4250:37;4185:108;;:::o;4299:118::-;4386:24;4404:5;4386:24;:::i;:::-;4381:3;4374:37;4299:118;;:::o;4453:732::-;4572:3;4601:54;4649:5;4601:54;:::i;:::-;4671:86;4750:6;4745:3;4671:86;:::i;:::-;4664:93;;4781:56;4831:5;4781:56;:::i;:::-;4860:7;4891:1;4876:284;4901:6;4898:1;4895:13;4876:284;;;4977:6;4971:13;5004:63;5063:3;5048:13;5004:63;:::i;:::-;4997:70;;5090:60;5143:6;5090:60;:::i;:::-;5080:70;;4936:224;4923:1;4920;4916:9;4911:14;;4876:284;;;4880:14;5176:3;5169:10;;4577:608;;;4453:732;;;;:::o;5191:109::-;5272:21;5287:5;5272:21;:::i;:::-;5267:3;5260:34;5191:109;;:::o;5306:147::-;5401:45;5440:5;5401:45;:::i;:::-;5396:3;5389:58;5306:147;;:::o;5459:364::-;5547:3;5575:39;5608:5;5575:39;:::i;:::-;5630:71;5694:6;5689:3;5630:71;:::i;:::-;5623:78;;5710:52;5755:6;5750:3;5743:4;5736:5;5732:16;5710:52;:::i;:::-;5787:29;5809:6;5787:29;:::i;:::-;5782:3;5778:39;5771:46;;5551:272;5459:364;;;;:::o;5829:366::-;5971:3;5992:67;6056:2;6051:3;5992:67;:::i;:::-;5985:74;;6068:93;6157:3;6068:93;:::i;:::-;6186:2;6181:3;6177:12;6170:19;;5829:366;;;:::o;6201:::-;6343:3;6364:67;6428:2;6423:3;6364:67;:::i;:::-;6357:74;;6440:93;6529:3;6440:93;:::i;:::-;6558:2;6553:3;6549:12;6542:19;;6201:366;;;:::o;6573:::-;6715:3;6736:67;6800:2;6795:3;6736:67;:::i;:::-;6729:74;;6812:93;6901:3;6812:93;:::i;:::-;6930:2;6925:3;6921:12;6914:19;;6573:366;;;:::o;6945:::-;7087:3;7108:67;7172:2;7167:3;7108:67;:::i;:::-;7101:74;;7184:93;7273:3;7184:93;:::i;:::-;7302:2;7297:3;7293:12;7286:19;;6945:366;;;:::o;7317:::-;7459:3;7480:67;7544:2;7539:3;7480:67;:::i;:::-;7473:74;;7556:93;7645:3;7556:93;:::i;:::-;7674:2;7669:3;7665:12;7658:19;;7317:366;;;:::o;7689:::-;7831:3;7852:67;7916:2;7911:3;7852:67;:::i;:::-;7845:74;;7928:93;8017:3;7928:93;:::i;:::-;8046:2;8041:3;8037:12;8030:19;;7689:366;;;:::o;8061:::-;8203:3;8224:67;8288:2;8283:3;8224:67;:::i;:::-;8217:74;;8300:93;8389:3;8300:93;:::i;:::-;8418:2;8413:3;8409:12;8402:19;;8061:366;;;:::o;8433:::-;8575:3;8596:67;8660:2;8655:3;8596:67;:::i;:::-;8589:74;;8672:93;8761:3;8672:93;:::i;:::-;8790:2;8785:3;8781:12;8774:19;;8433:366;;;:::o;8805:::-;8947:3;8968:67;9032:2;9027:3;8968:67;:::i;:::-;8961:74;;9044:93;9133:3;9044:93;:::i;:::-;9162:2;9157:3;9153:12;9146:19;;8805:366;;;:::o;9177:::-;9319:3;9340:67;9404:2;9399:3;9340:67;:::i;:::-;9333:74;;9416:93;9505:3;9416:93;:::i;:::-;9534:2;9529:3;9525:12;9518:19;;9177:366;;;:::o;9549:118::-;9636:24;9654:5;9636:24;:::i;:::-;9631:3;9624:37;9549:118;;:::o;9673:112::-;9756:22;9772:5;9756:22;:::i;:::-;9751:3;9744:35;9673:112;;:::o;9791:222::-;9884:4;9922:2;9911:9;9907:18;9899:26;;9935:71;10003:1;9992:9;9988:17;9979:6;9935:71;:::i;:::-;9791:222;;;;:::o;10019:332::-;10140:4;10178:2;10167:9;10163:18;10155:26;;10191:71;10259:1;10248:9;10244:17;10235:6;10191:71;:::i;:::-;10272:72;10340:2;10329:9;10325:18;10316:6;10272:72;:::i;:::-;10019:332;;;;;:::o;10357:210::-;10444:4;10482:2;10471:9;10467:18;10459:26;;10495:65;10557:1;10546:9;10542:17;10533:6;10495:65;:::i;:::-;10357:210;;;;:::o;10573:313::-;10686:4;10724:2;10713:9;10709:18;10701:26;;10773:9;10767:4;10763:20;10759:1;10748:9;10744:17;10737:47;10801:78;10874:4;10865:6;10801:78;:::i;:::-;10793:86;;10573:313;;;;:::o;10892:419::-;11058:4;11096:2;11085:9;11081:18;11073:26;;11145:9;11139:4;11135:20;11131:1;11120:9;11116:17;11109:47;11173:131;11299:4;11173:131;:::i;:::-;11165:139;;10892:419;;;:::o;11317:::-;11483:4;11521:2;11510:9;11506:18;11498:26;;11570:9;11564:4;11560:20;11556:1;11545:9;11541:17;11534:47;11598:131;11724:4;11598:131;:::i;:::-;11590:139;;11317:419;;;:::o;11742:::-;11908:4;11946:2;11935:9;11931:18;11923:26;;11995:9;11989:4;11985:20;11981:1;11970:9;11966:17;11959:47;12023:131;12149:4;12023:131;:::i;:::-;12015:139;;11742:419;;;:::o;12167:::-;12333:4;12371:2;12360:9;12356:18;12348:26;;12420:9;12414:4;12410:20;12406:1;12395:9;12391:17;12384:47;12448:131;12574:4;12448:131;:::i;:::-;12440:139;;12167:419;;;:::o;12592:::-;12758:4;12796:2;12785:9;12781:18;12773:26;;12845:9;12839:4;12835:20;12831:1;12820:9;12816:17;12809:47;12873:131;12999:4;12873:131;:::i;:::-;12865:139;;12592:419;;;:::o;13017:::-;13183:4;13221:2;13210:9;13206:18;13198:26;;13270:9;13264:4;13260:20;13256:1;13245:9;13241:17;13234:47;13298:131;13424:4;13298:131;:::i;:::-;13290:139;;13017:419;;;:::o;13442:::-;13608:4;13646:2;13635:9;13631:18;13623:26;;13695:9;13689:4;13685:20;13681:1;13670:9;13666:17;13659:47;13723:131;13849:4;13723:131;:::i;:::-;13715:139;;13442:419;;;:::o;13867:::-;14033:4;14071:2;14060:9;14056:18;14048:26;;14120:9;14114:4;14110:20;14106:1;14095:9;14091:17;14084:47;14148:131;14274:4;14148:131;:::i;:::-;14140:139;;13867:419;;;:::o;14292:::-;14458:4;14496:2;14485:9;14481:18;14473:26;;14545:9;14539:4;14535:20;14531:1;14520:9;14516:17;14509:47;14573:131;14699:4;14573:131;:::i;:::-;14565:139;;14292:419;;;:::o;14717:::-;14883:4;14921:2;14910:9;14906:18;14898:26;;14970:9;14964:4;14960:20;14956:1;14945:9;14941:17;14934:47;14998:131;15124:4;14998:131;:::i;:::-;14990:139;;14717:419;;;:::o;15142:222::-;15235:4;15273:2;15262:9;15258:18;15250:26;;15286:71;15354:1;15343:9;15339:17;15330:6;15286:71;:::i;:::-;15142:222;;;;:::o;15370:831::-;15633:4;15671:3;15660:9;15656:19;15648:27;;15685:71;15753:1;15742:9;15738:17;15729:6;15685:71;:::i;:::-;15766:80;15842:2;15831:9;15827:18;15818:6;15766:80;:::i;:::-;15893:9;15887:4;15883:20;15878:2;15867:9;15863:18;15856:48;15921:108;16024:4;16015:6;15921:108;:::i;:::-;15913:116;;16039:72;16107:2;16096:9;16092:18;16083:6;16039:72;:::i;:::-;16121:73;16189:3;16178:9;16174:19;16165:6;16121:73;:::i;:::-;15370:831;;;;;;;;:::o;16207:214::-;16296:4;16334:2;16323:9;16319:18;16311:26;;16347:67;16411:1;16400:9;16396:17;16387:6;16347:67;:::i;:::-;16207:214;;;;:::o;16508:132::-;16575:4;16598:3;16590:11;;16628:4;16623:3;16619:14;16611:22;;16508:132;;;:::o;16646:114::-;16713:6;16747:5;16741:12;16731:22;;16646:114;;;:::o;16766:99::-;16818:6;16852:5;16846:12;16836:22;;16766:99;;;:::o;16871:113::-;16941:4;16973;16968:3;16964:14;16956:22;;16871:113;;;:::o;16990:184::-;17089:11;17123:6;17118:3;17111:19;17163:4;17158:3;17154:14;17139:29;;16990:184;;;;:::o;17180:169::-;17264:11;17298:6;17293:3;17286:19;17338:4;17333:3;17329:14;17314:29;;17180:169;;;;:::o;17355:305::-;17395:3;17414:20;17432:1;17414:20;:::i;:::-;17409:25;;17448:20;17466:1;17448:20;:::i;:::-;17443:25;;17602:1;17534:66;17530:74;17527:1;17524:81;17521:107;;;17608:18;;:::i;:::-;17521:107;17652:1;17649;17645:9;17638:16;;17355:305;;;;:::o;17666:237::-;17704:3;17723:18;17739:1;17723:18;:::i;:::-;17718:23;;17755:18;17771:1;17755:18;:::i;:::-;17750:23;;17845:1;17839:4;17835:12;17832:1;17829:19;17826:45;;;17851:18;;:::i;:::-;17826:45;17895:1;17892;17888:9;17881:16;;17666:237;;;;:::o;17909:185::-;17949:1;17966:20;17984:1;17966:20;:::i;:::-;17961:25;;18000:20;18018:1;18000:20;:::i;:::-;17995:25;;18039:1;18029:35;;18044:18;;:::i;:::-;18029:35;18086:1;18083;18079:9;18074:14;;17909:185;;;;:::o;18100:348::-;18140:7;18163:20;18181:1;18163:20;:::i;:::-;18158:25;;18197:20;18215:1;18197:20;:::i;:::-;18192:25;;18385:1;18317:66;18313:74;18310:1;18307:81;18302:1;18295:9;18288:17;18284:105;18281:131;;;18392:18;;:::i;:::-;18281:131;18440:1;18437;18433:9;18422:20;;18100:348;;;;:::o;18454:191::-;18494:4;18514:20;18532:1;18514:20;:::i;:::-;18509:25;;18548:20;18566:1;18548:20;:::i;:::-;18543:25;;18587:1;18584;18581:8;18578:34;;;18592:18;;:::i;:::-;18578:34;18637:1;18634;18630:9;18622:17;;18454:191;;;;:::o;18651:96::-;18688:7;18717:24;18735:5;18717:24;:::i;:::-;18706:35;;18651:96;;;:::o;18753:90::-;18787:7;18830:5;18823:13;18816:21;18805:32;;18753:90;;;:::o;18849:126::-;18886:7;18926:42;18919:5;18915:54;18904:65;;18849:126;;;:::o;18981:77::-;19018:7;19047:5;19036:16;;18981:77;;;:::o;19064:86::-;19099:7;19139:4;19132:5;19128:16;19117:27;;19064:86;;;:::o;19156:121::-;19214:9;19247:24;19265:5;19247:24;:::i;:::-;19234:37;;19156:121;;;:::o;19283:307::-;19351:1;19361:113;19375:6;19372:1;19369:13;19361:113;;;19460:1;19455:3;19451:11;19445:18;19441:1;19436:3;19432:11;19425:39;19397:2;19394:1;19390:10;19385:15;;19361:113;;;19492:6;19489:1;19486:13;19483:101;;;19572:1;19563:6;19558:3;19554:16;19547:27;19483:101;19332:258;19283:307;;;:::o;19596:233::-;19635:3;19658:24;19676:5;19658:24;:::i;:::-;19649:33;;19704:66;19697:5;19694:77;19691:103;;;19774:18;;:::i;:::-;19691:103;19821:1;19814:5;19810:13;19803:20;;19596:233;;;:::o;19835:180::-;19883:77;19880:1;19873:88;19980:4;19977:1;19970:15;20004:4;20001:1;19994:15;20021:180;20069:77;20066:1;20059:88;20166:4;20163:1;20156:15;20190:4;20187:1;20180:15;20207:180;20255:77;20252:1;20245:88;20352:4;20349:1;20342:15;20376:4;20373:1;20366:15;20393:180;20441:77;20438:1;20431:88;20538:4;20535:1;20528:15;20562:4;20559:1;20552:15;20702:117;20811:1;20808;20801:12;20825:102;20866:6;20917:2;20913:7;20908:2;20901:5;20897:14;20893:28;20883:38;;20825:102;;;:::o;20933:180::-;21073:32;21069:1;21061:6;21057:14;21050:56;20933:180;:::o;21119:178::-;21259:30;21255:1;21247:6;21243:14;21236:54;21119:178;:::o;21303:220::-;21443:34;21439:1;21431:6;21427:14;21420:58;21512:3;21507:2;21499:6;21495:15;21488:28;21303:220;:::o;21529:181::-;21669:33;21665:1;21657:6;21653:14;21646:57;21529:181;:::o;21716:180::-;21856:32;21852:1;21844:6;21840:14;21833:56;21716:180;:::o;21902:230::-;22042:34;22038:1;22030:6;22026:14;22019:58;22111:13;22106:2;22098:6;22094:15;22087:38;21902:230;:::o;22138:224::-;22278:34;22274:1;22266:6;22262:14;22255:58;22347:7;22342:2;22334:6;22330:15;22323:32;22138:224;:::o;22368:228::-;22508:34;22504:1;22496:6;22492:14;22485:58;22577:11;22572:2;22564:6;22560:15;22553:36;22368:228;:::o;22602:231::-;22742:34;22738:1;22730:6;22726:14;22719:58;22811:14;22806:2;22798:6;22794:15;22787:39;22602:231;:::o;22839:182::-;22979:34;22975:1;22967:6;22963:14;22956:58;22839:182;:::o;23027:122::-;23100:24;23118:5;23100:24;:::i;:::-;23093:5;23090:35;23080:63;;23139:1;23136;23129:12;23080:63;23027:122;:::o;23155:116::-;23225:21;23240:5;23225:21;:::i;:::-;23218:5;23215:32;23205:60;;23261:1;23258;23251:12;23205:60;23155:116;:::o;23277:122::-;23350:24;23368:5;23350:24;:::i;:::-;23343:5;23340:35;23330:63;;23389:1;23386;23379:12;23330:63;23277:122;:::o
Swarm Source
ipfs://76def3dcfa6f74c2d4dab532fdc65bf156f1a5b494ccc7c5de557e3703a65b8d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.