Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000,000 AlphaBOOST
Holders
73
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
10,000,000,000 AlphaBOOSTValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GREEN
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-16 */ /** Telegram : https://t.me/GreenWallGenerator */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getUnlockTime() public view returns (uint256) { return _lockTime; } function getTime() public view returns (uint256) { return block.timestamp; } function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(block.timestamp > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } // 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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // pragma solidity >=0.6.2; 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); } // pragma solidity >=0.6.2; 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 GREEN is Context, IERC20, 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 => User) private cooldown; mapping (address => bool) private _isSniper; address[] private _confirmedSnipers; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "Green Wall Generator"; string private _symbol = "AlphaBOOST"; uint8 private _decimals = 9; address payable private teamDevAddress; uint256 public launchTime; uint256 private buyLimitEnd; uint256 public _taxFee = 0; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee=0; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _baseLiqFee; bool private _useImpactFeeSetter = true; uint256 private _feeMultiplier = 1000; uint256 public _minTrigger = 0; uint256 public k = 10; uint256 public _baseAmount = 1*10**15; uint private _maxBuyAmount; bool private _cooldownEnabled=true; bool public tradingOpen = false; //once switched on, can never be switched off. IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; bool public buyBackEnabled = false; struct User { uint256 buy; uint256 sell; bool exists; } event BuyBackEnabledUpdated(bool enabled); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _rOwned[_msgSender()] = _rTotal; emit Transfer(address(0), _msgSender(), _tTotal); } function enableTrading() external onlyOwner() { _maxBuyAmount = 10000000000 * 10**9; _baseLiqFee=15; _liquidityFee=_baseLiqFee; _taxFee=0; swapAndLiquifyEnabled = true; tradingOpen = true; launchTime = block.timestamp; buyLimitEnd = block.timestamp + (240 seconds); } function initContract() external onlyOwner() { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; teamDevAddress = payable(0x1EF1347220a5b8587e89AFE9916E53356D7D92e5); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function 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 isRemovedSniper(address account) public view returns (bool) { return _isSniper[account]; } 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 sender, address recipient, uint256 amount ) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!_isSniper[recipient], "You have no power here!"); require(!_isSniper[msg.sender], "You have no power here!"); if(sender != owner() && recipient != owner()) { if (!tradingOpen) { if (!(sender == address(this) || recipient == address(this) || sender == address(owner()) || recipient == address(owner()))) { require(tradingOpen, "Trading is not enabled"); } } if(_cooldownEnabled) { if(!cooldown[msg.sender].exists) { cooldown[msg.sender] = User(0,0,true); } } } //buy if(sender == uniswapV2Pair && recipient != address(uniswapV2Router) && !_isExcludedFromFee[recipient]) { require(tradingOpen, "Trading not yet enabled."); _liquidityFee=_baseLiqFee; if(_cooldownEnabled) { if(buyLimitEnd > block.timestamp) { require(amount <= _maxBuyAmount); require(cooldown[recipient].buy < block.timestamp, "Your buy cooldown has not expired."); cooldown[recipient].buy = block.timestamp + (45 seconds); } } if(_cooldownEnabled) { cooldown[recipient].sell = block.timestamp + (15 seconds); } } //sell if (!inSwapAndLiquify && swapAndLiquifyEnabled && recipient == uniswapV2Pair) { //get dynamic fee if(_useImpactFeeSetter) { uint256 feeBasis = amount.mul(_feeMultiplier); feeBasis = feeBasis.div(balanceOf(uniswapV2Pair).add(amount)); setFee(feeBasis); } uint256 dynamicFee = _liquidityFee; //swap contract's tokens for ETH uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance > 0) { swapTokens(contractTokenBalance); } //buyback uint256 balance = address(this).balance; //buyback only if sell amount >= _minTrigger if (buyBackEnabled && amount >= _minTrigger) { uint256 ten = 10; uint256 buyBackAmount = _baseAmount.mul(ten.add(((dynamicFee.sub(_baseLiqFee)).mul(k)).div(_baseLiqFee))).div(10); if (balance >= buyBackAmount) buyBackTokens(buyBackAmount); } //restore dynamicFee after buyback _liquidityFee = dynamicFee; } bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ takeFee = false; } //execute transfer _tokenTransfer(sender, recipient,amount,takeFee); } function swapTokens(uint256 contractTokenBalance) private lockTheSwap { uint256 initialBalance = address(this).balance; swapTokensForEth(contractTokenBalance); uint256 transferredBalance = address(this).balance.sub(initialBalance); transferToAddressETH(teamDevAddress, transferredBalance.div(2)); } function buyBackTokens(uint256 amount) private lockTheSwap { if (amount > 0) { swapETHForTokens(amount); } } function setFee(uint256 impactFee) private { uint256 _impactFee = _baseLiqFee; if(impactFee < _baseLiqFee) { _impactFee = _baseLiqFee; } else if(impactFee > 20) { _impactFee = 20; } else { _impactFee = impactFee; } if(_impactFee.mod(2) != 0) { _impactFee++; } _liquidityFee = _impactFee; } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function swapETHForTokens(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = address(this); // make the swap uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, // accept any amount of Tokens path, deadAddress, // Burn address block.timestamp.add(300) ); emit SwapETHForTokens(amount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function _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]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_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; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function setTeamDevAddress(address _teamDevAddress) external onlyOwner() { teamDevAddress = payable(_teamDevAddress); } function setBuyBackEnabled(bool _enabled) public onlyOwner { buyBackEnabled = _enabled; emit BuyBackEnabledUpdated(_enabled); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function setMinTrigger(uint256 newTrigger) external onlyOwner() { _minTrigger= newTrigger; } function setK (uint256 newK) external onlyOwner() { k = newK; } function setBaseAmount(uint256 baseAmount) external onlyOwner() { _baseAmount=baseAmount; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { require((_baseLiqFee+taxFee)<=20); _taxFee = taxFee; _previousTaxFee=taxFee; } function setBaseLiqFeePercent(uint256 baseLiqFee) external onlyOwner() { require((baseLiqFee+_taxFee)<=20); _baseLiqFee = baseLiqFee; } //to recieve ETH from uniswapV2Router when swapping receive() external payable {} }
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":"bool","name":"enabled","type":"bool"}],"name":"BuyBackEnabledUpdated","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":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_baseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_baseLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minTrigger","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isRemovedSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"k","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"baseAmount","type":"uint256"}],"name":"setBaseAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"baseLiqFee","type":"uint256"}],"name":"setBaseLiqFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBuyBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newK","type":"uint256"}],"name":"setK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTrigger","type":"uint256"}],"name":"setMinTrigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_teamDevAddress","type":"address"}],"name":"setTeamDevAddress","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":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526ddead000000000000000000000000608052683635c9adc5dea00000600c8190556200003390600019620002d5565b620000419060001962000274565b600d556040805180820190915260148082527f477265656e2057616c6c2047656e657261746f7200000000000000000000000060209092019182526200008a91600f91620001ce565b5060408051808201909152600a80825269105b1c1a185093d3d4d560b21b6020909201918252620000be91601091620001ce565b506011805460ff19908116600917909155600060148190556015819055601681905560178190556019805490921660019081179092556103e8601a55601b55600a601c5566038d7ea4c68000601d55601f805461ffff191690911790556020805461ffff60a81b191690553480156200013657600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d5433600081815260036020908152604080832094909455600c549351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620002f6565b828054620001dc9062000298565b90600052602060002090601f0160209004810192826200020057600085556200024b565b82601f106200021b57805160ff19168380011785556200024b565b828001600101855582156200024b579182015b828111156200024b5782518255916020019190600101906200022e565b50620002599291506200025d565b5090565b5b808211156200025957600081556001016200025e565b6000828210156200029357634e487b7160e01b81526011600452602481fd5b500390565b600181811c90821680620002ad57607f821691505b60208210811415620002cf57634e487b7160e01b600052602260045260246000fd5b50919050565b600082620002f157634e487b7160e01b81526012600452602481fd5b500690565b60805160601c612e646200031c600039600081816103ce01526125b60152612e646000f3fe6080604052600436106102815760003560e01c8063610d5b191161014f578063975c0ed3116100c1578063dd4670641161007a578063dd4670641461079d578063dd62ed3e146107bd578063e2c335db14610803578063f03e63b414610819578063f2fde38b14610839578063ffb54a991461085957600080fd5b8063975c0ed3146106fc578063a3b855ce14610712578063a457c2d714610732578063a69df4b514610752578063a9059cbb14610767578063b4f40c611461078757600080fd5b80637f160346116101135780637f160346146106465780638203f5fe1461066657806388f820201461067b5780638a8c523c146106b45780638da5cb5b146106c957806395d89b41146106e757600080fd5b8063610d5b19146105a157806367de8be9146105da5780636bc87c3a146105fa57806370a0823114610610578063790ca4131461063057600080fd5b8063313ce567116101f35780634a74bb02116101ac5780634a74bb02146104e85780634ddfae4b146105095780635342acb41461051f578063557ed1ba14610558578063602bc62b1461056b5780636053a0e31461058057600080fd5b8063313ce5671461043057806339509351146104525780633b124fe7146104725780633bd5d173146104885780634549b039146104a857806349bd5a5e146104c857600080fd5b806318160ddd1161024557806318160ddd14610367578063224a7c6a1461037c57806323b872dd1461039c57806327c8f835146103bc57806329370cc6146103f05780632d8381191461041057600080fd5b8063061c82d01461028d57806306fdde03146102af578063095ea7b3146102da57806313114a9d1461030a5780631694505e1461032957600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a8366004612b39565b610878565b005b3480156102bb57600080fd5b506102c46108d0565b6040516102d19190612bf4565b60405180910390f35b3480156102e657600080fd5b506102fa6102f5366004612af4565b610962565b60405190151581526020016102d1565b34801561031657600080fd5b50600e545b6040519081526020016102d1565b34801561033557600080fd5b50601f5461034f906201000090046001600160a01b031681565b6040516001600160a01b0390911681526020016102d1565b34801561037357600080fd5b50600c5461031b565b34801561038857600080fd5b506102ad610397366004612b39565b610979565b3480156103a857600080fd5b506102fa6103b7366004612ab4565b6109a8565b3480156103c857600080fd5b5061034f7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fc57600080fd5b506102ad61040b366004612b1f565b610a11565b34801561041c57600080fd5b5061031b61042b366004612b39565b610a8b565b34801561043c57600080fd5b5060115460405160ff90911681526020016102d1565b34801561045e57600080fd5b506102fa61046d366004612af4565b610b0f565b34801561047e57600080fd5b5061031b60145481565b34801561049457600080fd5b506102ad6104a3366004612b39565b610b45565b3480156104b457600080fd5b5061031b6104c3366004612b51565b610c2f565b3480156104d457600080fd5b5060205461034f906001600160a01b031681565b3480156104f457600080fd5b506020546102fa90600160a81b900460ff1681565b34801561051557600080fd5b5061031b601d5481565b34801561052b57600080fd5b506102fa61053a366004612a44565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561056457600080fd5b504261031b565b34801561057757600080fd5b5060025461031b565b34801561058c57600080fd5b506020546102fa90600160b01b900460ff1681565b3480156105ad57600080fd5b506102fa6105bc366004612a44565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156105e657600080fd5b506102ad6105f5366004612b39565b610cbc565b34801561060657600080fd5b5061031b60165481565b34801561061c57600080fd5b5061031b61062b366004612a44565b610ceb565b34801561063c57600080fd5b5061031b60125481565b34801561065257600080fd5b506102ad610661366004612b39565b610d4a565b34801561067257600080fd5b506102ad610d92565b34801561068757600080fd5b506102fa610696366004612a44565b6001600160a01b03166000908152600a602052604090205460ff1690565b3480156106c057600080fd5b506102ad610fe3565b3480156106d557600080fd5b506000546001600160a01b031661034f565b3480156106f357600080fd5b506102c4611060565b34801561070857600080fd5b5061031b60185481565b34801561071e57600080fd5b506102ad61072d366004612b39565b61106f565b34801561073e57600080fd5b506102fa61074d366004612af4565b61109e565b34801561075e57600080fd5b506102ad6110ed565b34801561077357600080fd5b506102fa610782366004612af4565b611205565b34801561079357600080fd5b5061031b601c5481565b3480156107a957600080fd5b506102ad6107b8366004612b39565b611212565b3480156107c957600080fd5b5061031b6107d8366004612a7c565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561080f57600080fd5b5061031b601b5481565b34801561082557600080fd5b506102ad610834366004612a44565b6112a9565b34801561084557600080fd5b506102ad610854366004612a44565b6112fb565b34801561086557600080fd5b50601f546102fa90610100900460ff1681565b6000546001600160a01b031633146108ab5760405162461bcd60e51b81526004016108a290612c47565b60405180910390fd5b6014816018546108bb9190612cd1565b11156108c657600080fd5b6014819055601555565b6060600f80546108df90612d33565b80601f016020809104026020016040519081016040528092919081815260200182805461090b90612d33565b80156109585780601f1061092d57610100808354040283529160200191610958565b820191906000526020600020905b81548152906001019060200180831161093b57829003601f168201915b5050505050905090565b600061096f3384846113e5565b5060015b92915050565b6000546001600160a01b031633146109a35760405162461bcd60e51b81526004016108a290612c47565b601d55565b60006109b5848484611509565b610a078433610a0285604051806060016040528060288152602001612de2602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611b93565b6113e5565b5060019392505050565b6000546001600160a01b03163314610a3b5760405162461bcd60e51b81526004016108a290612c47565b6020805460ff60b01b1916600160b01b8315159081029190911782556040519081527f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c0910160405180910390a150565b6000600d54821115610af25760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108a2565b6000610afc611bcd565b9050610b088382611bf0565b9392505050565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161096f918590610a029086611c32565b336000818152600a602052604090205460ff1615610bba5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108a2565b6000610bc583611c91565b505050506001600160a01b038416600090815260036020526040902054919250610bf191905082611ce0565b6001600160a01b038316600090815260036020526040902055600d54610c179082611ce0565b600d55600e54610c279084611c32565b600e55505050565b6000600c54831115610c835760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108a2565b81610ca2576000610c9384611c91565b50939550610973945050505050565b6000610cad84611c91565b50929550610973945050505050565b6000546001600160a01b03163314610ce65760405162461bcd60e51b81526004016108a290612c47565b601c55565b6001600160a01b0381166000908152600a602052604081205460ff1615610d2857506001600160a01b031660009081526004602052604090205490565b6001600160a01b03821660009081526003602052604090205461097390610a8b565b6000546001600160a01b03163314610d745760405162461bcd60e51b81526004016108a290612c47565b60148054610d829083612cd1565b1115610d8d57600080fd5b601855565b6000546001600160a01b03163314610dbc5760405162461bcd60e51b81526004016108a290612c47565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0e57600080fd5b505afa158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e469190612a60565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8e57600080fd5b505afa158015610ea2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec69190612a60565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610f0e57600080fd5b505af1158015610f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f469190612a60565b602080546001600160a01b039283166001600160a01b0319909116178155601f8054938316620100000262010000600160b01b03199094169390931790925560008054909116815260099091526040808220805460ff199081166001908117909255308452919092208054909116909117905560118054610100600160a81b031916741ef1347220a5b8587e89afe9916e53356d7d92e500179055565b6000546001600160a01b0316331461100d5760405162461bcd60e51b81526004016108a290612c47565b678ac7230489e80000601e55600f601881905560165560006014556020805460ff60a81b1916600160a81b179055601f805461ff00191661010017905542601281905561105b9060f0612cd1565b601355565b6060601080546108df90612d33565b6000546001600160a01b031633146110995760405162461bcd60e51b81526004016108a290612c47565b601b55565b600061096f3384610a0285604051806060016040528060258152602001612e0a602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190611b93565b6001546001600160a01b031633146111535760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016108a2565b60025442116111a45760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016108a2565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600061096f338484611509565b6000546001600160a01b0316331461123c5760405162461bcd60e51b81526004016108a290612c47565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561126b8142612cd1565b600255600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b031633146112d35760405162461bcd60e51b81526004016108a290612c47565b601180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146113255760405162461bcd60e51b81526004016108a290612c47565b6001600160a01b03811661138a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166114475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a2565b6001600160a01b0382166114a85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a2565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661156d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a2565b6001600160a01b0382166115cf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a2565b600081116116315760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a2565b6001600160a01b03821660009081526007602052604090205460ff16156116945760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b60448201526064016108a2565b3360009081526007602052604090205460ff16156116ee5760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b60448201526064016108a2565b6000546001600160a01b0384811691161480159061171a57506000546001600160a01b03838116911614155b1561184557601f54610100900460ff166117d1576001600160a01b03831630148061174d57506001600160a01b03821630145b8061176557506000546001600160a01b038481169116145b8061177d57506000546001600160a01b038381169116145b6117d157601f54610100900460ff166117d15760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016108a2565b601f5460ff1615611845573360009081526006602052604090206002015460ff1661184557604080516060810182526000808252602080830182815260018486018181523385526006909352949092209251835590519282019290925590516002909101805460ff19169115159190911790555b6020546001600160a01b0384811691161480156118765750601f546001600160a01b03838116620100009092041614155b801561189b57506001600160a01b03821660009081526009602052604090205460ff16155b156119eb57601f54610100900460ff166118f75760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e000000000000000060448201526064016108a2565b601854601655601f5460ff16156119b8574260135411156119b857601e5481111561192157600080fd5b6001600160a01b03821660009081526006602052604090205442116119935760405162461bcd60e51b815260206004820152602260248201527f596f75722062757920636f6f6c646f776e20686173206e6f7420657870697265604482015261321760f11b60648201526084016108a2565b61199e42602d612cd1565b6001600160a01b0383166000908152600660205260409020555b601f5460ff16156119eb576119ce42600f612cd1565b6001600160a01b0383166000908152600660205260409020600101555b602054600160a01b900460ff16158015611a0e5750602054600160a81b900460ff165b8015611a2757506020546001600160a01b038381169116145b15611b365760195460ff1615611a8a576000611a4e601a5483611d2290919063ffffffff16565b602054909150611a7d90611a76908490611a70906001600160a01b0316610ceb565b90611c32565b8290611bf0565b9050611a8881611da1565b505b6016546000611a9830610ceb565b90508015611aa957611aa981611ded565b6020544790600160b01b900460ff168015611ac65750601b548410155b15611b30576000600a90506000611b1b600a611b05611b12611b0b601854611b05601c54611aff6018548e611ce090919063ffffffff16565b90611d22565b90611bf0565b8690611c32565b601d5490611d22565b9050808310611b2d57611b2d81611e50565b50505b50506016555b6001600160a01b03831660009081526009602052604090205460019060ff1680611b7857506001600160a01b03831660009081526009602052604090205460ff165b15611b81575060005b611b8d84848484611e82565b50505050565b60008184841115611bb75760405162461bcd60e51b81526004016108a29190612bf4565b506000611bc48486612d1c565b95945050505050565b6000806000611bda611fa7565b9092509050611be98282611bf0565b9250505090565b6000610b0883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612161565b600080611c3f8385612cd1565b905083811015610b085760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108a2565b6000806000806000806000806000611ca88a61218f565b9250925092506000806000611cc68d8686611cc1611bcd565b6121d1565b919f909e50909c50959a5093985091965092945050505050565b6000610b0883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b93565b600082611d3157506000610973565b6000611d3d8385612cfd565b905082611d4a8583612ce9565b14610b085760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108a2565b60185480821015611db55750601854611dc9565b6014821115611dc657506014611dc9565b50805b611dd4816002612221565b15611de75780611de381612d6e565b9150505b60165550565b6020805460ff60a01b1916600160a01b17905547611e0a82612263565b6000611e164783611ce0565b601154909150611e3e9061010090046001600160a01b0316611e39836002611bf0565b612446565b50506020805460ff60a01b1916905550565b6020805460ff60a01b1916600160a01b1790558015611e7257611e7281612481565b506020805460ff60a01b19169055565b80611e8f57611e8f612663565b6001600160a01b0384166000908152600a602052604090205460ff168015611ed057506001600160a01b0383166000908152600a602052604090205460ff16155b15611ee557611ee0848484612691565b611f91565b6001600160a01b0384166000908152600a602052604090205460ff16158015611f2657506001600160a01b0383166000908152600a602052604090205460ff165b15611f3657611ee08484846127b7565b6001600160a01b0384166000908152600a602052604090205460ff168015611f7657506001600160a01b0383166000908152600a602052604090205460ff165b15611f8657611ee0848484612860565b611f918484846128d3565b80611b8d57611b8d601554601455601754601655565b600d54600c546000918291825b600b54811015612131578260036000600b8481548110611fe457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061205d57508160046000600b848154811061203657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561207357600d54600c54945094505050509091565b6120c760036000600b848154811061209b57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611ce0565b925061211d60046000600b84815481106120f157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611ce0565b91508061212981612d6e565b915050611fb4565b50600c54600d5461214191611bf0565b82101561215857600d54600c549350935050509091565b90939092509050565b600081836121825760405162461bcd60e51b81526004016108a29190612bf4565b506000611bc48486612ce9565b60008060008061219e85612917565b905060006121ab86612933565b905060006121c3826121bd8986611ce0565b90611ce0565b979296509094509092505050565b60008080806121e08886611d22565b905060006121ee8887611d22565b905060006121fc8888611d22565b9050600061220e826121bd8686611ce0565b939b939a50919850919650505050505050565b6000610b0883836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525061294f565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122a657634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561231457600080fd5b505afa158015612328573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234c9190612a60565b8160018151811061236d57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f5461239991309162010000900416846113e5565b601f5460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906123d7908590600090869030904290600401612c95565b600060405180830381600087803b1580156123f157600080fd5b505af1158015612405573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161243a929190612c7c565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561247c573d6000803e3d6000fd5b505050565b604080516002808252606082018352600092602083019080368337019050509050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156124f057600080fd5b505afa158015612504573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125289190612a60565b8160008151811061254957634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061258b57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f546201000090041663b6f9de95836000847f00000000000000000000000000000000000000000000000000000000000000006125e14261012c611c32565b6040518663ffffffff1660e01b81526004016126009493929190612bbf565b6000604051808303818588803b15801561261957600080fd5b505af115801561262d573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a9624828260405161243a929190612c7c565b6014541580156126735750601654155b1561267a57565b601480546015556016805460175560009182905555565b6000806000806000806126a387611c91565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506126d59088611ce0565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546127049087611ce0565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546127339086611c32565b6001600160a01b03891660009081526003602052604090205561275581612983565b61275f8483612a0b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127a491815260200190565b60405180910390a3505050505050505050565b6000806000806000806127c987611c91565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506127fb9087611ce0565b6001600160a01b03808b16600090815260036020908152604080832094909455918b168152600490915220546128319084611c32565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546127339086611c32565b60008060008060008061287287611c91565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506128a49088611ce0565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546127fb9087611ce0565b6000806000806000806128e587611c91565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506127049087611ce0565b60006109736064611b0560145485611d2290919063ffffffff16565b60006109736064611b0560165485611d2290919063ffffffff16565b600081836129705760405162461bcd60e51b81526004016108a29190612bf4565b5061297b8385612d89565b949350505050565b600061298d611bcd565b9050600061299b8383611d22565b306000908152600360205260409020549091506129b89082611c32565b30600090815260036020908152604080832093909355600a9052205460ff161561247c57306000908152600460205260409020546129f69084611c32565b30600090815260046020526040902055505050565b600d54612a189083611ce0565b600d55600e54612a289082611c32565b600e555050565b80358015158114612a3f57600080fd5b919050565b600060208284031215612a55578081fd5b8135610b0881612dc9565b600060208284031215612a71578081fd5b8151610b0881612dc9565b60008060408385031215612a8e578081fd5b8235612a9981612dc9565b91506020830135612aa981612dc9565b809150509250929050565b600080600060608486031215612ac8578081fd5b8335612ad381612dc9565b92506020840135612ae381612dc9565b929592945050506040919091013590565b60008060408385031215612b06578182fd5b8235612b1181612dc9565b946020939093013593505050565b600060208284031215612b30578081fd5b610b0882612a2f565b600060208284031215612b4a578081fd5b5035919050565b60008060408385031215612b63578182fd5b82359150612b7360208401612a2f565b90509250929050565b6000815180845260208085019450808401835b83811015612bb45781516001600160a01b031687529582019590820190600101612b8f565b509495945050505050565b848152608060208201526000612bd86080830186612b7c565b6001600160a01b03949094166040830152506060015292915050565b6000602080835283518082850152825b81811015612c2057858101830151858201604001528201612c04565b81811115612c315783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b82815260406020820152600061297b6040830184612b7c565b85815284602082015260a060408201526000612cb460a0830186612b7c565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612ce457612ce4612d9d565b500190565b600082612cf857612cf8612db3565b500490565b6000816000190483118215151615612d1757612d17612d9d565b500290565b600082821015612d2e57612d2e612d9d565b500390565b600181811c90821680612d4757607f821691505b60208210811415612d6857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612d8257612d82612d9d565b5060010190565b600082612d9857612d98612db3565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b0381168114612dde57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220eb400ba7c3b89176e6c82d8648afb435c40897638d1412503bbd7624d407ccae64736f6c63430008040033
Deployed Bytecode
0x6080604052600436106102815760003560e01c8063610d5b191161014f578063975c0ed3116100c1578063dd4670641161007a578063dd4670641461079d578063dd62ed3e146107bd578063e2c335db14610803578063f03e63b414610819578063f2fde38b14610839578063ffb54a991461085957600080fd5b8063975c0ed3146106fc578063a3b855ce14610712578063a457c2d714610732578063a69df4b514610752578063a9059cbb14610767578063b4f40c611461078757600080fd5b80637f160346116101135780637f160346146106465780638203f5fe1461066657806388f820201461067b5780638a8c523c146106b45780638da5cb5b146106c957806395d89b41146106e757600080fd5b8063610d5b19146105a157806367de8be9146105da5780636bc87c3a146105fa57806370a0823114610610578063790ca4131461063057600080fd5b8063313ce567116101f35780634a74bb02116101ac5780634a74bb02146104e85780634ddfae4b146105095780635342acb41461051f578063557ed1ba14610558578063602bc62b1461056b5780636053a0e31461058057600080fd5b8063313ce5671461043057806339509351146104525780633b124fe7146104725780633bd5d173146104885780634549b039146104a857806349bd5a5e146104c857600080fd5b806318160ddd1161024557806318160ddd14610367578063224a7c6a1461037c57806323b872dd1461039c57806327c8f835146103bc57806329370cc6146103f05780632d8381191461041057600080fd5b8063061c82d01461028d57806306fdde03146102af578063095ea7b3146102da57806313114a9d1461030a5780631694505e1461032957600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a8366004612b39565b610878565b005b3480156102bb57600080fd5b506102c46108d0565b6040516102d19190612bf4565b60405180910390f35b3480156102e657600080fd5b506102fa6102f5366004612af4565b610962565b60405190151581526020016102d1565b34801561031657600080fd5b50600e545b6040519081526020016102d1565b34801561033557600080fd5b50601f5461034f906201000090046001600160a01b031681565b6040516001600160a01b0390911681526020016102d1565b34801561037357600080fd5b50600c5461031b565b34801561038857600080fd5b506102ad610397366004612b39565b610979565b3480156103a857600080fd5b506102fa6103b7366004612ab4565b6109a8565b3480156103c857600080fd5b5061034f7f000000000000000000000000000000000000000000000000000000000000dead81565b3480156103fc57600080fd5b506102ad61040b366004612b1f565b610a11565b34801561041c57600080fd5b5061031b61042b366004612b39565b610a8b565b34801561043c57600080fd5b5060115460405160ff90911681526020016102d1565b34801561045e57600080fd5b506102fa61046d366004612af4565b610b0f565b34801561047e57600080fd5b5061031b60145481565b34801561049457600080fd5b506102ad6104a3366004612b39565b610b45565b3480156104b457600080fd5b5061031b6104c3366004612b51565b610c2f565b3480156104d457600080fd5b5060205461034f906001600160a01b031681565b3480156104f457600080fd5b506020546102fa90600160a81b900460ff1681565b34801561051557600080fd5b5061031b601d5481565b34801561052b57600080fd5b506102fa61053a366004612a44565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561056457600080fd5b504261031b565b34801561057757600080fd5b5060025461031b565b34801561058c57600080fd5b506020546102fa90600160b01b900460ff1681565b3480156105ad57600080fd5b506102fa6105bc366004612a44565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156105e657600080fd5b506102ad6105f5366004612b39565b610cbc565b34801561060657600080fd5b5061031b60165481565b34801561061c57600080fd5b5061031b61062b366004612a44565b610ceb565b34801561063c57600080fd5b5061031b60125481565b34801561065257600080fd5b506102ad610661366004612b39565b610d4a565b34801561067257600080fd5b506102ad610d92565b34801561068757600080fd5b506102fa610696366004612a44565b6001600160a01b03166000908152600a602052604090205460ff1690565b3480156106c057600080fd5b506102ad610fe3565b3480156106d557600080fd5b506000546001600160a01b031661034f565b3480156106f357600080fd5b506102c4611060565b34801561070857600080fd5b5061031b60185481565b34801561071e57600080fd5b506102ad61072d366004612b39565b61106f565b34801561073e57600080fd5b506102fa61074d366004612af4565b61109e565b34801561075e57600080fd5b506102ad6110ed565b34801561077357600080fd5b506102fa610782366004612af4565b611205565b34801561079357600080fd5b5061031b601c5481565b3480156107a957600080fd5b506102ad6107b8366004612b39565b611212565b3480156107c957600080fd5b5061031b6107d8366004612a7c565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561080f57600080fd5b5061031b601b5481565b34801561082557600080fd5b506102ad610834366004612a44565b6112a9565b34801561084557600080fd5b506102ad610854366004612a44565b6112fb565b34801561086557600080fd5b50601f546102fa90610100900460ff1681565b6000546001600160a01b031633146108ab5760405162461bcd60e51b81526004016108a290612c47565b60405180910390fd5b6014816018546108bb9190612cd1565b11156108c657600080fd5b6014819055601555565b6060600f80546108df90612d33565b80601f016020809104026020016040519081016040528092919081815260200182805461090b90612d33565b80156109585780601f1061092d57610100808354040283529160200191610958565b820191906000526020600020905b81548152906001019060200180831161093b57829003601f168201915b5050505050905090565b600061096f3384846113e5565b5060015b92915050565b6000546001600160a01b031633146109a35760405162461bcd60e51b81526004016108a290612c47565b601d55565b60006109b5848484611509565b610a078433610a0285604051806060016040528060288152602001612de2602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611b93565b6113e5565b5060019392505050565b6000546001600160a01b03163314610a3b5760405162461bcd60e51b81526004016108a290612c47565b6020805460ff60b01b1916600160b01b8315159081029190911782556040519081527f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c0910160405180910390a150565b6000600d54821115610af25760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108a2565b6000610afc611bcd565b9050610b088382611bf0565b9392505050565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161096f918590610a029086611c32565b336000818152600a602052604090205460ff1615610bba5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108a2565b6000610bc583611c91565b505050506001600160a01b038416600090815260036020526040902054919250610bf191905082611ce0565b6001600160a01b038316600090815260036020526040902055600d54610c179082611ce0565b600d55600e54610c279084611c32565b600e55505050565b6000600c54831115610c835760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108a2565b81610ca2576000610c9384611c91565b50939550610973945050505050565b6000610cad84611c91565b50929550610973945050505050565b6000546001600160a01b03163314610ce65760405162461bcd60e51b81526004016108a290612c47565b601c55565b6001600160a01b0381166000908152600a602052604081205460ff1615610d2857506001600160a01b031660009081526004602052604090205490565b6001600160a01b03821660009081526003602052604090205461097390610a8b565b6000546001600160a01b03163314610d745760405162461bcd60e51b81526004016108a290612c47565b60148054610d829083612cd1565b1115610d8d57600080fd5b601855565b6000546001600160a01b03163314610dbc5760405162461bcd60e51b81526004016108a290612c47565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0e57600080fd5b505afa158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e469190612a60565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8e57600080fd5b505afa158015610ea2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec69190612a60565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610f0e57600080fd5b505af1158015610f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f469190612a60565b602080546001600160a01b039283166001600160a01b0319909116178155601f8054938316620100000262010000600160b01b03199094169390931790925560008054909116815260099091526040808220805460ff199081166001908117909255308452919092208054909116909117905560118054610100600160a81b031916741ef1347220a5b8587e89afe9916e53356d7d92e500179055565b6000546001600160a01b0316331461100d5760405162461bcd60e51b81526004016108a290612c47565b678ac7230489e80000601e55600f601881905560165560006014556020805460ff60a81b1916600160a81b179055601f805461ff00191661010017905542601281905561105b9060f0612cd1565b601355565b6060601080546108df90612d33565b6000546001600160a01b031633146110995760405162461bcd60e51b81526004016108a290612c47565b601b55565b600061096f3384610a0285604051806060016040528060258152602001612e0a602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190611b93565b6001546001600160a01b031633146111535760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016108a2565b60025442116111a45760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016108a2565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600061096f338484611509565b6000546001600160a01b0316331461123c5760405162461bcd60e51b81526004016108a290612c47565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561126b8142612cd1565b600255600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b031633146112d35760405162461bcd60e51b81526004016108a290612c47565b601180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146113255760405162461bcd60e51b81526004016108a290612c47565b6001600160a01b03811661138a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166114475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a2565b6001600160a01b0382166114a85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a2565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661156d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a2565b6001600160a01b0382166115cf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a2565b600081116116315760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a2565b6001600160a01b03821660009081526007602052604090205460ff16156116945760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b60448201526064016108a2565b3360009081526007602052604090205460ff16156116ee5760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b60448201526064016108a2565b6000546001600160a01b0384811691161480159061171a57506000546001600160a01b03838116911614155b1561184557601f54610100900460ff166117d1576001600160a01b03831630148061174d57506001600160a01b03821630145b8061176557506000546001600160a01b038481169116145b8061177d57506000546001600160a01b038381169116145b6117d157601f54610100900460ff166117d15760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016108a2565b601f5460ff1615611845573360009081526006602052604090206002015460ff1661184557604080516060810182526000808252602080830182815260018486018181523385526006909352949092209251835590519282019290925590516002909101805460ff19169115159190911790555b6020546001600160a01b0384811691161480156118765750601f546001600160a01b03838116620100009092041614155b801561189b57506001600160a01b03821660009081526009602052604090205460ff16155b156119eb57601f54610100900460ff166118f75760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e000000000000000060448201526064016108a2565b601854601655601f5460ff16156119b8574260135411156119b857601e5481111561192157600080fd5b6001600160a01b03821660009081526006602052604090205442116119935760405162461bcd60e51b815260206004820152602260248201527f596f75722062757920636f6f6c646f776e20686173206e6f7420657870697265604482015261321760f11b60648201526084016108a2565b61199e42602d612cd1565b6001600160a01b0383166000908152600660205260409020555b601f5460ff16156119eb576119ce42600f612cd1565b6001600160a01b0383166000908152600660205260409020600101555b602054600160a01b900460ff16158015611a0e5750602054600160a81b900460ff165b8015611a2757506020546001600160a01b038381169116145b15611b365760195460ff1615611a8a576000611a4e601a5483611d2290919063ffffffff16565b602054909150611a7d90611a76908490611a70906001600160a01b0316610ceb565b90611c32565b8290611bf0565b9050611a8881611da1565b505b6016546000611a9830610ceb565b90508015611aa957611aa981611ded565b6020544790600160b01b900460ff168015611ac65750601b548410155b15611b30576000600a90506000611b1b600a611b05611b12611b0b601854611b05601c54611aff6018548e611ce090919063ffffffff16565b90611d22565b90611bf0565b8690611c32565b601d5490611d22565b9050808310611b2d57611b2d81611e50565b50505b50506016555b6001600160a01b03831660009081526009602052604090205460019060ff1680611b7857506001600160a01b03831660009081526009602052604090205460ff165b15611b81575060005b611b8d84848484611e82565b50505050565b60008184841115611bb75760405162461bcd60e51b81526004016108a29190612bf4565b506000611bc48486612d1c565b95945050505050565b6000806000611bda611fa7565b9092509050611be98282611bf0565b9250505090565b6000610b0883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612161565b600080611c3f8385612cd1565b905083811015610b085760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108a2565b6000806000806000806000806000611ca88a61218f565b9250925092506000806000611cc68d8686611cc1611bcd565b6121d1565b919f909e50909c50959a5093985091965092945050505050565b6000610b0883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b93565b600082611d3157506000610973565b6000611d3d8385612cfd565b905082611d4a8583612ce9565b14610b085760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108a2565b60185480821015611db55750601854611dc9565b6014821115611dc657506014611dc9565b50805b611dd4816002612221565b15611de75780611de381612d6e565b9150505b60165550565b6020805460ff60a01b1916600160a01b17905547611e0a82612263565b6000611e164783611ce0565b601154909150611e3e9061010090046001600160a01b0316611e39836002611bf0565b612446565b50506020805460ff60a01b1916905550565b6020805460ff60a01b1916600160a01b1790558015611e7257611e7281612481565b506020805460ff60a01b19169055565b80611e8f57611e8f612663565b6001600160a01b0384166000908152600a602052604090205460ff168015611ed057506001600160a01b0383166000908152600a602052604090205460ff16155b15611ee557611ee0848484612691565b611f91565b6001600160a01b0384166000908152600a602052604090205460ff16158015611f2657506001600160a01b0383166000908152600a602052604090205460ff165b15611f3657611ee08484846127b7565b6001600160a01b0384166000908152600a602052604090205460ff168015611f7657506001600160a01b0383166000908152600a602052604090205460ff165b15611f8657611ee0848484612860565b611f918484846128d3565b80611b8d57611b8d601554601455601754601655565b600d54600c546000918291825b600b54811015612131578260036000600b8481548110611fe457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061205d57508160046000600b848154811061203657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561207357600d54600c54945094505050509091565b6120c760036000600b848154811061209b57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611ce0565b925061211d60046000600b84815481106120f157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611ce0565b91508061212981612d6e565b915050611fb4565b50600c54600d5461214191611bf0565b82101561215857600d54600c549350935050509091565b90939092509050565b600081836121825760405162461bcd60e51b81526004016108a29190612bf4565b506000611bc48486612ce9565b60008060008061219e85612917565b905060006121ab86612933565b905060006121c3826121bd8986611ce0565b90611ce0565b979296509094509092505050565b60008080806121e08886611d22565b905060006121ee8887611d22565b905060006121fc8888611d22565b9050600061220e826121bd8686611ce0565b939b939a50919850919650505050505050565b6000610b0883836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525061294f565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122a657634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561231457600080fd5b505afa158015612328573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234c9190612a60565b8160018151811061236d57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f5461239991309162010000900416846113e5565b601f5460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906123d7908590600090869030904290600401612c95565b600060405180830381600087803b1580156123f157600080fd5b505af1158015612405573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161243a929190612c7c565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561247c573d6000803e3d6000fd5b505050565b604080516002808252606082018352600092602083019080368337019050509050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156124f057600080fd5b505afa158015612504573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125289190612a60565b8160008151811061254957634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061258b57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f546201000090041663b6f9de95836000847f000000000000000000000000000000000000000000000000000000000000dead6125e14261012c611c32565b6040518663ffffffff1660e01b81526004016126009493929190612bbf565b6000604051808303818588803b15801561261957600080fd5b505af115801561262d573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a9624828260405161243a929190612c7c565b6014541580156126735750601654155b1561267a57565b601480546015556016805460175560009182905555565b6000806000806000806126a387611c91565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506126d59088611ce0565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546127049087611ce0565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546127339086611c32565b6001600160a01b03891660009081526003602052604090205561275581612983565b61275f8483612a0b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127a491815260200190565b60405180910390a3505050505050505050565b6000806000806000806127c987611c91565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506127fb9087611ce0565b6001600160a01b03808b16600090815260036020908152604080832094909455918b168152600490915220546128319084611c32565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546127339086611c32565b60008060008060008061287287611c91565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506128a49088611ce0565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546127fb9087611ce0565b6000806000806000806128e587611c91565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506127049087611ce0565b60006109736064611b0560145485611d2290919063ffffffff16565b60006109736064611b0560165485611d2290919063ffffffff16565b600081836129705760405162461bcd60e51b81526004016108a29190612bf4565b5061297b8385612d89565b949350505050565b600061298d611bcd565b9050600061299b8383611d22565b306000908152600360205260409020549091506129b89082611c32565b30600090815260036020908152604080832093909355600a9052205460ff161561247c57306000908152600460205260409020546129f69084611c32565b30600090815260046020526040902055505050565b600d54612a189083611ce0565b600d55600e54612a289082611c32565b600e555050565b80358015158114612a3f57600080fd5b919050565b600060208284031215612a55578081fd5b8135610b0881612dc9565b600060208284031215612a71578081fd5b8151610b0881612dc9565b60008060408385031215612a8e578081fd5b8235612a9981612dc9565b91506020830135612aa981612dc9565b809150509250929050565b600080600060608486031215612ac8578081fd5b8335612ad381612dc9565b92506020840135612ae381612dc9565b929592945050506040919091013590565b60008060408385031215612b06578182fd5b8235612b1181612dc9565b946020939093013593505050565b600060208284031215612b30578081fd5b610b0882612a2f565b600060208284031215612b4a578081fd5b5035919050565b60008060408385031215612b63578182fd5b82359150612b7360208401612a2f565b90509250929050565b6000815180845260208085019450808401835b83811015612bb45781516001600160a01b031687529582019590820190600101612b8f565b509495945050505050565b848152608060208201526000612bd86080830186612b7c565b6001600160a01b03949094166040830152506060015292915050565b6000602080835283518082850152825b81811015612c2057858101830151858201604001528201612c04565b81811115612c315783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b82815260406020820152600061297b6040830184612b7c565b85815284602082015260a060408201526000612cb460a0830186612b7c565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612ce457612ce4612d9d565b500190565b600082612cf857612cf8612db3565b500490565b6000816000190483118215151615612d1757612d17612d9d565b500290565b600082821015612d2e57612d2e612d9d565b500390565b600181811c90821680612d4757607f821691505b60208210811415612d6857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612d8257612d82612d9d565b5060010190565b600082612d9857612d98612db3565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b0381168114612dde57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220eb400ba7c3b89176e6c82d8648afb435c40897638d1412503bbd7624d407ccae64736f6c63430008040033
Deployed Bytecode Sourcemap
14988:20951:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35495:176;;;;;;;;;;-1:-1:-1;35495:176:0;;;;;:::i;:::-;;:::i;:::-;;18393:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19305:161;;;;;;;;;;-1:-1:-1;19305:161:0;;;;;:::i;:::-;;:::i;:::-;;;3714:14:1;;3707:22;3689:41;;3677:2;3662:18;19305:161:0;3644:92:1;20426:87:0;;;;;;;;;;-1:-1:-1;20495:10:0;;20426:87;;;12206:25:1;;;12194:2;12179:18;20426:87:0;12161:76:1;16719:41:0;;;;;;;;;;-1:-1:-1;16719:41:0;;;;;;;-1:-1:-1;;;;;16719:41:0;;;;;;-1:-1:-1;;;;;3196:32:1;;;3178:51;;3166:2;3151:18;16719:41:0;3133:102:1;18670:95:0;;;;;;;;;;-1:-1:-1;18750:7:0;;18670:95;;35367:109;;;;;;;;;;-1:-1:-1;35367:109:0;;;;;:::i;:::-;;:::i;19474:313::-;;;;;;;;;;-1:-1:-1;19474:313:0;;;;;:::i;:::-;;:::i;15105:81::-;;;;;;;;;;;;;;;34866:150;;;;;;;;;;-1:-1:-1;34866:150:0;;;;;:::i;:::-;;:::i;21356:253::-;;;;;;;;;;-1:-1:-1;21356:253:0;;;;;:::i;:::-;;:::i;18579:83::-;;;;;;;;;;-1:-1:-1;18645:9:0;;18579:83;;18645:9;;;;13308:36:1;;13296:2;13281:18;18579:83:0;13263:87:1;19795:218:0;;;;;;;;;;-1:-1:-1;19795:218:0;;;;;:::i;:::-;;:::i;16118:26::-;;;;;;;;;;;;;;;;20525:377;;;;;;;;;;-1:-1:-1;20525:377:0;;;;;:::i;:::-;;:::i;20912:436::-;;;;;;;;;;-1:-1:-1;20912:436:0;;;;;:::i;:::-;;:::i;16767:28::-;;;;;;;;;;-1:-1:-1;16767:28:0;;;;-1:-1:-1;;;;;16767:28:0;;;16832:41;;;;;;;;;;-1:-1:-1;16832:41:0;;;;-1:-1:-1;;;16832:41:0;;;;;;16502:37;;;;;;;;;;;;;;;;34584:123;;;;;;;;;;-1:-1:-1;34584:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;34672:27:0;34648:4;34672:27;;;:18;:27;;;;;;;;;34584:123;6426:90;;;;;;;;;;-1:-1:-1;6493:15:0;6426:90;;6328;;;;;;;;;;-1:-1:-1;6401:9:0;;6328:90;;16880:34;;;;;;;;;;-1:-1:-1;16880:34:0;;;;-1:-1:-1;;;16880:34:0;;;;;;21617:113;;;;;;;;;;-1:-1:-1;21617:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;21704:18:0;21680:4;21704:18;;;:9;:18;;;;;;;;;21617:113;35282:77;;;;;;;;;;-1:-1:-1;35282:77:0;;;;;:::i;:::-;;:::i;16199:30::-;;;;;;;;;;;;;;;;18773:198;;;;;;;;;;-1:-1:-1;18773:198:0;;;;;:::i;:::-;;:::i;16040:25::-;;;;;;;;;;;;;;;;35683:159;;;;;;;;;;-1:-1:-1;35683:159:0;;;;;:::i;:::-;;:::i;17862:523::-;;;;;;;;;;;;;:::i;20298:120::-;;;;;;;;;;-1:-1:-1;20298:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;20390:20:0;20366:4;20390:20;;;:11;:20;;;;;;;;;20298:120;17510:344;;;;;;;;;;;;;:::i;5856:79::-;;;;;;;;;;-1:-1:-1;5894:7:0;5921:6;-1:-1:-1;;;;;5921:6:0;5856:79;;18484:87;;;;;;;;;;;;;:::i;16296:26::-;;;;;;;;;;;;;;;;35164:106;;;;;;;;;;-1:-1:-1;35164:106:0;;;;;:::i;:::-;;:::i;20021:269::-;;;;;;;;;;-1:-1:-1;20021:269:0;;;;;:::i;:::-;;:::i;6758:305::-;;;;;;;;;;;;;:::i;18979:167::-;;;;;;;;;;-1:-1:-1;18979:167:0;;;;;:::i;:::-;;:::i;16474:21::-;;;;;;;;;;;;;;;;6524:226;;;;;;;;;;-1:-1:-1;6524:226:0;;;;;:::i;:::-;;:::i;19154:143::-;;;;;;;;;;-1:-1:-1;19154:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19262:18:0;;;19235:7;19262:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19154:143;16437:30;;;;;;;;;;;;;;;;34717:133;;;;;;;;;;-1:-1:-1;34717:133:0;;;;;:::i;:::-;;:::i;6076:244::-;;;;;;;;;;-1:-1:-1;6076:244:0;;;;;:::i;:::-;;:::i;16624:31::-;;;;;;;;;;-1:-1:-1;16624:31:0;;;;;;;;;;;35495:176;5983:6;;-1:-1:-1;;;;;5983:6:0;254:10;5983:22;5975:67;;;;-1:-1:-1;;;5975:67:0;;;;;;;:::i;:::-;;;;;;;;;35599:2:::1;35590:6;35578:11;;:18;;;;:::i;:::-;35577:24;;35569:33;;;::::0;::::1;;35614:7;:16:::0;;;35641:15:::1;:22:::0;35495:176::o;18393:83::-;18430:13;18463:5;18456:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18393:83;:::o;19305:161::-;19380:4;19397:39;254:10;19420:7;19429:6;19397:8;:39::i;:::-;-1:-1:-1;19454:4:0;19305:161;;;;;:::o;35367:109::-;5983:6;;-1:-1:-1;;;;;5983:6:0;254:10;5983:22;5975:67;;;;-1:-1:-1;;;5975:67:0;;;;;;;:::i;:::-;35446:11:::1;:22:::0;35367:109::o;19474:313::-;19572:4;19589:36;19599:6;19607:9;19618:6;19589:9;:36::i;:::-;19636:121;19645:6;254:10;19667:89;19705:6;19667:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19667:19:0;;;;;;:11;:19;;;;;;;;254:10;19667:33;;;;;;;;;;:37;:89::i;:::-;19636:8;:121::i;:::-;-1:-1:-1;19775:4:0;19474:313;;;;;:::o;34866:150::-;5983:6;;-1:-1:-1;;;;;5983:6:0;254:10;5983:22;5975:67;;;;-1:-1:-1;;;5975:67:0;;;;;;;:::i;:::-;34936:14:::1;:25:::0;;-1:-1:-1;;;;34936:25:0::1;-1:-1:-1::0;;;34936:25:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;34977:31:::1;::::0;3689:41:1;;;34977:31:0::1;::::0;3662:18:1;34977:31:0::1;;;;;;;34866:150:::0;:::o;21356:253::-;21422:7;21461;;21450;:18;;21442:73;;;;-1:-1:-1;;;21442:73:0;;5705:2:1;21442:73:0;;;5687:21:1;5744:2;5724:18;;;5717:30;5783:34;5763:18;;;5756:62;-1:-1:-1;;;5834:18:1;;;5827:40;5884:19;;21442:73:0;5677:232:1;21442:73:0;21526:19;21549:10;:8;:10::i;:::-;21526:33;-1:-1:-1;21577:24:0;:7;21526:33;21577:11;:24::i;:::-;21570:31;21356:253;-1:-1:-1;;;21356:253:0:o;19795:218::-;254:10;19883:4;19932:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19932:34:0;;;;;;;;;;19883:4;;19900:83;;19923:7;;19932:50;;19971:10;19932:38;:50::i;20525:377::-;254:10;20577:14;20626:19;;;:11;:19;;;;;;;;20625:20;20617:77;;;;-1:-1:-1;;;20617:77:0;;11093:2:1;20617:77:0;;;11075:21:1;11132:2;11112:18;;;11105:30;11171:34;11151:18;;;11144:62;-1:-1:-1;;;11222:18:1;;;11215:42;11274:19;;20617:77:0;11065:234:1;20617:77:0;20706:15;20730:19;20741:7;20730:10;:19::i;:::-;-1:-1:-1;;;;;;;;;20778:15:0;;;;;;:7;:15;;;;;;20705:44;;-1:-1:-1;20778:28:0;;:15;-1:-1:-1;20705:44:0;20778:19;:28::i;:::-;-1:-1:-1;;;;;20760:15:0;;;;;;:7;:15;;;;;:46;20827:7;;:20;;20839:7;20827:11;:20::i;:::-;20817:7;:30;20871:10;;:23;;20886:7;20871:14;:23::i;:::-;20858:10;:36;-1:-1:-1;;;20525:377:0:o;20912:436::-;21002:7;21041;;21030;:18;;21022:62;;;;-1:-1:-1;;;21022:62:0;;8036:2:1;21022:62:0;;;8018:21:1;8075:2;8055:18;;;8048:30;8114:33;8094:18;;;8087:61;8165:18;;21022:62:0;8008:181:1;21022:62:0;21100:17;21095:246;;21135:15;21159:19;21170:7;21159:10;:19::i;:::-;-1:-1:-1;21134:44:0;;-1:-1:-1;21193:14:0;;-1:-1:-1;;;;;21193:14:0;21095:246;21242:23;21273:19;21284:7;21273:10;:19::i;:::-;-1:-1:-1;21240:52:0;;-1:-1:-1;21307:22:0;;-1:-1:-1;;;;;21307:22:0;35282:77;5983:6;;-1:-1:-1;;;;;5983:6:0;254:10;5983:22;5975:67;;;;-1:-1:-1;;;5975:67:0;;;;;;;:::i;:::-;35343:1:::1;:8:::0;35282:77::o;18773:198::-;-1:-1:-1;;;;;18863:20:0;;18839:7;18863:20;;;:11;:20;;;;;;;;18859:49;;;-1:-1:-1;;;;;;18892:16:0;;;;;:7;:16;;;;;;;18773:198::o;18859:49::-;-1:-1:-1;;;;;18946:16:0;;;;;;:7;:16;;;;;;18926:37;;:19;:37::i;35683:159::-;5983:6;;-1:-1:-1;;;;;5983:6:0;254:10;5983:22;5975:67;;;;-1:-1:-1;;;5975:67:0;;;;;;;:::i;:::-;35795:2:::1;35785:7:::0;;35774:18:::1;::::0;:10;:18:::1;:::i;:::-;35773:24;;35765:33;;;::::0;::::1;;35810:11;:24:::0;35683:159::o;17862:523::-;5983:6;;-1:-1:-1;;;;;5983:6:0;254:10;5983:22;5975:67;;;;-1:-1:-1;;;5975:67:0;;;;;;;:::i;:::-;17918:35:::1;17975:42;17918:100;;18063:16;-1:-1:-1::0;;;;;18063:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18045:66:0::1;;18120:4;18127:16;-1:-1:-1::0;;;;;18127:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18045:106;::::0;-1:-1:-1;;;;;;18045:106:0::1;::::0;;;;;;-1:-1:-1;;;;;3470:15:1;;;18045:106:0::1;::::0;::::1;3452:34:1::0;3522:15;;3502:18;;;3495:43;3387:18;;18045:106:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18029:13;:122:::0;;-1:-1:-1;;;;;18029:122:0;;::::1;-1:-1:-1::0;;;;;;18029:122:0;;::::1;;::::0;;18164:15:::1;:34:::0;;;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;18164:34:0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;5921:6:0;;;;;18211:27;;:18:::1;:27:::0;;;;;;;:34;;-1:-1:-1;;18211:34:0;;::::1;-1:-1:-1::0;18211:34:0;;::::1;::::0;;;18283:4:::1;18256:33:::0;;;;;;:40;;;;::::1;::::0;;::::1;::::0;;18309:14:::1;:68:::0;;-1:-1:-1;;;;;;18309:68:0::1;::::0;::::1;::::0;;17862:523::o;17510:344::-;5983:6;;-1:-1:-1;;;;;5983:6:0;254:10;5983:22;5975:67;;;;-1:-1:-1;;;5975:67:0;;;;;;;:::i;:::-;17583:19:::1;17567:13;:35:::0;17625:2:::1;17613:11;:14:::0;;;17638:13:::1;:25:::0;-1:-1:-1;17674:7:0::1;:9:::0;17694:21:::1;:28:::0;;-1:-1:-1;;;;17694:28:0::1;-1:-1:-1::0;;;17694:28:0::1;::::0;;17733:11:::1;:18:::0;;-1:-1:-1;;17733:18:0::1;17694:28;17733:18;::::0;;17775:15:::1;17762:10;:28:::0;;;17815:31:::1;::::0;17834:11:::1;17815:31;:::i;:::-;17801:11;:45:::0;17510:344::o;18484:87::-;18523:13;18556:7;18549:14;;;;;:::i;35164:106::-;5983:6;;-1:-1:-1;;;;;5983:6:0;254:10;5983:22;5975:67;;;;-1:-1:-1;;;5975:67:0;;;;;;;:::i;:::-;35239:11:::1;:23:::0;35164:106::o;20021:269::-;20114:4;20131:129;254:10;20154:7;20163:96;20202:15;20163:96;;;;;;;;;;;;;;;;;254:10;20163:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20163:34:0;;;;;;;;;;;;:38;:96::i;6758:305::-;6810:14;;-1:-1:-1;;;;;6810:14:0;6828:10;6810:28;6802:76;;;;-1:-1:-1;;;6802:76:0;;11506:2:1;6802:76:0;;;11488:21:1;11545:2;11525:18;;;11518:30;11584:34;11564:18;;;11557:62;-1:-1:-1;;;11635:18:1;;;11628:33;11678:19;;6802:76:0;11478:225:1;6802:76:0;6915:9;;6897:15;:27;6889:72;;;;-1:-1:-1;;;6889:72:0;;10380:2:1;6889:72:0;;;10362:21:1;10419:2;10399:18;;;10392:30;10458:33;10438:18;;;10431:61;10509:18;;6889:72:0;10352:181:1;6889:72:0;7006:14;;;6998:6;;6977:44;;-1:-1:-1;;;;;7006:14:0;;;;6998:6;;;;6977:44;;;7041:14;;;7032:23;;-1:-1:-1;;;;;;7032:23:0;-1:-1:-1;;;;;7041:14:0;;;7032:23;;;;;;6758:305::o;18979:167::-;19057:4;19074:42;254:10;19098:9;19109:6;19074:9;:42::i;6524:226::-;5983:6;;-1:-1:-1;;;;;5983:6:0;254:10;5983:22;5975:67;;;;-1:-1:-1;;;5975:67:0;;;;;;;:::i;:::-;6605:6:::1;::::0;;;6588:23;;-1:-1:-1;;;;;;6588:23:0;;::::1;-1:-1:-1::0;;;;;6605:6:0;::::1;6588:23;::::0;;;6622:19:::1;::::0;;6664:22:::1;6682:4:::0;6664:15:::1;:22;:::i;:::-;6652:9;:34:::0;6739:1:::1;6723:6:::0;;6702:40:::1;::::0;-1:-1:-1;;;;;6723:6:0;;::::1;::::0;6702:40:::1;::::0;6739:1;;6702:40:::1;6524:226:::0;:::o;34717:133::-;5983:6;;-1:-1:-1;;;;;5983:6:0;254:10;5983:22;5975:67;;;;-1:-1:-1;;;5975:67:0;;;;;;;:::i;:::-;34801:14:::1;:41:::0;;-1:-1:-1;;;;;34801:41:0;;::::1;;;-1:-1:-1::0;;;;;;34801:41:0;;::::1;::::0;;;::::1;::::0;;34717:133::o;6076:244::-;5983:6;;-1:-1:-1;;;;;5983:6:0;254:10;5983:22;5975:67;;;;-1:-1:-1;;;5975:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6165:22:0;::::1;6157:73;;;::::0;-1:-1:-1;;;6157:73:0;;6116:2:1;6157:73:0::1;::::0;::::1;6098:21:1::0;6155:2;6135:18;;;6128:30;6194:34;6174:18;;;6167:62;-1:-1:-1;;;6245:18:1;;;6238:36;6291:19;;6157:73:0::1;6088:228:1::0;6157:73:0::1;6267:6;::::0;;6246:38:::1;::::0;-1:-1:-1;;;;;6246:38:0;;::::1;::::0;6267:6;::::1;::::0;6246:38:::1;::::0;::::1;6295:6;:17:::0;;-1:-1:-1;;;;;;6295:17:0::1;-1:-1:-1::0;;;;;6295:17:0;;;::::1;::::0;;;::::1;::::0;;6076:244::o;21738:337::-;-1:-1:-1;;;;;21831:19:0;;21823:68;;;;-1:-1:-1;;;21823:68:0;;9975:2:1;21823:68:0;;;9957:21:1;10014:2;9994:18;;;9987:30;10053:34;10033:18;;;10026:62;-1:-1:-1;;;10104:18:1;;;10097:34;10148:19;;21823:68:0;9947:226:1;21823:68:0;-1:-1:-1;;;;;21910:21:0;;21902:68;;;;-1:-1:-1;;;21902:68:0;;6523:2:1;21902:68:0;;;6505:21:1;6562:2;6542:18;;;6535:30;6601:34;6581:18;;;6574:62;-1:-1:-1;;;6652:18:1;;;6645:32;6694:19;;21902:68:0;6495:224:1;21902:68:0;-1:-1:-1;;;;;21983:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22035:32;;12206:25:1;;;22035:32:0;;12179:18:1;22035:32:0;;;;;;;21738:337;;;:::o;22083:3611::-;-1:-1:-1;;;;;22214:20:0;;22206:70;;;;-1:-1:-1;;;22206:70:0;;9569:2:1;22206:70:0;;;9551:21:1;9608:2;9588:18;;;9581:30;9647:34;9627:18;;;9620:62;-1:-1:-1;;;9698:18:1;;;9691:35;9743:19;;22206:70:0;9541:227:1;22206:70:0;-1:-1:-1;;;;;22295:23:0;;22287:71;;;;-1:-1:-1;;;22287:71:0;;5301:2:1;22287:71:0;;;5283:21:1;5340:2;5320:18;;;5313:30;5379:34;5359:18;;;5352:62;-1:-1:-1;;;5430:18:1;;;5423:33;5473:19;;22287:71:0;5273:225:1;22287:71:0;22386:1;22377:6;:10;22369:64;;;;-1:-1:-1;;;22369:64:0;;9159:2:1;22369:64:0;;;9141:21:1;9198:2;9178:18;;;9171:30;9237:34;9217:18;;;9210:62;-1:-1:-1;;;9288:18:1;;;9281:39;9337:19;;22369:64:0;9131:231:1;22369:64:0;-1:-1:-1;;;;;22453:20:0;;;;;;:9;:20;;;;;;;;22452:21;22444:57;;;;-1:-1:-1;;;22444:57:0;;11910:2:1;22444:57:0;;;11892:21:1;11949:2;11929:18;;;11922:30;-1:-1:-1;;;11968:18:1;;;11961:53;12031:18;;22444:57:0;11882:173:1;22444:57:0;22531:10;22521:21;;;;:9;:21;;;;;;;;22520:22;22512:58;;;;-1:-1:-1;;;22512:58:0;;11910:2:1;22512:58:0;;;11892:21:1;11949:2;11929:18;;;11922:30;-1:-1:-1;;;11968:18:1;;;11961:53;12031:18;;22512:58:0;11882:173:1;22512:58:0;5894:7;5921:6;-1:-1:-1;;;;;22588:17:0;;;5921:6;;22588:17;;;;:41;;-1:-1:-1;5894:7:0;5921:6;-1:-1:-1;;;;;22609:20:0;;;5921:6;;22609:20;;22588:41;22585:553;;;22665:11;;;;;;;22660:283;;-1:-1:-1;;;;;22703:23:0;;22721:4;22703:23;;:53;;-1:-1:-1;;;;;;22730:26:0;;22751:4;22730:26;22703:53;:100;;;-1:-1:-1;5894:7:0;5921:6;-1:-1:-1;;;;;22777:26:0;;;5921:6;;22777:26;22703:100;:133;;;-1:-1:-1;5894:7:0;5921:6;-1:-1:-1;;;;;22807:29:0;;;5921:6;;22807:29;22703:133;22697:231;;22870:11;;;;;;;22862:46;;;;-1:-1:-1;;;22862:46:0;;7685:2:1;22862:46:0;;;7667:21:1;7724:2;7704:18;;;7697:30;-1:-1:-1;;;7743:18:1;;;7736:52;7805:18;;22862:46:0;7657:172:1;22862:46:0;22962:16;;;;22959:168;;;23012:10;23003:20;;;;:8;:20;;;;;:27;;;;;22999:113;;23078:14;;;;;;;;-1:-1:-1;23078:14:0;;;;;;;;;;23087:4;23078:14;;;;;;23064:10;23055:20;;:8;:20;;;;;;;:37;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23055:37:0;;;;;;;;;;22999:113;23196:13;;-1:-1:-1;;;;;23186:23:0;;;23196:13;;23186:23;:64;;;;-1:-1:-1;23234:15:0;;-1:-1:-1;;;;;23213:37:0;;;23234:15;;;;;23213:37;;23186:64;:98;;;;-1:-1:-1;;;;;;23255:29:0;;;;;;:18;:29;;;;;;;;23254:30;23186:98;23183:797;;;23313:11;;;;;;;23305:48;;;;-1:-1:-1;;;23305:48:0;;10740:2:1;23305:48:0;;;10722:21:1;10779:2;10759:18;;;10752:30;10818:26;10798:18;;;10791:54;10862:18;;23305:48:0;10712:174:1;23305:48:0;23404:11;;23390:13;:25;23455:16;;;;23452:378;;;23513:15;23499:11;;:29;23496:315;;;23575:13;;23565:6;:23;;23557:32;;;;;;-1:-1:-1;;;;;23624:19:0;;;;;;:8;:19;;;;;:23;23650:15;-1:-1:-1;23616:88:0;;;;-1:-1:-1;;;23616:88:0;;6926:2:1;23616:88:0;;;6908:21:1;6965:2;6945:18;;;6938:30;7004:34;6984:18;;;6977:62;-1:-1:-1;;;7055:18:1;;;7048:32;7097:19;;23616:88:0;6898:224:1;23616:88:0;23757:30;:15;23776:10;23757:30;:::i;:::-;-1:-1:-1;;;;;23731:19:0;;;;;;:8;:19;;;;;:56;23496:315;23851:16;;;;23848:121;;;23919:30;:15;23938:10;23919:30;:::i;:::-;-1:-1:-1;;;;;23892:19:0;;;;;;:8;:19;;;;;:24;;:57;23848:121;24013:16;;-1:-1:-1;;;24013:16:0;;;;24012:17;:42;;;;-1:-1:-1;24033:21:0;;-1:-1:-1;;;24033:21:0;;;;24012:42;:72;;;;-1:-1:-1;24071:13:0;;-1:-1:-1;;;;;24058:26:0;;;24071:13;;24058:26;24012:72;24008:1357;;;24149:19;;;;24146:231;;;24193:16;24212:26;24223:14;;24212:6;:10;;:26;;;;:::i;:::-;24295:13;;24193:45;;-1:-1:-1;24272:50:0;;24285:36;;24314:6;;24285:24;;-1:-1:-1;;;;;24295:13:0;24285:9;:24::i;:::-;:28;;:36::i;:::-;24272:8;;:12;:50::i;:::-;24261:61;;24345:16;24352:8;24345:6;:16::i;:::-;24146:231;;24426:13;;24405:18;24545:24;24563:4;24545:9;:24::i;:::-;24514:55;-1:-1:-1;24588:24:0;;24585:96;;24633:32;24644:20;24633:10;:32::i;:::-;24862:14;;24750:21;;-1:-1:-1;;;24862:14:0;;;;:39;;;;;24890:11;;24880:6;:21;;24862:39;24858:393;;;24940:11;24954:2;24940:16;;24993:21;25017:89;25103:2;25017:81;25033:64;25041:55;25084:11;;25042:36;25076:1;;25043:27;25058:11;;25043:10;:14;;:27;;;;:::i;:::-;25042:33;;:36::i;:::-;25041:42;;:55::i;:::-;25033:3;;:7;:64::i;:::-;25017:11;;;:15;:81::i;:89::-;24993:113;;25190:13;25179:7;:24;25175:60;;25207:28;25221:13;25207;:28::i;:::-;24858:393;;;-1:-1:-1;;25327:13:0;:26;24008:1357;-1:-1:-1;;;;;25496:26:0;;25377:12;25496:26;;;:18;:26;;;;;;25392:4;;25496:26;;;:59;;-1:-1:-1;;;;;;25526:29:0;;;;;;:18;:29;;;;;;;;25496:59;25493:105;;;-1:-1:-1;25581:5:0;25493:105;25638:48;25653:6;25661:9;25671:6;25678:7;25638:14;:48::i;:::-;22083:3611;;;;:::o;1565:192::-;1651:7;1687:12;1679:6;;;;1671:29;;;;-1:-1:-1;;;1671:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1711:9:0;1723:5;1727:1;1723;:5;:::i;:::-;1711:17;1565:192;-1:-1:-1;;;;;1565:192:0:o;32776:163::-;32817:7;32838:15;32855;32874:19;:17;:19::i;:::-;32837:56;;-1:-1:-1;32837:56:0;-1:-1:-1;32911:20:0;32837:56;;32911:11;:20::i;:::-;32904:27;;;;32776:163;:::o;2025:132::-;2083:7;2110:39;2114:1;2117;2110:39;;;;;;;;;;;;;;;;;:3;:39::i;1232:181::-;1290:7;;1322:5;1326:1;1322;:5;:::i;:::-;1310:17;;1351:1;1346;:6;;1338:46;;;;-1:-1:-1;;;1338:46:0;;7329:2:1;1338:46:0;;;7311:21:1;7368:2;7348:18;;;7341:30;7407:29;7387:18;;;7380:57;7454:18;;1338:46:0;7301:177:1;31574:419:0;31633:7;31642;31651;31660;31669;31678;31699:23;31724:12;31738:18;31760:20;31772:7;31760:11;:20::i;:::-;31698:82;;;;;;31792:15;31809:23;31834:12;31850:50;31862:7;31871:4;31877:10;31889;:8;:10::i;:::-;31850:11;:50::i;:::-;31791:109;;;;-1:-1:-1;31791:109:0;;-1:-1:-1;31951:15:0;;-1:-1:-1;31968:4:0;;-1:-1:-1;31974:10:0;;-1:-1:-1;31574:419:0;;-1:-1:-1;;;;;31574:419:0:o;1421:136::-;1479:7;1506:43;1510:1;1513;1506:43;;;;;;;;;;;;;;;;;:3;:43::i;1765:250::-;1823:7;1847:6;1843:47;;-1:-1:-1;1877:1:0;1870:8;;1843:47;1902:9;1914:5;1918:1;1914;:5;:::i;:::-;1902:17;-1:-1:-1;1947:1:0;1938:5;1942:1;1902:17;1938:5;:::i;:::-;:10;1930:56;;;;-1:-1:-1;;;1930:56:0;;8396:2:1;1930:56:0;;;8378:21:1;8435:2;8415:18;;;8408:30;8474:34;8454:18;;;8447:62;-1:-1:-1;;;8525:18:1;;;8518:31;8566:19;;1930:56:0;8368:223:1;26214:428:0;26289:11;;26314:23;;;26311:201;;;-1:-1:-1;26367:11:0;;26311:201;;;26411:2;26399:9;:14;26396:116;;;-1:-1:-1;26443:2:0;26396:116;;;-1:-1:-1;26491:9:0;26396:116;26525:17;:10;26540:1;26525:14;:17::i;:::-;:22;26522:66;;26564:12;;;;:::i;:::-;;;;26522:66;26608:13;:26;-1:-1:-1;26214:428:0:o;25702:346::-;17292:16;:23;;-1:-1:-1;;;;17292:23:0;-1:-1:-1;;;17292:23:0;;;25810:21:::1;25842:38;25859:20:::0;25842:16:::1;:38::i;:::-;25891:26;25920:41;:21;25946:14:::0;25920:25:::1;:41::i;:::-;25996:14;::::0;25891:70;;-1:-1:-1;25975:63:0::1;::::0;25996:14:::1;::::0;::::1;-1:-1:-1::0;;;;;25996:14:0::1;26012:25;25891:70:::0;26035:1:::1;26012:22;:25::i;:::-;25975:20;:63::i;:::-;-1:-1:-1::0;;17338:16:0;:24;;-1:-1:-1;;;;17338:24:0;;;-1:-1:-1;25702:346:0:o;26058:144::-;17292:16;:23;;-1:-1:-1;;;;17292:23:0;-1:-1:-1;;;17292:23:0;;;26132:10;;26128:67:::1;;26159:24;26176:6;26159:16;:24::i;:::-;-1:-1:-1::0;17338:16:0;:24;;-1:-1:-1;;;;17338:24:0;;;26058:144::o;28417:688::-;28528:7;28524:40;;28550:14;:12;:14::i;:::-;-1:-1:-1;;;;;28581:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;28605:22:0;;;;;;:11;:22;;;;;;;;28604:23;28581:46;28577:467;;;28644:48;28666:6;28674:9;28685:6;28644:21;:48::i;:::-;28577:467;;;-1:-1:-1;;;;;28715:19:0;;;;;;:11;:19;;;;;;;;28714:20;:46;;;;-1:-1:-1;;;;;;28738:22:0;;;;;;:11;:22;;;;;;;;28714:46;28710:334;;;28777:46;28797:6;28805:9;28816:6;28777:19;:46::i;28710:334::-;-1:-1:-1;;;;;28845:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;28868:22:0;;;;;;:11;:22;;;;;;;;28845:45;28841:203;;;28907:48;28929:6;28937:9;28948:6;28907:21;:48::i;28841:203::-;28988:44;29006:6;29014:9;29025:6;28988:17;:44::i;:::-;29060:7;29056:41;;29082:15;34505;;34495:7;:25;34547:21;;34531:13;:37;34451:125;32947:555;33044:7;;33080;;32997;;;;;33098:289;33122:9;:16;33118:20;;33098:289;;;33188:7;33164;:21;33172:9;33182:1;33172:12;;;;;;-1:-1:-1;;;33172:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33172:12:0;33164:21;;;;;;;;;;;;;:31;;:66;;;33223:7;33199;:21;33207:9;33217:1;33207:12;;;;;;-1:-1:-1;;;33207:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33207:12:0;33199:21;;;;;;;;;;;;;:31;33164:66;33160:97;;;33240:7;;33249;;33232:25;;;;;;;32947:555;;:::o;33160:97::-;33282:34;33294:7;:21;33302:9;33312:1;33302:12;;;;;;-1:-1:-1;;;33302:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33302:12:0;33294:21;;;;;;;;;;;;;33282:7;;:11;:34::i;:::-;33272:44;;33341:34;33353:7;:21;33361:9;33371:1;33361:12;;;;;;-1:-1:-1;;;33361:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33361:12:0;33353:21;;;;;;;;;;;;;33341:7;;:11;:34::i;:::-;33331:44;-1:-1:-1;33140:3:0;;;;:::i;:::-;;;;33098:289;;;-1:-1:-1;33423:7:0;;33411;;:20;;:11;:20::i;:::-;33401:7;:30;33397:61;;;33441:7;;33450;;33433:25;;;;;;32947:555;;:::o;33397:61::-;33477:7;;33486;;-1:-1:-1;32947:555:0;-1:-1:-1;32947:555:0:o;2165:278::-;2251:7;2286:12;2279:5;2271:28;;;;-1:-1:-1;;;2271:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2310:9:0;2322:5;2326:1;2322;:5;:::i;32001:330::-;32061:7;32070;32079;32099:12;32114:24;32130:7;32114:15;:24::i;:::-;32099:39;;32149:18;32170:30;32192:7;32170:21;:30::i;:::-;32149:51;-1:-1:-1;32211:23:0;32237:33;32149:51;32237:17;:7;32249:4;32237:11;:17::i;:::-;:21;;:33::i;:::-;32211:59;32306:4;;-1:-1:-1;32312:10:0;;-1:-1:-1;32001:330:0;;-1:-1:-1;;;32001:330:0:o;32339:429::-;32454:7;;;;32510:24;:7;32522:11;32510;:24::i;:::-;32492:42;-1:-1:-1;32545:12:0;32560:21;:4;32569:11;32560:8;:21::i;:::-;32545:36;-1:-1:-1;32592:18:0;32613:27;:10;32628:11;32613:14;:27::i;:::-;32592:48;-1:-1:-1;32651:23:0;32677:33;32592:48;32677:17;:7;32689:4;32677:11;:17::i;:33::-;32729:7;;;;-1:-1:-1;32755:4:0;;-1:-1:-1;32339:429:0;;-1:-1:-1;;;;;;;32339:429:0:o;2451:130::-;2509:7;2536:37;2540:1;2543;2536:37;;;;;;;;;;;;;;;;;:3;:37::i;26650:658::-;26800:16;;;26814:1;26800:16;;;;;;;;26776:21;;26800:16;;;;;;;;;;-1:-1:-1;26800:16:0;26776:40;;26845:4;26827;26832:1;26827:7;;;;;;-1:-1:-1;;;26827:7:0;;;;;;;;;;;;;;:23;-1:-1:-1;;;;;26827:23:0;;;-1:-1:-1;;;;;26827:23:0;;;;;26871:15;;;;;;;;;-1:-1:-1;;;;;26871:15:0;-1:-1:-1;;;;;26871:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26861:4;26866:1;26861:7;;;;;;-1:-1:-1;;;26861:7:0;;;;;;;;;-1:-1:-1;;;;;26861:32:0;;;:7;;;;;;;;;:32;26938:15;;26906:62;;26923:4;;26938:15;;;;26956:11;26906:8;:62::i;:::-;27007:15;;:240;;-1:-1:-1;;;27007:240:0;;:15;;;;-1:-1:-1;;;;;27007:15:0;;:66;;:240;;27088:11;;27114:1;;27158:4;;27185;;27221:15;;27007:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27265:35;27282:11;27295:4;27265:35;;;;;;;:::i;:::-;;;;;;;;26650:658;;:::o;35024:126::-;35116:26;;-1:-1:-1;;;;;35116:18:0;;;:26;;;;;35135:6;;35116:26;;;;35135:6;35116:18;:26;;;;;;;;;;;;;;;;;;;;;35024:126;;:::o;27316:572::-;27461:16;;;27475:1;27461:16;;;;;;;;27437:21;;27461:16;;;;;;;;;;-1:-1:-1;27461:16:0;27437:40;;27498:15;;;;;;;;;-1:-1:-1;;;;;27498:15:0;-1:-1:-1;;;;;27498:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27488:4;27493:1;27488:7;;;;;;-1:-1:-1;;;27488:7:0;;;;;;;;;;;;;;:32;-1:-1:-1;;;;;27488:32:0;;;-1:-1:-1;;;;;27488:32:0;;;;;27549:4;27531;27536:1;27531:7;;;;;;-1:-1:-1;;;27531:7:0;;;;;;;;;-1:-1:-1;;;;;27531:23:0;;;:7;;;;;;;;;:23;27593:15;;;;;;:66;27667:6;27689:1;27736:4;27755:11;27797:24;:15;27817:3;27797:19;:24::i;:::-;27593:239;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27850:30;27867:6;27875:4;27850:30;;;;;;;:::i;34209:234::-;34255:7;;:12;:34;;;;-1:-1:-1;34271:13:0;;:18;34255:34;34252:46;;;34209:234::o;34252:46::-;34328:7;;;34310:15;:25;34370:13;;;34346:21;:37;-1:-1:-1;34396:11:0;;;;34418:17;34209:234::o;30206:563::-;30309:15;30326:23;30351:12;30365:23;30390:12;30404:18;30426:19;30437:7;30426:10;:19::i;:::-;-1:-1:-1;;;;;30474:15:0;;;;;;:7;:15;;;;;;30308:137;;-1:-1:-1;30308:137:0;;-1:-1:-1;30308:137:0;;-1:-1:-1;30308:137:0;-1:-1:-1;30308:137:0;-1:-1:-1;30308:137:0;-1:-1:-1;30474:28:0;;30494:7;30474:19;:28::i;:::-;-1:-1:-1;;;;;30456:15:0;;;;;;:7;:15;;;;;;;;:46;;;;30531:7;:15;;;;:28;;30551:7;30531:19;:28::i;:::-;-1:-1:-1;;;;;30513:15:0;;;;;;;:7;:15;;;;;;:46;;;;30591:18;;;;;;;:39;;30614:15;30591:22;:39::i;:::-;-1:-1:-1;;;;;30570:18:0;;;;;;:7;:18;;;;;:60;30641:26;30656:10;30641:14;:26::i;:::-;30678:23;30690:4;30696;30678:11;:23::i;:::-;30734:9;-1:-1:-1;;;;;30717:44:0;30726:6;-1:-1:-1;;;;;30717:44:0;;30745:15;30717:44;;;;12206:25:1;;12194:2;12179:18;;12161:76;30717:44:0;;;;;;;;30206:563;;;;;;;;;:::o;29623:575::-;29724:15;29741:23;29766:12;29780:23;29805:12;29819:18;29841:19;29852:7;29841:10;:19::i;:::-;-1:-1:-1;;;;;29889:15:0;;;;;;:7;:15;;;;;;29723:137;;-1:-1:-1;29723:137:0;;-1:-1:-1;29723:137:0;;-1:-1:-1;29723:137:0;-1:-1:-1;29723:137:0;-1:-1:-1;29723:137:0;-1:-1:-1;29889:28:0;;29723:137;29889:19;:28::i;:::-;-1:-1:-1;;;;;29871:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;29949:18;;;;;:7;:18;;;;;:39;;29972:15;29949:22;:39::i;:::-;-1:-1:-1;;;;;29928:18:0;;;;;;:7;:18;;;;;;;;:60;;;;30020:7;:18;;;;:39;;30043:15;30020:22;:39::i;30777:634::-;30880:15;30897:23;30922:12;30936:23;30961:12;30975:18;30997:19;31008:7;30997:10;:19::i;:::-;-1:-1:-1;;;;;31045:15:0;;;;;;:7;:15;;;;;;30879:137;;-1:-1:-1;30879:137:0;;-1:-1:-1;30879:137:0;;-1:-1:-1;30879:137:0;-1:-1:-1;30879:137:0;-1:-1:-1;30879:137:0;-1:-1:-1;31045:28:0;;31065:7;31045:19;:28::i;:::-;-1:-1:-1;;;;;31027:15:0;;;;;;:7;:15;;;;;;;;:46;;;;31102:7;:15;;;;:28;;31122:7;31102:19;:28::i;29113:502::-;29212:15;29229:23;29254:12;29268:23;29293:12;29307:18;29329:19;29340:7;29329:10;:19::i;:::-;-1:-1:-1;;;;;29377:15:0;;;;;;:7;:15;;;;;;29211:137;;-1:-1:-1;29211:137:0;;-1:-1:-1;29211:137:0;;-1:-1:-1;29211:137:0;-1:-1:-1;29211:137:0;-1:-1:-1;29211:137:0;-1:-1:-1;29377:28:0;;29211:137;29377:19;:28::i;33873:154::-;33937:7;33964:55;34003:5;33964:20;33976:7;;33964;:11;;:20;;;;:::i;34035:166::-;34105:7;34132:61;34177:5;34132:26;34144:13;;34132:7;:11;;:26;;;;:::i;2589:166::-;2675:7;2711:12;2703:6;2695:29;;;;-1:-1:-1;;;2695:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2742:5:0;2746:1;2742;:5;:::i;:::-;2735:12;2589:166;-1:-1:-1;;;;2589:166:0:o;33510:355::-;33573:19;33596:10;:8;:10::i;:::-;33573:33;-1:-1:-1;33617:18:0;33638:27;:10;33573:33;33638:14;:27::i;:::-;33717:4;33701:22;;;;:7;:22;;;;;;33617:48;;-1:-1:-1;33701:38:0;;33617:48;33701:26;:38::i;:::-;33692:4;33676:22;;;;:7;:22;;;;;;;;:63;;;;33753:11;:26;;;;;;33750:107;;;33835:4;33819:22;;;;:7;:22;;;;;;:38;;33846:10;33819:26;:38::i;:::-;33810:4;33794:22;;;;:7;:22;;;;;:63;33510:355;;;:::o;31419:147::-;31497:7;;:17;;31509:4;31497:11;:17::i;:::-;31487:7;:27;31538:10;;:20;;31553:4;31538:14;:20::i;:::-;31525:10;:33;-1:-1:-1;;31419:147:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;707:398::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:2;;;857:6;849;842:22;804:2;901:9;888:23;920:31;945:5;920:31;:::i;:::-;970:5;-1:-1:-1;1027:2:1;1012:18;;999:32;1040:33;999:32;1040:33;:::i;:::-;1092:7;1082:17;;;794:311;;;;;:::o;1110:466::-;1187:6;1195;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:2;;;1277:6;1269;1262:22;1224:2;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;-1:-1:-1;1447:2:1;1432:18;;1419:32;1460:33;1419:32;1460:33;:::i;:::-;1214:362;;1512:7;;-1:-1:-1;;;1566:2:1;1551:18;;;;1538:32;;1214:362::o;1581:325::-;1649:6;1657;1710:2;1698:9;1689:7;1685:23;1681:32;1678:2;;;1731:6;1723;1716:22;1678:2;1775:9;1762:23;1794:31;1819:5;1794:31;:::i;:::-;1844:5;1896:2;1881:18;;;;1868:32;;-1:-1:-1;;;1668:238:1:o;1911:190::-;1967:6;2020:2;2008:9;1999:7;1995:23;1991:32;1988:2;;;2041:6;2033;2026:22;1988:2;2069:26;2085:9;2069:26;:::i;2106:190::-;2165:6;2218:2;2206:9;2197:7;2193:23;2189:32;2186:2;;;2239:6;2231;2224:22;2186:2;-1:-1:-1;2267:23:1;;2176:120;-1:-1:-1;2176:120:1:o;2301:258::-;2366:6;2374;2427:2;2415:9;2406:7;2402:23;2398:32;2395:2;;;2448:6;2440;2433:22;2395:2;2489:9;2476:23;2466:33;;2518:35;2549:2;2538:9;2534:18;2518:35;:::i;:::-;2508:45;;2385:174;;;;;:::o;2564:463::-;2617:3;2655:5;2649:12;2682:6;2677:3;2670:19;2708:4;2737:2;2732:3;2728:12;2721:19;;2774:2;2767:5;2763:14;2795:3;2807:195;2821:6;2818:1;2815:13;2807:195;;;2886:13;;-1:-1:-1;;;;;2882:39:1;2870:52;;2942:12;;;;2977:15;;;;2918:1;2836:9;2807:195;;;-1:-1:-1;3018:3:1;;2625:402;-1:-1:-1;;;;;2625:402:1:o;3976:510::-;4247:6;4236:9;4229:25;4290:3;4285:2;4274:9;4270:18;4263:31;4210:4;4311:57;4363:3;4352:9;4348:19;4340:6;4311:57;:::i;:::-;-1:-1:-1;;;;;4404:32:1;;;;4399:2;4384:18;;4377:60;-1:-1:-1;4468:2:1;4453:18;4446:34;4303:65;4219:267;-1:-1:-1;;4219:267:1:o;4491:603::-;4603:4;4632:2;4661;4650:9;4643:21;4693:6;4687:13;4736:6;4731:2;4720:9;4716:18;4709:34;4761:4;4774:140;4788:6;4785:1;4782:13;4774:140;;;4883:14;;;4879:23;;4873:30;4849:17;;;4868:2;4845:26;4838:66;4803:10;;4774:140;;;4932:6;4929:1;4926:13;4923:2;;;5002:4;4997:2;4988:6;4977:9;4973:22;4969:31;4962:45;4923:2;-1:-1:-1;5078:2:1;5057:15;-1:-1:-1;;5053:29:1;5038:45;;;;5085:2;5034:54;;4612:482;-1:-1:-1;;;4612:482:1:o;8596:356::-;8798:2;8780:21;;;8817:18;;;8810:30;8876:34;8871:2;8856:18;;8849:62;8943:2;8928:18;;8770:182::o;12242:332::-;12449:6;12438:9;12431:25;12492:2;12487;12476:9;12472:18;12465:30;12412:4;12512:56;12564:2;12553:9;12549:18;12541:6;12512:56;:::i;12579:582::-;12878:6;12867:9;12860:25;12921:6;12916:2;12905:9;12901:18;12894:34;12964:3;12959:2;12948:9;12944:18;12937:31;12841:4;12985:57;13037:3;13026:9;13022:19;13014:6;12985:57;:::i;:::-;-1:-1:-1;;;;;13078:32:1;;;;13073:2;13058:18;;13051:60;-1:-1:-1;13142:3:1;13127:19;13120:35;12977:65;12850:311;-1:-1:-1;;;12850:311:1:o;13355:128::-;13395:3;13426:1;13422:6;13419:1;13416:13;13413:2;;;13432:18;;:::i;:::-;-1:-1:-1;13468:9:1;;13403:80::o;13488:120::-;13528:1;13554;13544:2;;13559:18;;:::i;:::-;-1:-1:-1;13593:9:1;;13534:74::o;13613:168::-;13653:7;13719:1;13715;13711:6;13707:14;13704:1;13701:21;13696:1;13689:9;13682:17;13678:45;13675:2;;;13726:18;;:::i;:::-;-1:-1:-1;13766:9:1;;13665:116::o;13786:125::-;13826:4;13854:1;13851;13848:8;13845:2;;;13859:18;;:::i;:::-;-1:-1:-1;13896:9:1;;13835:76::o;13916:380::-;13995:1;13991:12;;;;14038;;;14059:2;;14113:4;14105:6;14101:17;14091:27;;14059:2;14166;14158:6;14155:14;14135:18;14132:38;14129:2;;;14212:10;14207:3;14203:20;14200:1;14193:31;14247:4;14244:1;14237:15;14275:4;14272:1;14265:15;14129:2;;13971:325;;;:::o;14301:135::-;14340:3;-1:-1:-1;;14361:17:1;;14358:2;;;14381:18;;:::i;:::-;-1:-1:-1;14428:1:1;14417:13;;14348:88::o;14441:112::-;14473:1;14499;14489:2;;14504:18;;:::i;:::-;-1:-1:-1;14538:9:1;;14479:74::o;14558:127::-;14619:10;14614:3;14610:20;14607:1;14600:31;14650:4;14647:1;14640:15;14674:4;14671:1;14664:15;14690:127;14751:10;14746:3;14742:20;14739:1;14732:31;14782:4;14779:1;14772:15;14806:4;14803:1;14796:15;14822:131;-1:-1:-1;;;;;14897:31:1;;14887:42;;14877:2;;14943:1;14940;14933:12;14877:2;14867:86;:::o
Swarm Source
ipfs://eb400ba7c3b89176e6c82d8648afb435c40897638d1412503bbd7624d407ccae
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.