Latest 25 from a total of 38,097 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 91054885 | 30 mins ago | IN | 0 FTM | 0.00036238 | ||||
Transfer | 91054661 | 34 mins ago | IN | 0 FTM | 0.00063285 | ||||
Transfer | 91053399 | 55 mins ago | IN | 0 FTM | 0.00035585 | ||||
Transfer | 91053379 | 55 mins ago | IN | 0 FTM | 0.0097142 | ||||
Transfer | 91053304 | 57 mins ago | IN | 0 FTM | 0.00035858 | ||||
Transfer | 91052009 | 1 hr ago | IN | 0 FTM | 0.00032707 | ||||
Transfer | 91051940 | 1 hr ago | IN | 0 FTM | 0.00033532 | ||||
Transfer | 91050904 | 1 hr ago | IN | 0 FTM | 0.00040049 | ||||
Transfer | 91050118 | 1 hr ago | IN | 0 FTM | 0.0006769 | ||||
Transfer | 91050075 | 1 hr ago | IN | 0 FTM | 0.00044623 | ||||
Transfer | 91049921 | 1 hr ago | IN | 0 FTM | 0.00328113 | ||||
Transfer | 91049835 | 1 hr ago | IN | 0 FTM | 0.00044979 | ||||
Transfer | 91049777 | 1 hr ago | IN | 0 FTM | 0.00045126 | ||||
Transfer | 91049755 | 1 hr ago | IN | 0 FTM | 0.00042875 | ||||
Transfer | 91049617 | 2 hrs ago | IN | 0 FTM | 0.00046213 | ||||
Transfer | 91049538 | 2 hrs ago | IN | 0 FTM | 0.00016315 | ||||
Transfer | 91049484 | 2 hrs ago | IN | 0 FTM | 0.00016153 | ||||
Transfer | 91049423 | 2 hrs ago | IN | 0 FTM | 0.00016539 | ||||
Transfer | 91049357 | 2 hrs ago | IN | 0 FTM | 0.00016982 | ||||
Transfer | 91049285 | 2 hrs ago | IN | 0 FTM | 0.00017556 | ||||
Transfer | 91049187 | 2 hrs ago | IN | 0 FTM | 0.01894659 | ||||
Transfer | 91049112 | 2 hrs ago | IN | 0 FTM | 0.00042174 | ||||
Transfer | 91049009 | 2 hrs ago | IN | 0 FTM | 0.0001458 | ||||
Transfer | 91048885 | 2 hrs ago | IN | 0 FTM | 0.00014606 | ||||
Transfer | 91048801 | 2 hrs ago | IN | 0 FTM | 0.01201915 |
Loading...
Loading
Contract Name:
JEFE
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2022-05-09 */ /** SPDX-License-Identifier: MIT JEFE TOKEN THE ONE AND ONLY BOSS #JEFE 2% tax to holders, 1% tax to liquidity , 2% to vault #helping heroes around the world */ pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface FRC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable is Context { address private _previousOwner; uint256 private _lockTime; 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(), "Ownable: Caller is not owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getTime() public view returns (uint256) { return block.timestamp; } } // pragma solidity >=0.5.0; 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; } // pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract JEFE is Context, FRC20, Ownable { using SafeMath for uint256; using Address for address; address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; //vault address address public _vaultWalletAddress; //total supply and token general setup uint8 private _decimals = 9; uint256 public _taxFee = 2; uint256 private _previousTaxFee = _taxFee; uint256 public _vaultFee = 2; uint256 private _previousVaultFee = _vaultFee; uint256 public _liquidityFee = 1; uint256 private _previousLiquidityFee = _liquidityFee; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000 * 10**6 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "JEFE TOKEN"; string private _symbol = "JEFE"; //unirouting IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public _maxTxAmount = 3000000 * 10**6 * 10**9; uint256 private numTokensSellToAddToLiquidity = 5000000 * 10**6 * 10**9; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } /* adding option for updating pools for future pancake swap v3 */ constructor () { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0xF491e7B69E4244ad4002BC14e878a34207E38c29); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function getVaultAddress() public view returns (address account) { return _vaultWalletAddress; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _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 totalFees() public view returns (uint256) { return _tFeeTotal; } 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, "Amount 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, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tVault) = _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); _takeVault(tVault); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function setVaultAddress(address vaultAddress) external onlyOwner() { _vaultWalletAddress = vaultAddress; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { _taxFee = taxFee; } function setVaultFeePercent(uint256 vaultFee) external onlyOwner() { _vaultFee = vaultFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { _liquidityFee = liquidityFee; } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**2 ); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } //to recieve ETH from uniswapV2Router when swaping 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) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tVault) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, tVault, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity, tVault); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tVault = calculateVaultFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(tVault); return (tTransferAmount, tFee, tLiquidity, tVault); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tVault, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rVault= tVault.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(rVault); 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 _takeVault(uint256 tVault) private { uint256 currentRate = _getRate(); uint256 rVault = tVault.mul(currentRate); _rOwned[_vaultWalletAddress] = _rOwned[_vaultWalletAddress].add(rVault); if(_isExcluded[_vaultWalletAddress]) _tOwned[_vaultWalletAddress] = _tOwned[_vaultWalletAddress].add(tVault); } function calculateVaultFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_vaultFee).div( 10**2 ); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**2 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousVaultFee = _vaultFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _vaultFee = 0; _liquidityFee = 0; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(from != owner() && to != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } //transfer amount, it will take tax, vault, liquidity fee _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // split the contract balance into halves uint256 half = contractTokenBalance.div(2); uint256 otherHalf = contractTokenBalance.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } //this method is responsible for taking all fee, if takeFee is true 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, uint256 tVault) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeVault(tVault); _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, uint256 tVault) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeVault(tVault); _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, uint256 tVault) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeVault(tVault); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; _vaultFee = _previousVaultFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } }
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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_vaultFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_vaultWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultAddress","outputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"vaultAddress","type":"address"}],"name":"setVaultAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"vaultFee","type":"uint256"}],"name":"setVaultFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e060405261dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525060098060146101000a81548160ff021916908360ff1602179055506002600a55600a54600b556002600c55600c54600d556001600e55600e54600f5569d3c21bcecceda10000006010556010546000196200009891906200082a565b600019620000a791906200077b565b6011556040518060400160405280600a81526020017f4a45464520544f4b454e0000000000000000000000000000000000000000000081525060139080519060200190620000f79291906200061c565b506040518060400160405280600481526020017f4a4546450000000000000000000000000000000000000000000000000000000081525060149080519060200190620001459291906200061c565b506001601560016101000a81548160ff02191690831515021790555068a2a15d09519be0000060165569010f0cf064dd592000006017553480156200018957600080fd5b5060006200019c620005ea60201b60201c565b905080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506011546003600062000252620005ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073f491e7b69e4244ad4002bc14e878a34207e38c2990508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002f057600080fd5b505afa15801562000305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032b9190620006e3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038e57600080fd5b505afa158015620003a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c99190620006e3565b6040518363ffffffff1660e01b8152600401620003e892919062000731565b602060405180830381600087803b1580156200040357600080fd5b505af115801562000418573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043e9190620006e3565b73ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160066000620004c1620005f260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200057a620005ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601054604051620005db91906200075e565b60405180910390a35062000909565b600033905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200062a90620007f4565b90600052602060002090601f0160209004810192826200064e57600085556200069a565b82601f106200066957805160ff19168380011785556200069a565b828001600101855582156200069a579182015b82811115620006995782518255916020019190600101906200067c565b5b509050620006a99190620006ad565b5090565b5b80821115620006c8576000816000905550600101620006ae565b5090565b600081519050620006dd81620008ef565b92915050565b600060208284031215620006f657600080fd5b60006200070684828501620006cc565b91505092915050565b6200071a81620007b6565b82525050565b6200072b81620007ea565b82525050565b60006040820190506200074860008301856200070f565b6200075760208301846200070f565b9392505050565b600060208201905062000775600083018462000720565b92915050565b60006200078882620007ea565b91506200079583620007ea565b925082821015620007ab57620007aa62000862565b5b828203905092915050565b6000620007c382620007ca565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200080d57607f821691505b60208210811415620008245762000823620008c0565b5b50919050565b60006200083782620007ea565b91506200084483620007ea565b92508262000857576200085662000891565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620008fa81620007b6565b81146200090657600080fd5b50565b60805160601c60a05160601c60c05160601c614dd56200096c60003960008181610fad0152611ebe015260008181610a6501528181612c1501528181612d2b01528181612d5201528181612dee0152612e1501526000610b6c0152614dd56000f3fe6080604052600436106102295760003560e01c8063557ed1ba1161012357806395d89b41116100ab578063dd62ed3e1161006f578063dd62ed3e14610840578063ea2f0b371461087d578063ee8b3525146108a6578063f2fde38b146108d1578063ff910563146108fa57610230565b806395d89b4114610749578063a457c2d714610774578063a9059cbb146107b1578063c49b9a80146107ee578063d543dbeb1461081757610230565b8063715018a6116100f2578063715018a61461068a5780637d1db4a5146106a157806385535cc5146106cc5780638da5cb5b146106f55780638ee88c531461072057610230565b8063557ed1ba146105cc57806365cacaa4146105f75780636bc87c3a1461062257806370a082311461064d57610230565b8063313ce567116101b15780634549b039116101755780634549b039146104d157806346c3a2fd1461050e57806349bd5a5e146105395780634a74bb02146105645780635342acb41461058f57610230565b8063313ce567146103ec57806339509351146104175780633b124fe7146104545780633bd5d1731461047f578063437823ec146104a857610230565b80631694505e116101f85780631694505e146102f157806318160ddd1461031c57806323b872dd1461034757806327c8f835146103845780632d838119146103af57610230565b8063061c82d01461023557806306fdde031461025e578063095ea7b31461028957806313114a9d146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061025c60048036038101906102579190613f6d565b610923565b005b34801561026a57600080fd5b506102736109a9565b60405161028091906143b2565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab9190613f08565b610a3b565b6040516102bd919061437c565b60405180910390f35b3480156102d257600080fd5b506102db610a59565b6040516102e89190614574565b60405180910390f35b3480156102fd57600080fd5b50610306610a63565b6040516103139190614397565b60405180910390f35b34801561032857600080fd5b50610331610a87565b60405161033e9190614574565b60405180910390f35b34801561035357600080fd5b5061036e60048036038101906103699190613eb9565b610a91565b60405161037b919061437c565b60405180910390f35b34801561039057600080fd5b50610399610b6a565b6040516103a69190614300565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190613f6d565b610b8e565b6040516103e39190614574565b60405180910390f35b3480156103f857600080fd5b50610401610bfc565b60405161040e9190614620565b60405180910390f35b34801561042357600080fd5b5061043e60048036038101906104399190613f08565b610c13565b60405161044b919061437c565b60405180910390f35b34801561046057600080fd5b50610469610cc6565b6040516104769190614574565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a19190613f6d565b610ccc565b005b3480156104b457600080fd5b506104cf60048036038101906104ca9190613e2b565b610e48565b005b3480156104dd57600080fd5b506104f860048036038101906104f39190613f96565b610f1f565b6040516105059190614574565b60405180910390f35b34801561051a57600080fd5b50610523610fa5565b6040516105309190614574565b60405180910390f35b34801561054557600080fd5b5061054e610fab565b60405161055b9190614300565b60405180910390f35b34801561057057600080fd5b50610579610fcf565b604051610586919061437c565b60405180910390f35b34801561059b57600080fd5b506105b660048036038101906105b19190613e2b565b610fe2565b6040516105c3919061437c565b60405180910390f35b3480156105d857600080fd5b506105e1611038565b6040516105ee9190614574565b60405180910390f35b34801561060357600080fd5b5061060c611040565b6040516106199190614300565b60405180910390f35b34801561062e57600080fd5b5061063761106a565b6040516106449190614574565b60405180910390f35b34801561065957600080fd5b50610674600480360381019061066f9190613e2b565b611070565b6040516106819190614574565b60405180910390f35b34801561069657600080fd5b5061069f61115b565b005b3480156106ad57600080fd5b506106b6611298565b6040516106c39190614574565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee9190613e2b565b61129e565b005b34801561070157600080fd5b5061070a61135e565b6040516107179190614300565b60405180910390f35b34801561072c57600080fd5b5061074760048036038101906107429190613f6d565b611388565b005b34801561075557600080fd5b5061075e61140e565b60405161076b91906143b2565b60405180910390f35b34801561078057600080fd5b5061079b60048036038101906107969190613f08565b6114a0565b6040516107a8919061437c565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d39190613f08565b61156d565b6040516107e5919061437c565b60405180910390f35b3480156107fa57600080fd5b5061081560048036038101906108109190613f44565b61158b565b005b34801561082357600080fd5b5061083e60048036038101906108399190613f6d565b61165b565b005b34801561084c57600080fd5b5061086760048036038101906108629190613e7d565b611708565b6040516108749190614574565b60405180910390f35b34801561088957600080fd5b506108a4600480360381019061089f9190613e2b565b61178f565b005b3480156108b257600080fd5b506108bb611866565b6040516108c89190614300565b60405180910390f35b3480156108dd57600080fd5b506108f860048036038101906108f39190613e2b565b61188c565b005b34801561090657600080fd5b50610921600480360381019061091c9190613f6d565b611a38565b005b61092b611abe565b73ffffffffffffffffffffffffffffffffffffffff1661094961135e565b73ffffffffffffffffffffffffffffffffffffffff161461099f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099690614474565b60405180910390fd5b80600a8190555050565b6060601380546109b890614863565b80601f01602080910402602001604051908101604052809291908181526020018280546109e490614863565b8015610a315780601f10610a0657610100808354040283529160200191610a31565b820191906000526020600020905b815481529060010190602001808311610a1457829003601f168201915b5050505050905090565b6000610a4f610a48611abe565b8484611ac6565b6001905092915050565b6000601254905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601054905090565b6000610a9e848484611c91565b610b5f84610aaa611abe565b610b5a85604051806060016040528060288152602001614d5360289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b10611abe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ffe9092919063ffffffff16565b611ac6565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601154821115610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc906143f4565b60405180910390fd5b6000610bdf612062565b9050610bf4818461208d90919063ffffffff16565b915050919050565b6000600960149054906101000a900460ff16905090565b6000610cbc610c20611abe565b84610cb78560056000610c31611abe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b611ac6565b6001905092915050565b600a5481565b6000610cd6611abe565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5c90614554565b60405180910390fd5b6000610d7083612135565b5050505050509050610dca81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219d90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e228160115461219d90919063ffffffff16565b601181905550610e3d836012546120d790919063ffffffff16565b601281905550505050565b610e50611abe565b73ffffffffffffffffffffffffffffffffffffffff16610e6e61135e565b73ffffffffffffffffffffffffffffffffffffffff1614610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb90614474565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601054831115610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d90614494565b60405180910390fd5b81610f87576000610f7684612135565b505050505050905080915050610f9f565b6000610f9284612135565b5050505050915050809150505b92915050565b600c5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b601560019054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600042905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561110b57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611156565b611153600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b8e565b90505b919050565b611163611abe565b73ffffffffffffffffffffffffffffffffffffffff1661118161135e565b73ffffffffffffffffffffffffffffffffffffffff16146111d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ce90614474565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6112a6611abe565b73ffffffffffffffffffffffffffffffffffffffff166112c461135e565b73ffffffffffffffffffffffffffffffffffffffff161461131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190614474565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611390611abe565b73ffffffffffffffffffffffffffffffffffffffff166113ae61135e565b73ffffffffffffffffffffffffffffffffffffffff1614611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90614474565b60405180910390fd5b80600e8190555050565b60606014805461141d90614863565b80601f016020809104026020016040519081016040528092919081815260200182805461144990614863565b80156114965780601f1061146b57610100808354040283529160200191611496565b820191906000526020600020905b81548152906001019060200180831161147957829003601f168201915b5050505050905090565b60006115636114ad611abe565b8461155e85604051806060016040528060258152602001614d7b60259139600560006114d7611abe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ffe9092919063ffffffff16565b611ac6565b6001905092915050565b600061158161157a611abe565b8484611c91565b6001905092915050565b611593611abe565b73ffffffffffffffffffffffffffffffffffffffff166115b161135e565b73ffffffffffffffffffffffffffffffffffffffff1614611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe90614474565b60405180910390fd5b80601560016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611650919061437c565b60405180910390a150565b611663611abe565b73ffffffffffffffffffffffffffffffffffffffff1661168161135e565b73ffffffffffffffffffffffffffffffffffffffff16146116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90614474565b60405180910390fd5b6116ff60646116f1836010546121e790919063ffffffff16565b61208d90919063ffffffff16565b60168190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611797611abe565b73ffffffffffffffffffffffffffffffffffffffff166117b561135e565b73ffffffffffffffffffffffffffffffffffffffff161461180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290614474565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611894611abe565b73ffffffffffffffffffffffffffffffffffffffff166118b261135e565b73ffffffffffffffffffffffffffffffffffffffff1614611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ff90614474565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f90614414565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a40611abe565b73ffffffffffffffffffffffffffffffffffffffff16611a5e61135e565b73ffffffffffffffffffffffffffffffffffffffff1614611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aab90614474565b60405180910390fd5b80600c8190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2d90614534565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9d90614434565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c849190614574565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf890614514565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d68906143d4565b60405180910390fd5b60008111611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab906144f4565b60405180910390fd5b611dbc61135e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e2a5750611dfa61135e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e7557601654811115611e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6b906144b4565b60405180910390fd5b5b6000611e8030611070565b90506016548110611e915760165490505b60006017548210159050808015611eb55750601560009054906101000a900460ff16155b8015611f0d57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f255750601560019054906101000a900460ff165b15611f39576017549150611f3882612262565b5b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fe05750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611fea57600090505b611ff686868684612338565b505050505050565b6000838311158290612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d91906143b2565b60405180910390fd5b50600083856120559190614771565b9050809150509392505050565b600080600061206f612649565b91509150612086818361208d90919063ffffffff16565b9250505090565b60006120cf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612994565b905092915050565b60008082846120e69190614690565b90508381101561212b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212290614454565b60405180910390fd5b8091505092915050565b600080600080600080600080600080600061214f8c6129f7565b935093509350935060008060006121708f87878761216b612062565b612a76565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b60006121df83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ffe565b905092915050565b6000808314156121fa576000905061225c565b600082846122089190614717565b905082848261221791906146e6565b14612257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224e906144d4565b60405180910390fd5b809150505b92915050565b6001601560006101000a81548160ff021916908315150217905550600061229360028361208d90919063ffffffff16565b905060006122aa828461219d90919063ffffffff16565b905060004790506122ba83612b2a565b60006122cf824761219d90919063ffffffff16565b90506122db8382612de8565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161230e939291906145e9565b60405180910390a1505050506000601560006101000a81548160ff02191690831515021790555050565b8061234657612345612ed8565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123e95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123fe576123f9848484612f2c565b612635565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124a15750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124b6576124b184848461319a565b612634565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561255a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561256f5761256a848484613408565b612633565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126115750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612626576126218484846135e1565b612632565b612631848484613408565b5b5b5b5b80612643576126426138e4565b5b50505050565b600080600060115490506000601054905060005b600880549050811015612957578260036000600884815481106126a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806127bd5750816004600060088481548110612755577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156127d45760115460105494509450505050612990565b61288a6003600060088481548110612815577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461219d90919063ffffffff16565b925061294260046000600884815481106128cd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361219d90919063ffffffff16565b9150808061294f90614895565b91505061265d565b5061296f60105460115461208d90919063ffffffff16565b82101561298757601154601054935093505050612990565b81819350935050505b9091565b600080831182906129db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d291906143b2565b60405180910390fd5b50600083856129ea91906146e6565b9050809150509392505050565b6000806000806000612a0886613901565b90506000612a1587613932565b90506000612a2288613963565b90506000612a5d82612a4f85612a41888e61219d90919063ffffffff16565b61219d90919063ffffffff16565b61219d90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080612a8f858a6121e790919063ffffffff16565b90506000612aa6868a6121e790919063ffffffff16565b90506000612abd878a6121e790919063ffffffff16565b90506000612ad4888a6121e790919063ffffffff16565b90506000612b0f82612b0185612af3888a61219d90919063ffffffff16565b61219d90919063ffffffff16565b61219d90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6000600267ffffffffffffffff811115612b6d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612b9b5781602001602082028036833780820191505090505b5090503081600081518110612bd9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612c7957600080fd5b505afa158015612c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb19190613e54565b81600181518110612ceb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d50307f000000000000000000000000000000000000000000000000000000000000000084611ac6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612db295949392919061458f565b600060405180830381600087803b158015612dcc57600080fd5b505af1158015612de0573d6000803e3d6000fd5b505050505050565b612e13307f000000000000000000000000000000000000000000000000000000000000000084611ac6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612e5d61135e565b426040518863ffffffff1660e01b8152600401612e7f9695949392919061431b565b6060604051808303818588803b158015612e9857600080fd5b505af1158015612eac573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ed19190613fd2565b5050505050565b6000600a54148015612eec57506000600e54145b15612ef657612f2a565b600a54600b81905550600c54600d81905550600e54600f819055506000600a819055506000600c819055506000600e819055505b565b6000806000806000806000612f4088612135565b9650965096509650965096509650612fa088600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219d90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061303587600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219d90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130ca86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061311682613994565b61311f81613b39565b6131298584613d88565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516131869190614574565b60405180910390a350505050505050505050565b60008060008060008060006131ae88612135565b965096509650965096509650965061320e87600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219d90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132a384600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061333886600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061338482613994565b61338d81613b39565b6133978584613d88565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516133f49190614574565b60405180910390a350505050505050505050565b600080600080600080600061341c88612135565b965096509650965096509650965061347c87600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219d90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061351186600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061355d82613994565b61356681613b39565b6135708584613d88565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516135cd9190614574565b60405180910390a350505050505050505050565b60008060008060008060006135f588612135565b965096509650965096509650965061365588600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219d90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136ea87600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219d90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061377f84600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061381486600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061386082613994565b61386981613b39565b6138738584613d88565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516138d09190614574565b60405180910390a350505050505050505050565b600b54600a81905550600f54600e81905550600d54600c81905550565b600061392b606461391d600a54856121e790919063ffffffff16565b61208d90919063ffffffff16565b9050919050565b600061395c606461394e600e54856121e790919063ffffffff16565b61208d90919063ffffffff16565b9050919050565b600061398d606461397f600c54856121e790919063ffffffff16565b61208d90919063ffffffff16565b9050919050565b600061399e612062565b905060006139b582846121e790919063ffffffff16565b9050613a0981600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b3457613af083600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6000613b43612062565b90506000613b5a82846121e790919063ffffffff16565b9050613bd08160036000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b60036000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060076000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613d8357613d1d8360046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b60046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613d9d8260115461219d90919063ffffffff16565b601181905550613db8816012546120d790919063ffffffff16565b6012819055505050565b600081359050613dd181614d0d565b92915050565b600081519050613de681614d0d565b92915050565b600081359050613dfb81614d24565b92915050565b600081359050613e1081614d3b565b92915050565b600081519050613e2581614d3b565b92915050565b600060208284031215613e3d57600080fd5b6000613e4b84828501613dc2565b91505092915050565b600060208284031215613e6657600080fd5b6000613e7484828501613dd7565b91505092915050565b60008060408385031215613e9057600080fd5b6000613e9e85828601613dc2565b9250506020613eaf85828601613dc2565b9150509250929050565b600080600060608486031215613ece57600080fd5b6000613edc86828701613dc2565b9350506020613eed86828701613dc2565b9250506040613efe86828701613e01565b9150509250925092565b60008060408385031215613f1b57600080fd5b6000613f2985828601613dc2565b9250506020613f3a85828601613e01565b9150509250929050565b600060208284031215613f5657600080fd5b6000613f6484828501613dec565b91505092915050565b600060208284031215613f7f57600080fd5b6000613f8d84828501613e01565b91505092915050565b60008060408385031215613fa957600080fd5b6000613fb785828601613e01565b9250506020613fc885828601613dec565b9150509250929050565b600080600060608486031215613fe757600080fd5b6000613ff586828701613e16565b935050602061400686828701613e16565b925050604061401786828701613e16565b9150509250925092565b600061402d8383614039565b60208301905092915050565b614042816147a5565b82525050565b614051816147a5565b82525050565b60006140628261464b565b61406c818561466e565b93506140778361463b565b8060005b838110156140a857815161408f8882614021565b975061409a83614661565b92505060018101905061407b565b5085935050505092915050565b6140be816147b7565b82525050565b6140cd816147fa565b82525050565b6140dc8161481e565b82525050565b60006140ed82614656565b6140f7818561467f565b9350614107818560208601614830565b6141108161496b565b840191505092915050565b600061412860238361467f565b91506141338261497c565b604082019050919050565b600061414b602a8361467f565b9150614156826149cb565b604082019050919050565b600061416e60268361467f565b915061417982614a1a565b604082019050919050565b600061419160228361467f565b915061419c82614a69565b604082019050919050565b60006141b4601b8361467f565b91506141bf82614ab8565b602082019050919050565b60006141d7601c8361467f565b91506141e282614ae1565b602082019050919050565b60006141fa601f8361467f565b915061420582614b0a565b602082019050919050565b600061421d60288361467f565b915061422882614b33565b604082019050919050565b600061424060218361467f565b915061424b82614b82565b604082019050919050565b600061426360298361467f565b915061426e82614bd1565b604082019050919050565b600061428660258361467f565b915061429182614c20565b604082019050919050565b60006142a960248361467f565b91506142b482614c6f565b604082019050919050565b60006142cc602c8361467f565b91506142d782614cbe565b604082019050919050565b6142eb816147e3565b82525050565b6142fa816147ed565b82525050565b60006020820190506143156000830184614048565b92915050565b600060c0820190506143306000830189614048565b61433d60208301886142e2565b61434a60408301876140d3565b61435760608301866140d3565b6143646080830185614048565b61437160a08301846142e2565b979650505050505050565b600060208201905061439160008301846140b5565b92915050565b60006020820190506143ac60008301846140c4565b92915050565b600060208201905081810360008301526143cc81846140e2565b905092915050565b600060208201905081810360008301526143ed8161411b565b9050919050565b6000602082019050818103600083015261440d8161413e565b9050919050565b6000602082019050818103600083015261442d81614161565b9050919050565b6000602082019050818103600083015261444d81614184565b9050919050565b6000602082019050818103600083015261446d816141a7565b9050919050565b6000602082019050818103600083015261448d816141ca565b9050919050565b600060208201905081810360008301526144ad816141ed565b9050919050565b600060208201905081810360008301526144cd81614210565b9050919050565b600060208201905081810360008301526144ed81614233565b9050919050565b6000602082019050818103600083015261450d81614256565b9050919050565b6000602082019050818103600083015261452d81614279565b9050919050565b6000602082019050818103600083015261454d8161429c565b9050919050565b6000602082019050818103600083015261456d816142bf565b9050919050565b600060208201905061458960008301846142e2565b92915050565b600060a0820190506145a460008301886142e2565b6145b160208301876140d3565b81810360408301526145c38186614057565b90506145d26060830185614048565b6145df60808301846142e2565b9695505050505050565b60006060820190506145fe60008301866142e2565b61460b60208301856142e2565b61461860408301846142e2565b949350505050565b600060208201905061463560008301846142f1565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061469b826147e3565b91506146a6836147e3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146db576146da6148de565b5b828201905092915050565b60006146f1826147e3565b91506146fc836147e3565b92508261470c5761470b61490d565b5b828204905092915050565b6000614722826147e3565b915061472d836147e3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614766576147656148de565b5b828202905092915050565b600061477c826147e3565b9150614787836147e3565b92508282101561479a576147996148de565b5b828203905092915050565b60006147b0826147c3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006148058261480c565b9050919050565b6000614817826147c3565b9050919050565b6000614829826147e3565b9050919050565b60005b8381101561484e578082015181840152602081019050614833565b8381111561485d576000848401525b50505050565b6000600282049050600182168061487b57607f821691505b6020821081141561488f5761488e61493c565b5b50919050565b60006148a0826147e3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148d3576148d26148de565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2043616c6c6572206973206e6f74206f776e657200000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b614d16816147a5565b8114614d2157600080fd5b50565b614d2d816147b7565b8114614d3857600080fd5b50565b614d44816147e3565b8114614d4f57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209428f0cf695b0adeda082e5b7c6f14cab0947cf875267b12450bd0bdafc70af164736f6c63430008040033
Deployed Bytecode
0x6080604052600436106102295760003560e01c8063557ed1ba1161012357806395d89b41116100ab578063dd62ed3e1161006f578063dd62ed3e14610840578063ea2f0b371461087d578063ee8b3525146108a6578063f2fde38b146108d1578063ff910563146108fa57610230565b806395d89b4114610749578063a457c2d714610774578063a9059cbb146107b1578063c49b9a80146107ee578063d543dbeb1461081757610230565b8063715018a6116100f2578063715018a61461068a5780637d1db4a5146106a157806385535cc5146106cc5780638da5cb5b146106f55780638ee88c531461072057610230565b8063557ed1ba146105cc57806365cacaa4146105f75780636bc87c3a1461062257806370a082311461064d57610230565b8063313ce567116101b15780634549b039116101755780634549b039146104d157806346c3a2fd1461050e57806349bd5a5e146105395780634a74bb02146105645780635342acb41461058f57610230565b8063313ce567146103ec57806339509351146104175780633b124fe7146104545780633bd5d1731461047f578063437823ec146104a857610230565b80631694505e116101f85780631694505e146102f157806318160ddd1461031c57806323b872dd1461034757806327c8f835146103845780632d838119146103af57610230565b8063061c82d01461023557806306fdde031461025e578063095ea7b31461028957806313114a9d146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061025c60048036038101906102579190613f6d565b610923565b005b34801561026a57600080fd5b506102736109a9565b60405161028091906143b2565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab9190613f08565b610a3b565b6040516102bd919061437c565b60405180910390f35b3480156102d257600080fd5b506102db610a59565b6040516102e89190614574565b60405180910390f35b3480156102fd57600080fd5b50610306610a63565b6040516103139190614397565b60405180910390f35b34801561032857600080fd5b50610331610a87565b60405161033e9190614574565b60405180910390f35b34801561035357600080fd5b5061036e60048036038101906103699190613eb9565b610a91565b60405161037b919061437c565b60405180910390f35b34801561039057600080fd5b50610399610b6a565b6040516103a69190614300565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190613f6d565b610b8e565b6040516103e39190614574565b60405180910390f35b3480156103f857600080fd5b50610401610bfc565b60405161040e9190614620565b60405180910390f35b34801561042357600080fd5b5061043e60048036038101906104399190613f08565b610c13565b60405161044b919061437c565b60405180910390f35b34801561046057600080fd5b50610469610cc6565b6040516104769190614574565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a19190613f6d565b610ccc565b005b3480156104b457600080fd5b506104cf60048036038101906104ca9190613e2b565b610e48565b005b3480156104dd57600080fd5b506104f860048036038101906104f39190613f96565b610f1f565b6040516105059190614574565b60405180910390f35b34801561051a57600080fd5b50610523610fa5565b6040516105309190614574565b60405180910390f35b34801561054557600080fd5b5061054e610fab565b60405161055b9190614300565b60405180910390f35b34801561057057600080fd5b50610579610fcf565b604051610586919061437c565b60405180910390f35b34801561059b57600080fd5b506105b660048036038101906105b19190613e2b565b610fe2565b6040516105c3919061437c565b60405180910390f35b3480156105d857600080fd5b506105e1611038565b6040516105ee9190614574565b60405180910390f35b34801561060357600080fd5b5061060c611040565b6040516106199190614300565b60405180910390f35b34801561062e57600080fd5b5061063761106a565b6040516106449190614574565b60405180910390f35b34801561065957600080fd5b50610674600480360381019061066f9190613e2b565b611070565b6040516106819190614574565b60405180910390f35b34801561069657600080fd5b5061069f61115b565b005b3480156106ad57600080fd5b506106b6611298565b6040516106c39190614574565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee9190613e2b565b61129e565b005b34801561070157600080fd5b5061070a61135e565b6040516107179190614300565b60405180910390f35b34801561072c57600080fd5b5061074760048036038101906107429190613f6d565b611388565b005b34801561075557600080fd5b5061075e61140e565b60405161076b91906143b2565b60405180910390f35b34801561078057600080fd5b5061079b60048036038101906107969190613f08565b6114a0565b6040516107a8919061437c565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d39190613f08565b61156d565b6040516107e5919061437c565b60405180910390f35b3480156107fa57600080fd5b5061081560048036038101906108109190613f44565b61158b565b005b34801561082357600080fd5b5061083e60048036038101906108399190613f6d565b61165b565b005b34801561084c57600080fd5b5061086760048036038101906108629190613e7d565b611708565b6040516108749190614574565b60405180910390f35b34801561088957600080fd5b506108a4600480360381019061089f9190613e2b565b61178f565b005b3480156108b257600080fd5b506108bb611866565b6040516108c89190614300565b60405180910390f35b3480156108dd57600080fd5b506108f860048036038101906108f39190613e2b565b61188c565b005b34801561090657600080fd5b50610921600480360381019061091c9190613f6d565b611a38565b005b61092b611abe565b73ffffffffffffffffffffffffffffffffffffffff1661094961135e565b73ffffffffffffffffffffffffffffffffffffffff161461099f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099690614474565b60405180910390fd5b80600a8190555050565b6060601380546109b890614863565b80601f01602080910402602001604051908101604052809291908181526020018280546109e490614863565b8015610a315780601f10610a0657610100808354040283529160200191610a31565b820191906000526020600020905b815481529060010190602001808311610a1457829003601f168201915b5050505050905090565b6000610a4f610a48611abe565b8484611ac6565b6001905092915050565b6000601254905090565b7f000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c2981565b6000601054905090565b6000610a9e848484611c91565b610b5f84610aaa611abe565b610b5a85604051806060016040528060288152602001614d5360289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b10611abe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ffe9092919063ffffffff16565b611ac6565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6000601154821115610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc906143f4565b60405180910390fd5b6000610bdf612062565b9050610bf4818461208d90919063ffffffff16565b915050919050565b6000600960149054906101000a900460ff16905090565b6000610cbc610c20611abe565b84610cb78560056000610c31611abe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b611ac6565b6001905092915050565b600a5481565b6000610cd6611abe565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5c90614554565b60405180910390fd5b6000610d7083612135565b5050505050509050610dca81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219d90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e228160115461219d90919063ffffffff16565b601181905550610e3d836012546120d790919063ffffffff16565b601281905550505050565b610e50611abe565b73ffffffffffffffffffffffffffffffffffffffff16610e6e61135e565b73ffffffffffffffffffffffffffffffffffffffff1614610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb90614474565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601054831115610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d90614494565b60405180910390fd5b81610f87576000610f7684612135565b505050505050905080915050610f9f565b6000610f9284612135565b5050505050915050809150505b92915050565b600c5481565b7f000000000000000000000000d7f1dd1b6edbafd9a2bd7fc3caf39a13b830737581565b601560019054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600042905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561110b57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611156565b611153600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b8e565b90505b919050565b611163611abe565b73ffffffffffffffffffffffffffffffffffffffff1661118161135e565b73ffffffffffffffffffffffffffffffffffffffff16146111d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ce90614474565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6112a6611abe565b73ffffffffffffffffffffffffffffffffffffffff166112c461135e565b73ffffffffffffffffffffffffffffffffffffffff161461131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190614474565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611390611abe565b73ffffffffffffffffffffffffffffffffffffffff166113ae61135e565b73ffffffffffffffffffffffffffffffffffffffff1614611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90614474565b60405180910390fd5b80600e8190555050565b60606014805461141d90614863565b80601f016020809104026020016040519081016040528092919081815260200182805461144990614863565b80156114965780601f1061146b57610100808354040283529160200191611496565b820191906000526020600020905b81548152906001019060200180831161147957829003601f168201915b5050505050905090565b60006115636114ad611abe565b8461155e85604051806060016040528060258152602001614d7b60259139600560006114d7611abe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ffe9092919063ffffffff16565b611ac6565b6001905092915050565b600061158161157a611abe565b8484611c91565b6001905092915050565b611593611abe565b73ffffffffffffffffffffffffffffffffffffffff166115b161135e565b73ffffffffffffffffffffffffffffffffffffffff1614611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe90614474565b60405180910390fd5b80601560016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611650919061437c565b60405180910390a150565b611663611abe565b73ffffffffffffffffffffffffffffffffffffffff1661168161135e565b73ffffffffffffffffffffffffffffffffffffffff16146116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90614474565b60405180910390fd5b6116ff60646116f1836010546121e790919063ffffffff16565b61208d90919063ffffffff16565b60168190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611797611abe565b73ffffffffffffffffffffffffffffffffffffffff166117b561135e565b73ffffffffffffffffffffffffffffffffffffffff161461180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290614474565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611894611abe565b73ffffffffffffffffffffffffffffffffffffffff166118b261135e565b73ffffffffffffffffffffffffffffffffffffffff1614611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ff90614474565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f90614414565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a40611abe565b73ffffffffffffffffffffffffffffffffffffffff16611a5e61135e565b73ffffffffffffffffffffffffffffffffffffffff1614611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aab90614474565b60405180910390fd5b80600c8190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2d90614534565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9d90614434565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c849190614574565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf890614514565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d68906143d4565b60405180910390fd5b60008111611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab906144f4565b60405180910390fd5b611dbc61135e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e2a5750611dfa61135e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e7557601654811115611e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6b906144b4565b60405180910390fd5b5b6000611e8030611070565b90506016548110611e915760165490505b60006017548210159050808015611eb55750601560009054906101000a900460ff16155b8015611f0d57507f000000000000000000000000d7f1dd1b6edbafd9a2bd7fc3caf39a13b830737573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f255750601560019054906101000a900460ff165b15611f39576017549150611f3882612262565b5b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fe05750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611fea57600090505b611ff686868684612338565b505050505050565b6000838311158290612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d91906143b2565b60405180910390fd5b50600083856120559190614771565b9050809150509392505050565b600080600061206f612649565b91509150612086818361208d90919063ffffffff16565b9250505090565b60006120cf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612994565b905092915050565b60008082846120e69190614690565b90508381101561212b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212290614454565b60405180910390fd5b8091505092915050565b600080600080600080600080600080600061214f8c6129f7565b935093509350935060008060006121708f87878761216b612062565b612a76565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b60006121df83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ffe565b905092915050565b6000808314156121fa576000905061225c565b600082846122089190614717565b905082848261221791906146e6565b14612257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224e906144d4565b60405180910390fd5b809150505b92915050565b6001601560006101000a81548160ff021916908315150217905550600061229360028361208d90919063ffffffff16565b905060006122aa828461219d90919063ffffffff16565b905060004790506122ba83612b2a565b60006122cf824761219d90919063ffffffff16565b90506122db8382612de8565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161230e939291906145e9565b60405180910390a1505050506000601560006101000a81548160ff02191690831515021790555050565b8061234657612345612ed8565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123e95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123fe576123f9848484612f2c565b612635565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124a15750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124b6576124b184848461319a565b612634565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561255a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561256f5761256a848484613408565b612633565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126115750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612626576126218484846135e1565b612632565b612631848484613408565b5b5b5b5b80612643576126426138e4565b5b50505050565b600080600060115490506000601054905060005b600880549050811015612957578260036000600884815481106126a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806127bd5750816004600060088481548110612755577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156127d45760115460105494509450505050612990565b61288a6003600060088481548110612815577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461219d90919063ffffffff16565b925061294260046000600884815481106128cd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361219d90919063ffffffff16565b9150808061294f90614895565b91505061265d565b5061296f60105460115461208d90919063ffffffff16565b82101561298757601154601054935093505050612990565b81819350935050505b9091565b600080831182906129db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d291906143b2565b60405180910390fd5b50600083856129ea91906146e6565b9050809150509392505050565b6000806000806000612a0886613901565b90506000612a1587613932565b90506000612a2288613963565b90506000612a5d82612a4f85612a41888e61219d90919063ffffffff16565b61219d90919063ffffffff16565b61219d90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080612a8f858a6121e790919063ffffffff16565b90506000612aa6868a6121e790919063ffffffff16565b90506000612abd878a6121e790919063ffffffff16565b90506000612ad4888a6121e790919063ffffffff16565b90506000612b0f82612b0185612af3888a61219d90919063ffffffff16565b61219d90919063ffffffff16565b61219d90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6000600267ffffffffffffffff811115612b6d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612b9b5781602001602082028036833780820191505090505b5090503081600081518110612bd9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c2973ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612c7957600080fd5b505afa158015612c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb19190613e54565b81600181518110612ceb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d50307f000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c2984611ac6565b7f000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c2973ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612db295949392919061458f565b600060405180830381600087803b158015612dcc57600080fd5b505af1158015612de0573d6000803e3d6000fd5b505050505050565b612e13307f000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c2984611ac6565b7f000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c2973ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612e5d61135e565b426040518863ffffffff1660e01b8152600401612e7f9695949392919061431b565b6060604051808303818588803b158015612e9857600080fd5b505af1158015612eac573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ed19190613fd2565b5050505050565b6000600a54148015612eec57506000600e54145b15612ef657612f2a565b600a54600b81905550600c54600d81905550600e54600f819055506000600a819055506000600c819055506000600e819055505b565b6000806000806000806000612f4088612135565b9650965096509650965096509650612fa088600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219d90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061303587600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219d90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130ca86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061311682613994565b61311f81613b39565b6131298584613d88565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516131869190614574565b60405180910390a350505050505050505050565b60008060008060008060006131ae88612135565b965096509650965096509650965061320e87600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219d90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132a384600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061333886600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061338482613994565b61338d81613b39565b6133978584613d88565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516133f49190614574565b60405180910390a350505050505050505050565b600080600080600080600061341c88612135565b965096509650965096509650965061347c87600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219d90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061351186600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061355d82613994565b61356681613b39565b6135708584613d88565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516135cd9190614574565b60405180910390a350505050505050505050565b60008060008060008060006135f588612135565b965096509650965096509650965061365588600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219d90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136ea87600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219d90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061377f84600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061381486600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061386082613994565b61386981613b39565b6138738584613d88565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516138d09190614574565b60405180910390a350505050505050505050565b600b54600a81905550600f54600e81905550600d54600c81905550565b600061392b606461391d600a54856121e790919063ffffffff16565b61208d90919063ffffffff16565b9050919050565b600061395c606461394e600e54856121e790919063ffffffff16565b61208d90919063ffffffff16565b9050919050565b600061398d606461397f600c54856121e790919063ffffffff16565b61208d90919063ffffffff16565b9050919050565b600061399e612062565b905060006139b582846121e790919063ffffffff16565b9050613a0981600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b3457613af083600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6000613b43612062565b90506000613b5a82846121e790919063ffffffff16565b9050613bd08160036000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b60036000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060076000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613d8357613d1d8360046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b60046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613d9d8260115461219d90919063ffffffff16565b601181905550613db8816012546120d790919063ffffffff16565b6012819055505050565b600081359050613dd181614d0d565b92915050565b600081519050613de681614d0d565b92915050565b600081359050613dfb81614d24565b92915050565b600081359050613e1081614d3b565b92915050565b600081519050613e2581614d3b565b92915050565b600060208284031215613e3d57600080fd5b6000613e4b84828501613dc2565b91505092915050565b600060208284031215613e6657600080fd5b6000613e7484828501613dd7565b91505092915050565b60008060408385031215613e9057600080fd5b6000613e9e85828601613dc2565b9250506020613eaf85828601613dc2565b9150509250929050565b600080600060608486031215613ece57600080fd5b6000613edc86828701613dc2565b9350506020613eed86828701613dc2565b9250506040613efe86828701613e01565b9150509250925092565b60008060408385031215613f1b57600080fd5b6000613f2985828601613dc2565b9250506020613f3a85828601613e01565b9150509250929050565b600060208284031215613f5657600080fd5b6000613f6484828501613dec565b91505092915050565b600060208284031215613f7f57600080fd5b6000613f8d84828501613e01565b91505092915050565b60008060408385031215613fa957600080fd5b6000613fb785828601613e01565b9250506020613fc885828601613dec565b9150509250929050565b600080600060608486031215613fe757600080fd5b6000613ff586828701613e16565b935050602061400686828701613e16565b925050604061401786828701613e16565b9150509250925092565b600061402d8383614039565b60208301905092915050565b614042816147a5565b82525050565b614051816147a5565b82525050565b60006140628261464b565b61406c818561466e565b93506140778361463b565b8060005b838110156140a857815161408f8882614021565b975061409a83614661565b92505060018101905061407b565b5085935050505092915050565b6140be816147b7565b82525050565b6140cd816147fa565b82525050565b6140dc8161481e565b82525050565b60006140ed82614656565b6140f7818561467f565b9350614107818560208601614830565b6141108161496b565b840191505092915050565b600061412860238361467f565b91506141338261497c565b604082019050919050565b600061414b602a8361467f565b9150614156826149cb565b604082019050919050565b600061416e60268361467f565b915061417982614a1a565b604082019050919050565b600061419160228361467f565b915061419c82614a69565b604082019050919050565b60006141b4601b8361467f565b91506141bf82614ab8565b602082019050919050565b60006141d7601c8361467f565b91506141e282614ae1565b602082019050919050565b60006141fa601f8361467f565b915061420582614b0a565b602082019050919050565b600061421d60288361467f565b915061422882614b33565b604082019050919050565b600061424060218361467f565b915061424b82614b82565b604082019050919050565b600061426360298361467f565b915061426e82614bd1565b604082019050919050565b600061428660258361467f565b915061429182614c20565b604082019050919050565b60006142a960248361467f565b91506142b482614c6f565b604082019050919050565b60006142cc602c8361467f565b91506142d782614cbe565b604082019050919050565b6142eb816147e3565b82525050565b6142fa816147ed565b82525050565b60006020820190506143156000830184614048565b92915050565b600060c0820190506143306000830189614048565b61433d60208301886142e2565b61434a60408301876140d3565b61435760608301866140d3565b6143646080830185614048565b61437160a08301846142e2565b979650505050505050565b600060208201905061439160008301846140b5565b92915050565b60006020820190506143ac60008301846140c4565b92915050565b600060208201905081810360008301526143cc81846140e2565b905092915050565b600060208201905081810360008301526143ed8161411b565b9050919050565b6000602082019050818103600083015261440d8161413e565b9050919050565b6000602082019050818103600083015261442d81614161565b9050919050565b6000602082019050818103600083015261444d81614184565b9050919050565b6000602082019050818103600083015261446d816141a7565b9050919050565b6000602082019050818103600083015261448d816141ca565b9050919050565b600060208201905081810360008301526144ad816141ed565b9050919050565b600060208201905081810360008301526144cd81614210565b9050919050565b600060208201905081810360008301526144ed81614233565b9050919050565b6000602082019050818103600083015261450d81614256565b9050919050565b6000602082019050818103600083015261452d81614279565b9050919050565b6000602082019050818103600083015261454d8161429c565b9050919050565b6000602082019050818103600083015261456d816142bf565b9050919050565b600060208201905061458960008301846142e2565b92915050565b600060a0820190506145a460008301886142e2565b6145b160208301876140d3565b81810360408301526145c38186614057565b90506145d26060830185614048565b6145df60808301846142e2565b9695505050505050565b60006060820190506145fe60008301866142e2565b61460b60208301856142e2565b61461860408301846142e2565b949350505050565b600060208201905061463560008301846142f1565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061469b826147e3565b91506146a6836147e3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146db576146da6148de565b5b828201905092915050565b60006146f1826147e3565b91506146fc836147e3565b92508261470c5761470b61490d565b5b828204905092915050565b6000614722826147e3565b915061472d836147e3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614766576147656148de565b5b828202905092915050565b600061477c826147e3565b9150614787836147e3565b92508282101561479a576147996148de565b5b828203905092915050565b60006147b0826147c3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006148058261480c565b9050919050565b6000614817826147c3565b9050919050565b6000614829826147e3565b9050919050565b60005b8381101561484e578082015181840152602081019050614833565b8381111561485d576000848401525b50505050565b6000600282049050600182168061487b57607f821691505b6020821081141561488f5761488e61493c565b5b50919050565b60006148a0826147e3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148d3576148d26148de565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2043616c6c6572206973206e6f74206f776e657200000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b614d16816147a5565b8114614d2157600080fd5b50565b614d2d816147b7565b8114614d3857600080fd5b50565b614d44816147e3565b8114614d4f57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209428f0cf695b0adeda082e5b7c6f14cab0947cf875267b12450bd0bdafc70af164736f6c63430008040033
Deployed Bytecode Sourcemap
16038:18736:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22819:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18757:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19789:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20786:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17278:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19154:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19958:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16151:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21713:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19063:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20279:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16710:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20881:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34532:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21267:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16791:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17336:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17409:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34397:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7914:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18848:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16878:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19257:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7495:148;;;;;;;;;;;;;:::i;:::-;;17456:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22684:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7274:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23043:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18968:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20505:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19463:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23346:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23176:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19638:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34655:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16584:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7656:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22925:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22819:98;7422:12;:10;:12::i;:::-;7411:23;;:7;:5;:7::i;:::-;:23;;;7403:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22903:6:::1;22893:7;:16;;;;22819:98:::0;:::o;18757:83::-;18794:13;18827:5;18820:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18757:83;:::o;19789:161::-;19864:4;19881:39;19890:12;:10;:12::i;:::-;19904:7;19913:6;19881:8;:39::i;:::-;19938:4;19931:11;;19789:161;;;;:::o;20786:87::-;20828:7;20855:10;;20848:17;;20786:87;:::o;17278:51::-;;;:::o;19154:95::-;19207:7;19234;;19227:14;;19154:95;:::o;19958:313::-;20056:4;20073:36;20083:6;20091:9;20102:6;20073:9;:36::i;:::-;20120:121;20129:6;20137:12;:10;:12::i;:::-;20151:89;20189:6;20151:89;;;;;;;;;;;;;;;;;:11;:19;20163:6;20151:19;;;;;;;;;;;;;;;:33;20171:12;:10;:12::i;:::-;20151:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20120:8;:121::i;:::-;20259:4;20252:11;;19958:313;;;;;:::o;16151:81::-;;;:::o;21713:253::-;21779:7;21818;;21807;:18;;21799:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21883:19;21906:10;:8;:10::i;:::-;21883:33;;21934:24;21946:11;21934:7;:11;;:24;;;;:::i;:::-;21927:31;;;21713:253;;;:::o;19063:83::-;19104:5;19129:9;;;;;;;;;;;19122:16;;19063:83;:::o;20279:218::-;20367:4;20384:83;20393:12;:10;:12::i;:::-;20407:7;20416:50;20455:10;20416:11;:25;20428:12;:10;:12::i;:::-;20416:25;;;;;;;;;;;;;;;:34;20442:7;20416:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;20384:8;:83::i;:::-;20485:4;20478:11;;20279:218;;;;:::o;16710:26::-;;;;:::o;20881:378::-;20933:14;20950:12;:10;:12::i;:::-;20933:29;;20982:11;:19;20994:6;20982:19;;;;;;;;;;;;;;;;;;;;;;;;;20981:20;20973:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;21062:15;21087:19;21098:7;21087:10;:19::i;:::-;21061:45;;;;;;;;21135:28;21155:7;21135;:15;21143:6;21135:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21117:7;:15;21125:6;21117:15;;;;;;;;;;;;;;;:46;;;;21184:20;21196:7;21184;;:11;;:20;;;;:::i;:::-;21174:7;:30;;;;21228:23;21243:7;21228:10;;:14;;:23;;;;:::i;:::-;21215:10;:36;;;;20881:378;;;:::o;34532:111::-;7422:12;:10;:12::i;:::-;7411:23;;:7;:5;:7::i;:::-;:23;;;7403:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;34631:4:::1;34601:18;:27;34620:7;34601:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;34532:111:::0;:::o;21267:438::-;21357:7;21396;;21385;:18;;21377:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21455:17;21450:248;;21490:15;21515:19;21526:7;21515:10;:19::i;:::-;21489:45;;;;;;;;21556:7;21549:14;;;;;21450:248;21598:23;21630:19;21641:7;21630:10;:19::i;:::-;21596:53;;;;;;;;21671:15;21664:22;;;21267:438;;;;;:::o;16791:28::-;;;;:::o;17336:38::-;;;:::o;17409:40::-;;;;;;;;;;;;;:::o;34397:123::-;34461:4;34485:18;:27;34504:7;34485:27;;;;;;;;;;;;;;;;;;;;;;;;;34478:34;;34397:123;;;:::o;7914:90::-;7954:7;7981:15;7974:22;;7914:90;:::o;18848:110::-;18896:15;18931:19;;;;;;;;;;;18924:26;;18848:110;:::o;16878:32::-;;;;:::o;19257:198::-;19323:7;19347:11;:20;19359:7;19347:20;;;;;;;;;;;;;;;;;;;;;;;;;19343:49;;;19376:7;:16;19384:7;19376:16;;;;;;;;;;;;;;;;19369:23;;;;19343:49;19410:37;19430:7;:16;19438:7;19430:16;;;;;;;;;;;;;;;;19410:19;:37::i;:::-;19403:44;;19257:198;;;;:::o;7495:148::-;7422:12;:10;:12::i;:::-;7411:23;;:7;:5;:7::i;:::-;:23;;;7403:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7602:1:::1;7565:40;;7586:6;;;;;;;;;;;7565:40;;;;;;;;;;;;7633:1;7616:6;;:19;;;;;;;;;;;;;;;;;;7495:148::o:0;17456:53::-;;;;:::o;22684:121::-;7422:12;:10;:12::i;:::-;7411:23;;:7;:5;:7::i;:::-;:23;;;7403:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22785:12:::1;22763:19;;:34;;;;;;;;;;;;;;;;;;22684:121:::0;:::o;7274:87::-;7320:7;7347:6;;;;;;;;;;;7340:13;;7274:87;:::o;23043:122::-;7422:12;:10;:12::i;:::-;7411:23;;:7;:5;:7::i;:::-;:23;;;7403:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23145:12:::1;23129:13;:28;;;;23043:122:::0;:::o;18968:87::-;19007:13;19040:7;19033:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18968:87;:::o;20505:269::-;20598:4;20615:129;20624:12;:10;:12::i;:::-;20638:7;20647:96;20686:15;20647:96;;;;;;;;;;;;;;;;;:11;:25;20659:12;:10;:12::i;:::-;20647:25;;;;;;;;;;;;;;;:34;20673:7;20647:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;20615:8;:129::i;:::-;20762:4;20755:11;;20505:269;;;;:::o;19463:167::-;19541:4;19558:42;19568:12;:10;:12::i;:::-;19582:9;19593:6;19558:9;:42::i;:::-;19618:4;19611:11;;19463:167;;;;:::o;23346:171::-;7422:12;:10;:12::i;:::-;7411:23;;:7;:5;:7::i;:::-;:23;;;7403:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23447:8:::1;23423:21;;:32;;;;;;;;;;;;;;;;;;23471:38;23500:8;23471:38;;;;;;:::i;:::-;;;;;;;;23346:171:::0;:::o;23176:162::-;7422:12;:10;:12::i;:::-;7411:23;;:7;:5;:7::i;:::-;:23;;;7403:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23270:60:::1;23314:5;23270:25;23282:12;23270:7;;:11;;:25;;;;:::i;:::-;:29;;:60;;;;:::i;:::-;23255:12;:75;;;;23176:162:::0;:::o;19638:143::-;19719:7;19746:11;:18;19758:5;19746:18;;;;;;;;;;;;;;;:27;19765:7;19746:27;;;;;;;;;;;;;;;;19739:34;;19638:143;;;;:::o;34655:110::-;7422:12;:10;:12::i;:::-;7411:23;;:7;:5;:7::i;:::-;:23;;;7403:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;34752:5:::1;34722:18;:27;34741:7;34722:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;34655:110:::0;:::o;16584:34::-;;;;;;;;;;;;;:::o;7656:244::-;7422:12;:10;:12::i;:::-;7411:23;;:7;:5;:7::i;:::-;:23;;;7403:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7765:1:::1;7745:22;;:8;:22;;;;7737:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7855:8;7826:38;;7847:6;;;;;;;;;;;7826:38;;;;;;;;;;;;7884:8;7875:6;;:17;;;;;;;;;;;;;;;;;;7656:244:::0;:::o;22925:106::-;7422:12;:10;:12::i;:::-;7411:23;;:7;:5;:7::i;:::-;:23;;;7403:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23015:8:::1;23003:9;:20;;;;22925:106:::0;:::o;251:98::-;304:7;331:10;324:17;;251:98;:::o;27508:337::-;27618:1;27601:19;;:5;:19;;;;27593:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27699:1;27680:21;;:7;:21;;;;27672:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27783:6;27753:11;:18;27765:5;27753:18;;;;;;;;;;;;;;;:27;27772:7;27753:27;;;;;;;;;;;;;;;:36;;;;27821:7;27805:32;;27814:5;27805:32;;;27830:6;27805:32;;;;;;:::i;:::-;;;;;;;;27508:337;;;:::o;27853:1524::-;27991:1;27975:18;;:4;:18;;;;27967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28068:1;28054:16;;:2;:16;;;;28046:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28138:1;28129:6;:10;28121:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28207:7;:5;:7::i;:::-;28199:15;;:4;:15;;;;:32;;;;;28224:7;:5;:7::i;:::-;28218:13;;:2;:13;;;;28199:32;28196:125;;;28264:12;;28254:6;:22;;28246:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;28196:125;28334:28;28365:24;28383:4;28365:9;:24::i;:::-;28334:55;;28437:12;;28413:20;:36;28410:112;;28498:12;;28475:35;;28410:112;28542:24;28593:29;;28569:20;:53;;28542:80;;28651:19;:53;;;;;28688:16;;;;;;;;;;;28687:17;28651:53;:91;;;;;28729:13;28721:21;;:4;:21;;;;28651:91;:129;;;;;28759:21;;;;;;;;;;;28651:129;28633:318;;;28830:29;;28807:52;;28903:36;28918:20;28903:14;:36::i;:::-;28633:318;29032:12;29047:4;29032:19;;29159:18;:24;29178:4;29159:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;29187:18;:22;29206:2;29187:22;;;;;;;;;;;;;;;;;;;;;;;;;29159:50;29156:96;;;29235:5;29225:15;;29156:96;29331:38;29346:4;29351:2;29354:6;29361:7;29331:14;:38::i;:::-;27853:1524;;;;;;:::o;1640:192::-;1726:7;1759:1;1754;:6;;1762:12;1746:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1786:9;1802:1;1798;:5;;;;:::i;:::-;1786:17;;1823:1;1816:8;;;1640:192;;;;;:::o;25182:163::-;25223:7;25244:15;25261;25280:19;:17;:19::i;:::-;25243:56;;;;25317:20;25329:7;25317;:11;;:20;;;;:::i;:::-;25310:27;;;;25182:163;:::o;2100:132::-;2158:7;2185:39;2189:1;2192;2185:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2178:46;;2100:132;;;;:::o;1307:181::-;1365:7;1385:9;1401:1;1397;:5;;;;:::i;:::-;1385:17;;1426:1;1421;:6;;1413:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1479:1;1472:8;;;1307:181;;;;:::o;23778:460::-;23837:7;23846;23855;23864;23873;23882;23891;23912:23;23937:12;23951:18;23971:14;23989:20;24001:7;23989:11;:20::i;:::-;23911:98;;;;;;;;24021:15;24038:23;24063:12;24079:58;24091:7;24100:4;24106:10;24118:6;24126:10;:8;:10::i;:::-;24079:11;:58::i;:::-;24020:117;;;;;;24156:7;24165:15;24182:4;24188:15;24205:4;24211:10;24223:6;24148:82;;;;;;;;;;;;;;;;;;;;;23778:460;;;;;;;;;:::o;1496:136::-;1554:7;1581:43;1585:1;1588;1581:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1574:50;;1496:136;;;;:::o;1840:250::-;1898:7;1927:1;1922;:6;1918:47;;;1952:1;1945:8;;;;1918:47;1977:9;1993:1;1989;:5;;;;:::i;:::-;1977:17;;2022:1;2017;2013;:5;;;;:::i;:::-;:10;2005:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2081:1;2074:8;;;1840:250;;;;;:::o;29385:985::-;17907:4;17888:16;;:23;;;;;;;;;;;;;;;;;;29521:12:::1;29536:27;29561:1;29536:20;:24;;:27;;;;:::i;:::-;29521:42;;29574:17;29594:30;29619:4;29594:20;:24;;:30;;;;:::i;:::-;29574:50;;29902:22;29927:21;29902:46;;29993:22;30010:4;29993:16;:22::i;:::-;30146:18;30167:41;30193:14;30167:21;:25;;:41;;;;:::i;:::-;30146:62;;30258:35;30271:9;30282:10;30258:12;:35::i;:::-;30319:43;30334:4;30340:10;30352:9;30319:43;;;;;;;;:::i;:::-;;;;;;;;17922:1;;;;17953:5:::0;17934:16;;:24;;;;;;;;;;;;;;;;;;29385:985;:::o;31569:834::-;31680:7;31676:40;;31702:14;:12;:14::i;:::-;31676:40;31741:11;:19;31753:6;31741:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;31765:11;:22;31777:9;31765:22;;;;;;;;;;;;;;;;;;;;;;;;;31764:23;31741:46;31737:597;;;31804:48;31826:6;31834:9;31845:6;31804:21;:48::i;:::-;31737:597;;;31875:11;:19;31887:6;31875:19;;;;;;;;;;;;;;;;;;;;;;;;;31874:20;:46;;;;;31898:11;:22;31910:9;31898:22;;;;;;;;;;;;;;;;;;;;;;;;;31874:46;31870:464;;;31937:46;31957:6;31965:9;31976:6;31937:19;:46::i;:::-;31870:464;;;32006:11;:19;32018:6;32006:19;;;;;;;;;;;;;;;;;;;;;;;;;32005:20;:47;;;;;32030:11;:22;32042:9;32030:22;;;;;;;;;;;;;;;;;;;;;;;;;32029:23;32005:47;32001:333;;;32069:44;32087:6;32095:9;32106:6;32069:17;:44::i;:::-;32001:333;;;32135:11;:19;32147:6;32135:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;32158:11;:22;32170:9;32158:22;;;;;;;;;;;;;;;;;;;;;;;;;32135:45;32131:203;;;32197:48;32219:6;32227:9;32238:6;32197:21;:48::i;:::-;32131:203;;;32278:44;32296:6;32304:9;32315:6;32278:17;:44::i;:::-;32131:203;32001:333;31870:464;31737:597;32358:7;32354:41;;32380:15;:13;:15::i;:::-;32354:41;31569:834;;;;:::o;25353:561::-;25403:7;25412;25432:15;25450:7;;25432:25;;25468:15;25486:7;;25468:25;;25515:9;25510:289;25534:9;:16;;;;25530:1;:20;25510:289;;;25600:7;25576;:21;25584:9;25594:1;25584:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25576:21;;;;;;;;;;;;;;;;:31;:66;;;;25635:7;25611;:21;25619:9;25629:1;25619:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25611:21;;;;;;;;;;;;;;;;:31;25576:66;25572:97;;;25652:7;;25661;;25644:25;;;;;;;;;25572:97;25694:34;25706:7;:21;25714:9;25724:1;25714:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25706:21;;;;;;;;;;;;;;;;25694:7;:11;;:34;;;;:::i;:::-;25684:44;;25753:34;25765:7;:21;25773:9;25783:1;25773:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25765:21;;;;;;;;;;;;;;;;25753:7;:11;;:34;;;;:::i;:::-;25743:44;;25552:3;;;;;:::i;:::-;;;;25510:289;;;;25823:20;25835:7;;25823;;:11;;:20;;;;:::i;:::-;25813:7;:30;25809:61;;;25853:7;;25862;;25845:25;;;;;;;;25809:61;25889:7;25898;25881:25;;;;;;25353:561;;;:::o;2240:278::-;2326:7;2358:1;2354;:5;2361:12;2346:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2385:9;2401:1;2397;:5;;;;:::i;:::-;2385:17;;2509:1;2502:8;;;2240:278;;;;;:::o;24246:413::-;24306:7;24315;24324;24333;24353:12;24368:24;24384:7;24368:15;:24::i;:::-;24353:39;;24403:18;24424:30;24446:7;24424:21;:30::i;:::-;24403:51;;24465:14;24482:26;24500:7;24482:17;:26::i;:::-;24465:43;;24519:23;24545:45;24583:6;24545:33;24567:10;24545:17;24557:4;24545:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:45;;;;:::i;:::-;24519:71;;24609:15;24626:4;24632:10;24644:6;24601:50;;;;;;;;;;;;24246:413;;;;;:::o;24667:507::-;24798:7;24807;24816;24836:15;24854:24;24866:11;24854:7;:11;;:24;;;;:::i;:::-;24836:42;;24889:12;24904:21;24913:11;24904:4;:8;;:21;;;;:::i;:::-;24889:36;;24936:18;24957:27;24972:11;24957:10;:14;;:27;;;;:::i;:::-;24936:48;;24995:14;25011:23;25022:11;25011:6;:10;;:23;;;;:::i;:::-;24995:39;;25045:23;25071:45;25109:6;25071:33;25093:10;25071:17;25083:4;25071:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:45;;;;:::i;:::-;25045:71;;25135:7;25144:15;25161:4;25127:39;;;;;;;;;;;24667:507;;;;;;;;;:::o;30378:589::-;30504:21;30542:1;30528:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30504:40;;30573:4;30555;30560:1;30555:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;30599:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30589:4;30594:1;30589:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;30634:62;30651:4;30666:15;30684:11;30634:8;:62::i;:::-;30735:15;:66;;;30816:11;30842:1;30886:4;30913;30933:15;30735:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30378:589;;:::o;30975:513::-;31123:62;31140:4;31155:15;31173:11;31123:8;:62::i;:::-;31228:15;:31;;;31267:9;31300:4;31320:11;31346:1;31389;31432:7;:5;:7::i;:::-;31454:15;31228:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30975:513;;:::o;27178:314::-;27235:1;27224:7;;:12;:34;;;;;27257:1;27240:13;;:18;27224:34;27221:46;;;27260:7;;27221:46;27305:7;;27287:15;:25;;;;27343:9;;27323:17;:29;;;;27387:13;;27363:21;:37;;;;27431:1;27421:7;:11;;;;27455:1;27443:9;:13;;;;27483:1;27467:13;:17;;;;27178:314;:::o;33605:611::-;33708:15;33725:23;33750:12;33764:23;33789:12;33803:18;33823:14;33841:19;33852:7;33841:10;:19::i;:::-;33707:153;;;;;;;;;;;;;;33889:28;33909:7;33889;:15;33897:6;33889:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33871:7;:15;33879:6;33871:15;;;;;;;;;;;;;;;:46;;;;33946:28;33966:7;33946;:15;33954:6;33946:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33928:7;:15;33936:6;33928:15;;;;;;;;;;;;;;;:46;;;;34006:39;34029:15;34006:7;:18;34014:9;34006:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33985:7;:18;33993:9;33985:18;;;;;;;;;;;;;;;:60;;;;34059:26;34074:10;34059:14;:26::i;:::-;34096:18;34107:6;34096:10;:18::i;:::-;34125:23;34137:4;34143;34125:11;:23::i;:::-;34181:9;34164:44;;34173:6;34164:44;;;34192:15;34164:44;;;;;;:::i;:::-;;;;;;;;33605:611;;;;;;;;;;:::o;32966:631::-;33067:15;33084:23;33109:12;33123:23;33148:12;33162:18;33182:14;33200:19;33211:7;33200:10;:19::i;:::-;33066:153;;;;;;;;;;;;;;33248:28;33268:7;33248;:15;33256:6;33248:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33230:7;:15;33238:6;33230:15;;;;;;;;;;;;;;;:46;;;;33308:39;33331:15;33308:7;:18;33316:9;33308:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33287:7;:18;33295:9;33287:18;;;;;;;;;;;;;;;:60;;;;33379:39;33402:15;33379:7;:18;33387:9;33379:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33358:7;:18;33366:9;33358:18;;;;;;;;;;;;;;;:60;;;;33440:26;33455:10;33440:14;:26::i;:::-;33477:18;33488:6;33477:10;:18::i;:::-;33506:23;33518:4;33524;33506:11;:23::i;:::-;33562:9;33545:44;;33554:6;33545:44;;;33573:15;33545:44;;;;;;:::i;:::-;;;;;;;;32966:631;;;;;;;;;;:::o;32411:547::-;32510:15;32527:23;32552:12;32566:23;32591:12;32605:18;32625:14;32643:19;32654:7;32643:10;:19::i;:::-;32509:153;;;;;;;;;;;;;;32691:28;32711:7;32691;:15;32699:6;32691:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32673:7;:15;32681:6;32673:15;;;;;;;;;;;;;;;:46;;;;32751:39;32774:15;32751:7;:18;32759:9;32751:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32730:7;:18;32738:9;32730:18;;;;;;;;;;;;;;;:60;;;;32801:26;32816:10;32801:14;:26::i;:::-;32838:18;32849:6;32838:10;:18::i;:::-;32867:23;32879:4;32885;32867:11;:23::i;:::-;32923:9;32906:44;;32915:6;32906:44;;;32934:15;32906:44;;;;;;:::i;:::-;;;;;;;;32411:547;;;;;;;;;;:::o;21985:687::-;22088:15;22105:23;22130:12;22144:23;22169:12;22183:18;22203:14;22221:19;22232:7;22221:10;:19::i;:::-;22087:153;;;;;;;;;;;;;;22269:28;22289:7;22269;:15;22277:6;22269:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22251:7;:15;22259:6;22251:15;;;;;;;;;;;;;;;:46;;;;22326:28;22346:7;22326;:15;22334:6;22326:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22308:7;:15;22316:6;22308:15;;;;;;;;;;;;;;;:46;;;;22386:39;22409:15;22386:7;:18;22394:9;22386:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22365:7;:18;22373:9;22365:18;;;;;;;;;;;;;;;:60;;;;22457:39;22480:15;22457:7;:18;22465:9;22457:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22436:7;:18;22444:9;22436:18;;;;;;;;;;;;;;;:60;;;;22515:26;22530:10;22515:14;:26::i;:::-;22552:18;22563:6;22552:10;:18::i;:::-;22581:23;22593:4;22599;22581:11;:23::i;:::-;22637:9;22620:44;;22629:6;22620:44;;;22648:15;22620:44;;;;;;:::i;:::-;;;;;;;;21985:687;;;;;;;;;;:::o;34224:167::-;34278:15;;34268:7;:25;;;;34320:21;;34304:13;:37;;;;34364:17;;34352:9;:29;;;;34224:167::o;26835:154::-;26899:7;26926:55;26965:5;26926:20;26938:7;;26926;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;26919:62;;26835:154;;;:::o;27000:166::-;27070:7;27097:61;27142:5;27097:26;27109:13;;27097:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;27090:68;;27000:166;;;:::o;26665:158::-;26731:7;26758:57;26799:5;26758:22;26770:9;;26758:7;:11;;:22;;;;:::i;:::-;:26;;:57;;;;:::i;:::-;26751:64;;26665:158;;;:::o;25926:355::-;25989:19;26012:10;:8;:10::i;:::-;25989:33;;26033:18;26054:27;26069:11;26054:10;:14;;:27;;;;:::i;:::-;26033:48;;26117:38;26144:10;26117:7;:22;26133:4;26117:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;26092:7;:22;26108:4;26092:22;;;;;;;;;;;;;;;:63;;;;26169:11;:26;26189:4;26169:26;;;;;;;;;;;;;;;;;;;;;;;;;26166:107;;;26235:38;26262:10;26235:7;:22;26251:4;26235:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;26210:7;:22;26226:4;26210:22;;;;;;;;;;;;;;;:63;;;;26166:107;25926:355;;;:::o;26293:361::-;26348:19;26371:10;:8;:10::i;:::-;26348:33;;26392:14;26409:23;26420:11;26409:6;:10;;:23;;;;:::i;:::-;26392:40;;26474;26507:6;26474:7;:28;26482:19;;;;;;;;;;;26474:28;;;;;;;;;;;;;;;;:32;;:40;;;;:::i;:::-;26443:7;:28;26451:19;;;;;;;;;;;26443:28;;;;;;;;;;;;;;;:71;;;;26528:11;:32;26540:19;;;;;;;;;;;26528:32;;;;;;;;;;;;;;;;;;;;;;;;;26525:121;;;26606:40;26639:6;26606:7;:28;26614:19;;;;;;;;;;;26606:28;;;;;;;;;;;;;;;;:32;;:40;;;;:::i;:::-;26575:7;:28;26583:19;;;;;;;;;;;26575:28;;;;;;;;;;;;;;;:71;;;;26525:121;26293:361;;;:::o;23623:147::-;23701:17;23713:4;23701:7;;:11;;:17;;;;:::i;:::-;23691:7;:27;;;;23742:20;23757:4;23742:10;;:14;;:20;;;;:::i;:::-;23729:10;:33;;;;23623:147;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;793:6;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;1072:6;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;1360:6;1368;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;1782:6;1790;1798;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:407::-;2331:6;2339;2388:2;2376:9;2367:7;2363:23;2359:32;2356:2;;;2404:1;2401;2394:12;2356:2;2447:1;2472:53;2517:7;2508:6;2497:9;2493:22;2472:53;:::i;:::-;2462:63;;2418:117;2574:2;2600:53;2645:7;2636:6;2625:9;2621:22;2600:53;:::i;:::-;2590:63;;2545:118;2346:324;;;;;:::o;2676:256::-;2732:6;2781:2;2769:9;2760:7;2756:23;2752:32;2749:2;;;2797:1;2794;2787:12;2749:2;2840:1;2865:50;2907:7;2898:6;2887:9;2883:22;2865:50;:::i;:::-;2855:60;;2811:114;2739:193;;;;:::o;2938:262::-;2997:6;3046:2;3034:9;3025:7;3021:23;3017:32;3014:2;;;3062:1;3059;3052:12;3014:2;3105:1;3130:53;3175:7;3166:6;3155:9;3151:22;3130:53;:::i;:::-;3120:63;;3076:117;3004:196;;;;:::o;3206:401::-;3271:6;3279;3328:2;3316:9;3307:7;3303:23;3299:32;3296:2;;;3344:1;3341;3334:12;3296:2;3387:1;3412:53;3457:7;3448:6;3437:9;3433:22;3412:53;:::i;:::-;3402:63;;3358:117;3514:2;3540:50;3582:7;3573:6;3562:9;3558:22;3540:50;:::i;:::-;3530:60;;3485:115;3286:321;;;;;:::o;3613:596::-;3701:6;3709;3717;3766:2;3754:9;3745:7;3741:23;3737:32;3734:2;;;3782:1;3779;3772:12;3734:2;3825:1;3850:64;3906:7;3897:6;3886:9;3882:22;3850:64;:::i;:::-;3840:74;;3796:128;3963:2;3989:64;4045:7;4036:6;4025:9;4021:22;3989:64;:::i;:::-;3979:74;;3934:129;4102:2;4128:64;4184:7;4175:6;4164:9;4160:22;4128:64;:::i;:::-;4118:74;;4073:129;3724:485;;;;;:::o;4215:179::-;4284:10;4305:46;4347:3;4339:6;4305:46;:::i;:::-;4383:4;4378:3;4374:14;4360:28;;4295:99;;;;:::o;4400:108::-;4477:24;4495:5;4477:24;:::i;:::-;4472:3;4465:37;4455:53;;:::o;4514:118::-;4601:24;4619:5;4601:24;:::i;:::-;4596:3;4589:37;4579:53;;:::o;4668:732::-;4787:3;4816:54;4864:5;4816:54;:::i;:::-;4886:86;4965:6;4960:3;4886:86;:::i;:::-;4879:93;;4996:56;5046:5;4996:56;:::i;:::-;5075:7;5106:1;5091:284;5116:6;5113:1;5110:13;5091:284;;;5192:6;5186:13;5219:63;5278:3;5263:13;5219:63;:::i;:::-;5212:70;;5305:60;5358:6;5305:60;:::i;:::-;5295:70;;5151:224;5138:1;5135;5131:9;5126:14;;5091:284;;;5095:14;5391:3;5384:10;;4792:608;;;;;;;:::o;5406:109::-;5487:21;5502:5;5487:21;:::i;:::-;5482:3;5475:34;5465:50;;:::o;5521:185::-;5635:64;5693:5;5635:64;:::i;:::-;5630:3;5623:77;5613:93;;:::o;5712:147::-;5807:45;5846:5;5807:45;:::i;:::-;5802:3;5795:58;5785:74;;:::o;5865:364::-;5953:3;5981:39;6014:5;5981:39;:::i;:::-;6036:71;6100:6;6095:3;6036:71;:::i;:::-;6029:78;;6116:52;6161:6;6156:3;6149:4;6142:5;6138:16;6116:52;:::i;:::-;6193:29;6215:6;6193:29;:::i;:::-;6188:3;6184:39;6177:46;;5957:272;;;;;:::o;6235:366::-;6377:3;6398:67;6462:2;6457:3;6398:67;:::i;:::-;6391:74;;6474:93;6563:3;6474:93;:::i;:::-;6592:2;6587:3;6583:12;6576:19;;6381:220;;;:::o;6607:366::-;6749:3;6770:67;6834:2;6829:3;6770:67;:::i;:::-;6763:74;;6846:93;6935:3;6846:93;:::i;:::-;6964:2;6959:3;6955:12;6948:19;;6753:220;;;:::o;6979:366::-;7121:3;7142:67;7206:2;7201:3;7142:67;:::i;:::-;7135:74;;7218:93;7307:3;7218:93;:::i;:::-;7336:2;7331:3;7327:12;7320:19;;7125:220;;;:::o;7351:366::-;7493:3;7514:67;7578:2;7573:3;7514:67;:::i;:::-;7507:74;;7590:93;7679:3;7590:93;:::i;:::-;7708:2;7703:3;7699:12;7692:19;;7497:220;;;:::o;7723:366::-;7865:3;7886:67;7950:2;7945:3;7886:67;:::i;:::-;7879:74;;7962:93;8051:3;7962:93;:::i;:::-;8080:2;8075:3;8071:12;8064:19;;7869:220;;;:::o;8095:366::-;8237:3;8258:67;8322:2;8317:3;8258:67;:::i;:::-;8251:74;;8334:93;8423:3;8334:93;:::i;:::-;8452:2;8447:3;8443:12;8436:19;;8241:220;;;:::o;8467:366::-;8609:3;8630:67;8694:2;8689:3;8630:67;:::i;:::-;8623:74;;8706:93;8795:3;8706:93;:::i;:::-;8824:2;8819:3;8815:12;8808:19;;8613:220;;;:::o;8839:366::-;8981:3;9002:67;9066:2;9061:3;9002:67;:::i;:::-;8995:74;;9078:93;9167:3;9078:93;:::i;:::-;9196:2;9191:3;9187:12;9180:19;;8985:220;;;:::o;9211:366::-;9353:3;9374:67;9438:2;9433:3;9374:67;:::i;:::-;9367:74;;9450:93;9539:3;9450:93;:::i;:::-;9568:2;9563:3;9559:12;9552:19;;9357:220;;;:::o;9583:366::-;9725:3;9746:67;9810:2;9805:3;9746:67;:::i;:::-;9739:74;;9822:93;9911:3;9822:93;:::i;:::-;9940:2;9935:3;9931:12;9924:19;;9729:220;;;:::o;9955:366::-;10097:3;10118:67;10182:2;10177:3;10118:67;:::i;:::-;10111:74;;10194:93;10283:3;10194:93;:::i;:::-;10312:2;10307:3;10303:12;10296:19;;10101:220;;;:::o;10327:366::-;10469:3;10490:67;10554:2;10549:3;10490:67;:::i;:::-;10483:74;;10566:93;10655:3;10566:93;:::i;:::-;10684:2;10679:3;10675:12;10668:19;;10473:220;;;:::o;10699:366::-;10841:3;10862:67;10926:2;10921:3;10862:67;:::i;:::-;10855:74;;10938:93;11027:3;10938:93;:::i;:::-;11056:2;11051:3;11047:12;11040:19;;10845:220;;;:::o;11071:118::-;11158:24;11176:5;11158:24;:::i;:::-;11153:3;11146:37;11136:53;;:::o;11195:112::-;11278:22;11294:5;11278:22;:::i;:::-;11273:3;11266:35;11256:51;;:::o;11313:222::-;11406:4;11444:2;11433:9;11429:18;11421:26;;11457:71;11525:1;11514:9;11510:17;11501:6;11457:71;:::i;:::-;11411:124;;;;:::o;11541:807::-;11790:4;11828:3;11817:9;11813:19;11805:27;;11842:71;11910:1;11899:9;11895:17;11886:6;11842:71;:::i;:::-;11923:72;11991:2;11980:9;11976:18;11967:6;11923:72;:::i;:::-;12005:80;12081:2;12070:9;12066:18;12057:6;12005:80;:::i;:::-;12095;12171:2;12160:9;12156:18;12147:6;12095:80;:::i;:::-;12185:73;12253:3;12242:9;12238:19;12229:6;12185:73;:::i;:::-;12268;12336:3;12325:9;12321:19;12312:6;12268:73;:::i;:::-;11795:553;;;;;;;;;:::o;12354:210::-;12441:4;12479:2;12468:9;12464:18;12456:26;;12492:65;12554:1;12543:9;12539:17;12530:6;12492:65;:::i;:::-;12446:118;;;;:::o;12570:276::-;12690:4;12728:2;12717:9;12713:18;12705:26;;12741:98;12836:1;12825:9;12821:17;12812:6;12741:98;:::i;:::-;12695:151;;;;:::o;12852:313::-;12965:4;13003:2;12992:9;12988:18;12980:26;;13052:9;13046:4;13042:20;13038:1;13027:9;13023:17;13016:47;13080:78;13153:4;13144:6;13080:78;:::i;:::-;13072:86;;12970:195;;;;:::o;13171:419::-;13337:4;13375:2;13364:9;13360:18;13352:26;;13424:9;13418:4;13414:20;13410:1;13399:9;13395:17;13388:47;13452:131;13578:4;13452:131;:::i;:::-;13444:139;;13342:248;;;:::o;13596:419::-;13762:4;13800:2;13789:9;13785:18;13777:26;;13849:9;13843:4;13839:20;13835:1;13824:9;13820:17;13813:47;13877:131;14003:4;13877:131;:::i;:::-;13869:139;;13767:248;;;:::o;14021:419::-;14187:4;14225:2;14214:9;14210:18;14202:26;;14274:9;14268:4;14264:20;14260:1;14249:9;14245:17;14238:47;14302:131;14428:4;14302:131;:::i;:::-;14294:139;;14192:248;;;:::o;14446:419::-;14612:4;14650:2;14639:9;14635:18;14627:26;;14699:9;14693:4;14689:20;14685:1;14674:9;14670:17;14663:47;14727:131;14853:4;14727:131;:::i;:::-;14719:139;;14617:248;;;:::o;14871:419::-;15037:4;15075:2;15064:9;15060:18;15052:26;;15124:9;15118:4;15114:20;15110:1;15099:9;15095:17;15088:47;15152:131;15278:4;15152:131;:::i;:::-;15144:139;;15042:248;;;:::o;15296:419::-;15462:4;15500:2;15489:9;15485:18;15477:26;;15549:9;15543:4;15539:20;15535:1;15524:9;15520:17;15513:47;15577:131;15703:4;15577:131;:::i;:::-;15569:139;;15467:248;;;:::o;15721:419::-;15887:4;15925:2;15914:9;15910:18;15902:26;;15974:9;15968:4;15964:20;15960:1;15949:9;15945:17;15938:47;16002:131;16128:4;16002:131;:::i;:::-;15994:139;;15892:248;;;:::o;16146:419::-;16312:4;16350:2;16339:9;16335:18;16327:26;;16399:9;16393:4;16389:20;16385:1;16374:9;16370:17;16363:47;16427:131;16553:4;16427:131;:::i;:::-;16419:139;;16317:248;;;:::o;16571:419::-;16737:4;16775:2;16764:9;16760:18;16752:26;;16824:9;16818:4;16814:20;16810:1;16799:9;16795:17;16788:47;16852:131;16978:4;16852:131;:::i;:::-;16844:139;;16742:248;;;:::o;16996:419::-;17162:4;17200:2;17189:9;17185:18;17177:26;;17249:9;17243:4;17239:20;17235:1;17224:9;17220:17;17213:47;17277:131;17403:4;17277:131;:::i;:::-;17269:139;;17167:248;;;:::o;17421:419::-;17587:4;17625:2;17614:9;17610:18;17602:26;;17674:9;17668:4;17664:20;17660:1;17649:9;17645:17;17638:47;17702:131;17828:4;17702:131;:::i;:::-;17694:139;;17592:248;;;:::o;17846:419::-;18012:4;18050:2;18039:9;18035:18;18027:26;;18099:9;18093:4;18089:20;18085:1;18074:9;18070:17;18063:47;18127:131;18253:4;18127:131;:::i;:::-;18119:139;;18017:248;;;:::o;18271:419::-;18437:4;18475:2;18464:9;18460:18;18452:26;;18524:9;18518:4;18514:20;18510:1;18499:9;18495:17;18488:47;18552:131;18678:4;18552:131;:::i;:::-;18544:139;;18442:248;;;:::o;18696:222::-;18789:4;18827:2;18816:9;18812:18;18804:26;;18840:71;18908:1;18897:9;18893:17;18884:6;18840:71;:::i;:::-;18794:124;;;;:::o;18924:831::-;19187:4;19225:3;19214:9;19210:19;19202:27;;19239:71;19307:1;19296:9;19292:17;19283:6;19239:71;:::i;:::-;19320:80;19396:2;19385:9;19381:18;19372:6;19320:80;:::i;:::-;19447:9;19441:4;19437:20;19432:2;19421:9;19417:18;19410:48;19475:108;19578:4;19569:6;19475:108;:::i;:::-;19467:116;;19593:72;19661:2;19650:9;19646:18;19637:6;19593:72;:::i;:::-;19675:73;19743:3;19732:9;19728:19;19719:6;19675:73;:::i;:::-;19192:563;;;;;;;;:::o;19761:442::-;19910:4;19948:2;19937:9;19933:18;19925:26;;19961:71;20029:1;20018:9;20014:17;20005:6;19961:71;:::i;:::-;20042:72;20110:2;20099:9;20095:18;20086:6;20042:72;:::i;:::-;20124;20192:2;20181:9;20177:18;20168:6;20124:72;:::i;:::-;19915:288;;;;;;:::o;20209:214::-;20298:4;20336:2;20325:9;20321:18;20313:26;;20349:67;20413:1;20402:9;20398:17;20389:6;20349:67;:::i;:::-;20303:120;;;;:::o;20429:132::-;20496:4;20519:3;20511:11;;20549:4;20544:3;20540:14;20532:22;;20501:60;;;:::o;20567:114::-;20634:6;20668:5;20662:12;20652:22;;20641:40;;;:::o;20687:99::-;20739:6;20773:5;20767:12;20757:22;;20746:40;;;:::o;20792:113::-;20862:4;20894;20889:3;20885:14;20877:22;;20867:38;;;:::o;20911:184::-;21010:11;21044:6;21039:3;21032:19;21084:4;21079:3;21075:14;21060:29;;21022:73;;;;:::o;21101:169::-;21185:11;21219:6;21214:3;21207:19;21259:4;21254:3;21250:14;21235:29;;21197:73;;;;:::o;21276:305::-;21316:3;21335:20;21353:1;21335:20;:::i;:::-;21330:25;;21369:20;21387:1;21369:20;:::i;:::-;21364:25;;21523:1;21455:66;21451:74;21448:1;21445:81;21442:2;;;21529:18;;:::i;:::-;21442:2;21573:1;21570;21566:9;21559:16;;21320:261;;;;:::o;21587:185::-;21627:1;21644:20;21662:1;21644:20;:::i;:::-;21639:25;;21678:20;21696:1;21678:20;:::i;:::-;21673:25;;21717:1;21707:2;;21722:18;;:::i;:::-;21707:2;21764:1;21761;21757:9;21752:14;;21629:143;;;;:::o;21778:348::-;21818:7;21841:20;21859:1;21841:20;:::i;:::-;21836:25;;21875:20;21893:1;21875:20;:::i;:::-;21870:25;;22063:1;21995:66;21991:74;21988:1;21985:81;21980:1;21973:9;21966:17;21962:105;21959:2;;;22070:18;;:::i;:::-;21959:2;22118:1;22115;22111:9;22100:20;;21826:300;;;;:::o;22132:191::-;22172:4;22192:20;22210:1;22192:20;:::i;:::-;22187:25;;22226:20;22244:1;22226:20;:::i;:::-;22221:25;;22265:1;22262;22259:8;22256:2;;;22270:18;;:::i;:::-;22256:2;22315:1;22312;22308:9;22300:17;;22177:146;;;;:::o;22329:96::-;22366:7;22395:24;22413:5;22395:24;:::i;:::-;22384:35;;22374:51;;;:::o;22431:90::-;22465:7;22508:5;22501:13;22494:21;22483:32;;22473:48;;;:::o;22527:126::-;22564:7;22604:42;22597:5;22593:54;22582:65;;22572:81;;;:::o;22659:77::-;22696:7;22725:5;22714:16;;22704:32;;;:::o;22742:86::-;22777:7;22817:4;22810:5;22806:16;22795:27;;22785:43;;;:::o;22834:180::-;22911:9;22944:64;23002:5;22944:64;:::i;:::-;22931:77;;22921:93;;;:::o;23020:140::-;23097:9;23130:24;23148:5;23130:24;:::i;:::-;23117:37;;23107:53;;;:::o;23166:121::-;23224:9;23257:24;23275:5;23257:24;:::i;:::-;23244:37;;23234:53;;;:::o;23293:307::-;23361:1;23371:113;23385:6;23382:1;23379:13;23371:113;;;23470:1;23465:3;23461:11;23455:18;23451:1;23446:3;23442:11;23435:39;23407:2;23404:1;23400:10;23395:15;;23371:113;;;23502:6;23499:1;23496:13;23493:2;;;23582:1;23573:6;23568:3;23564:16;23557:27;23493:2;23342:258;;;;:::o;23606:320::-;23650:6;23687:1;23681:4;23677:12;23667:22;;23734:1;23728:4;23724:12;23755:18;23745:2;;23811:4;23803:6;23799:17;23789:27;;23745:2;23873;23865:6;23862:14;23842:18;23839:38;23836:2;;;23892:18;;:::i;:::-;23836:2;23657:269;;;;:::o;23932:233::-;23971:3;23994:24;24012:5;23994:24;:::i;:::-;23985:33;;24040:66;24033:5;24030:77;24027:2;;;24110:18;;:::i;:::-;24027:2;24157:1;24150:5;24146:13;24139:20;;23975:190;;;:::o;24171:180::-;24219:77;24216:1;24209:88;24316:4;24313:1;24306:15;24340:4;24337:1;24330:15;24357:180;24405:77;24402:1;24395:88;24502:4;24499:1;24492:15;24526:4;24523:1;24516:15;24543:180;24591:77;24588:1;24581:88;24688:4;24685:1;24678:15;24712:4;24709:1;24702:15;24729:102;24770:6;24821:2;24817:7;24812:2;24805:5;24801:14;24797:28;24787:38;;24777:54;;;:::o;24837:222::-;24977:34;24973:1;24965:6;24961:14;24954:58;25046:5;25041:2;25033:6;25029:15;25022:30;24943:116;:::o;25065:229::-;25205:34;25201:1;25193:6;25189:14;25182:58;25274:12;25269:2;25261:6;25257:15;25250:37;25171:123;:::o;25300:225::-;25440:34;25436:1;25428:6;25424:14;25417:58;25509:8;25504:2;25496:6;25492:15;25485:33;25406:119;:::o;25531:221::-;25671:34;25667:1;25659:6;25655:14;25648:58;25740:4;25735:2;25727:6;25723:15;25716:29;25637:115;:::o;25758:177::-;25898:29;25894:1;25886:6;25882:14;25875:53;25864:71;:::o;25941:178::-;26081:30;26077:1;26069:6;26065:14;26058:54;26047:72;:::o;26125:181::-;26265:33;26261:1;26253:6;26249:14;26242:57;26231:75;:::o;26312:227::-;26452:34;26448:1;26440:6;26436:14;26429:58;26521:10;26516:2;26508:6;26504:15;26497:35;26418:121;:::o;26545:220::-;26685:34;26681:1;26673:6;26669:14;26662:58;26754:3;26749:2;26741:6;26737:15;26730:28;26651:114;:::o;26771:228::-;26911:34;26907:1;26899:6;26895:14;26888:58;26980:11;26975:2;26967:6;26963:15;26956:36;26877:122;:::o;27005:224::-;27145:34;27141:1;27133:6;27129:14;27122:58;27214:7;27209:2;27201:6;27197:15;27190:32;27111:118;:::o;27235:223::-;27375:34;27371:1;27363:6;27359:14;27352:58;27444:6;27439:2;27431:6;27427:15;27420:31;27341:117;:::o;27464:231::-;27604:34;27600:1;27592:6;27588:14;27581:58;27673:14;27668:2;27660:6;27656:15;27649:39;27570:125;:::o;27701:122::-;27774:24;27792:5;27774:24;:::i;:::-;27767:5;27764:35;27754:2;;27813:1;27810;27803:12;27754:2;27744:79;:::o;27829:116::-;27899:21;27914:5;27899:21;:::i;:::-;27892:5;27889:32;27879:2;;27935:1;27932;27925:12;27879:2;27869:76;:::o;27951:122::-;28024:24;28042:5;28024:24;:::i;:::-;28017:5;28014:35;28004:2;;28063:1;28060;28053:12;28004:2;27994:79;:::o
Swarm Source
ipfs://9428f0cf695b0adeda082e5b7c6f14cab0947cf875267b12450bd0bdafc70af1
Loading...
Loading
Loading...
Loading
OVERVIEW
Jefe is a crypto project that focuses on video games where players can earn money while supporting real heroes around the world, such as soldiers, police officers, veterans, firefighters, and doctors.Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.