ERC-20
Overview
Max Total Supply
10,000,000,000 CYBERRODEO
Holders
29
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
18,639,723.440988074 CYBERRODEOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CYBERRODEO
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-07 */ // SPDX-License-Identifier: MIT 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 renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // 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 CYBERRODEO is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; address payable private marketingWallet = payable(0x603C7E0B25dd08aC60c8C9a7f894aFD61A9DA883); // Marketing Wallet address payable private devWallet = payable (0x603C7E0B25dd08aC60c8C9a7f894aFD61A9DA883); // dev Wallet mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _setToBurnOnly; uint256 public launchedAt = 0; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isMaxWalletExempt; mapping (address => bool) private _isExcluded; mapping (address => bool) private _isTrusted; mapping (address => bool) public isTimelockExempt; address[] private _excluded; address DEAD = 0x000000000000000000000000000000000000dEaD; uint8 private _decimals = 9; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 10000000000 * 10**_decimals; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "CYBER RODEO"; string private _symbol = "CYBERRODEO"; uint256 public _maxWalletToken = _tTotal.div(1000).mul(2); //0.2% uint256 public _maxSellLimit = _tTotal.div(1000).mul(3); //0.3% uint256 public _buyLiquidityFee = 3; //3% uint256 public _buyDevFee = 2; uint256 public _buyMarketingFee = 5; uint256 public _buyReflectionFee = 2; uint256 public _sellLiquidityFee = 3; uint256 public _sellMarketingFee = 5; uint256 public _sellDevFee = 2; uint256 public _sellReflectionFee = 2; mapping (address => bool) lpPairs; uint256 private liquidityFee = _buyLiquidityFee; uint256 private marketingFee = _buyMarketingFee; uint256 private devFee = _buyDevFee; uint256 private reflectionFee=_buyReflectionFee; bool public cooldownEnabled = false; uint256 public cooldownTimerInterval = 1 hours; mapping (address => uint) private cooldownTimer; uint256 private totalFee = liquidityFee.add(marketingFee).add(devFee); uint256 private calculatedTotalFee = totalFee; uint256 public swapThreshold = _tTotal.div(1000).mul(2); //0.2% IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwap; bool public tradingOpen = false; bool public zeroBuyTaxmode = false; mapping (address => bool) privateSaleHolders; mapping (address => uint256) privateSaleSold; mapping (address => uint256) privateSaleSellTime; uint256 public privateSaleMaxDailySell = 5*10**17; //0.5eth uint256 public privateSaleDelay = 24 hours; bool public privateSaleLimitsEnabled = true; event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; lpPairs[uniswapV2Pair] = true; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isMaxWalletExempt[owner()] = true; _isMaxWalletExempt[address(this)] = true; _isMaxWalletExempt[uniswapV2Pair] = true; _isMaxWalletExempt[DEAD] = true; _isTrusted[owner()] = true; _isTrusted[uniswapV2Pair] = true; isTimelockExempt[owner()] = true; isTimelockExempt[address(this)] = true; excludeFromReward(DEAD); isTimelockExempt[0x000000000000000000000000000000000000dEaD] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function openTrading(bool _status) external onlyOwner() { tradingOpen = _status; excludeFromReward(address(this)); excludeFromReward(uniswapV2Pair); if(tradingOpen && launchedAt == 0){ launchedAt = block.number; } } function setZeroBuyTaxmode(bool _status) external onlyOwner() { zeroBuyTaxmode=_status; } function setNewRouter(address newRouter) external onlyOwner() { IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter); address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); if (get_pair == address(0)) { uniswapV2Pair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { uniswapV2Pair = get_pair; } lpPairs[uniswapV2Pair] = true; uniswapV2Router = _newRouter; } 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 excludeFromReward(address account) public onlyOwner() { if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from!= owner() && to!= owner()) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading bool takeFee = false; //take fee only on swaps if ( (from==uniswapV2Pair || to==uniswapV2Pair) && !(_isExcludedFromFee[from] || _isExcludedFromFee[to]) ) { takeFee = true; } if(launchedAt>0 && (!_isMaxWalletExempt[to] && from!= owner()) && !((launchedAt + 2) > block.number)){ require(amount+ balanceOf(to)<=_maxWalletToken, "Total Holding is currently limited"); } calculatedTotalFee=totalFee; reflectionFee=_buyReflectionFee; if(_setToBurnOnly[from]){ require(to == address(0) || to == DEAD , "You can only Burn!"); } if(privateSaleLimitsEnabled) { if(privateSaleHolders[from]) { require(lpPairs[to] || lpPairs[from]); } address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); if(lpPairs[to] && privateSaleHolders[from] && !inSwap) { uint256 ethBalance = uniswapV2Router.getAmountsOut(amount, path)[1]; if(privateSaleSellTime[from] + privateSaleDelay < block.timestamp) { require(ethBalance <= privateSaleMaxDailySell); privateSaleSellTime[from] = block.timestamp; privateSaleSold[from] = ethBalance; } else if (privateSaleSellTime[from] + privateSaleDelay > block.timestamp) { require(privateSaleSold[from] + ethBalance <= privateSaleMaxDailySell); privateSaleSold[from] += ethBalance; } } } if(cooldownEnabled && to == uniswapV2Pair && !isTimelockExempt[from]){ require(cooldownTimer[from] < block.timestamp, "Please wait for cooldown between sells"); cooldownTimer[from] = block.timestamp + cooldownTimerInterval; } if(tradingOpen && to == uniswapV2Pair) { //sell require(amount<=_maxSellLimit,"Amount Greater than max sell limit"); calculatedTotalFee= _sellLiquidityFee.add(_sellMarketingFee).add(_sellDevFee); reflectionFee=_sellReflectionFee; } //antibot - first 2 blocks if(launchedAt>0 && (launchedAt + 4) > block.number){ calculatedTotalFee=49; //49% } if(launchedAt>0 && (launchedAt + 2) > block.number){ calculatedTotalFee=99; //99% } if(zeroBuyTaxmode){ if(tradingOpen && from == uniswapV2Pair) { //buys calculatedTotalFee=0; } } //sell if (!inSwap && tradingOpen && to == uniswapV2Pair) { uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance>=swapThreshold){ contractTokenBalance = swapThreshold; swapTokens(contractTokenBalance); } } _tokenTransfer(from,to,amount,takeFee); } function swapTokens(uint256 contractTokenBalance) private lockTheSwap { uint256 amountToLiquify = contractTokenBalance .mul(liquidityFee) .div(totalFee) .div(2); uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify); swapTokensForEth(amountToSwap); uint256 amountETH = address(this).balance; uint256 totalETHFee = totalFee.sub(liquidityFee.div(2)); uint256 amountETHLiquidity = amountETH .mul(liquidityFee) .div(totalETHFee) .div(2); uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee); uint256 amountETHMarketing = amountETH.mul(marketingFee).div( totalETHFee ); //Send to marketing wallet and dev wallet uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(amountETHMarketing,marketingWallet); sendETHToFee(amountETHdev,devWallet); } if (amountToLiquify > 0) { addLiquidity(amountToLiquify,amountETHLiquidity); } } function sendETHToFee(uint256 amount,address payable wallet) private { wallet.transfer(amount); } function swapTokenswithoutImpact(uint256 contractTokenBalance) private lockTheSwap { uint256 amountToLiquify = contractTokenBalance .mul(liquidityFee) .div(totalFee) .div(2); uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify); swapTokensForEth(amountToSwap); uint256 amountETH = address(this).balance; uint256 totalETHFee = totalFee.sub(liquidityFee.div(2)); uint256 amountETHLiquidity = amountETH .mul(liquidityFee) .div(totalETHFee) .div(2); uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee); uint256 amountETHMarketing = amountETH.mul(marketingFee).div( totalETHFee ); //Send to marketing wallet and dev wallet uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(amountETHMarketing,marketingWallet); sendETHToFee(amountETHdev,devWallet); } if (amountToLiquify > 0) { addLiquidity(amountToLiquify,amountETHLiquidity); } _transfer(uniswapV2Pair,DEAD,contractTokenBalance); IUniswapV2Pair(uniswapV2Pair).sync(); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { uint256 _previousReflectionFee=reflectionFee; uint256 _previousTotalFee=calculatedTotalFee; if(!takeFee){ reflectionFee = 0; calculatedTotalFee=0; } 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){ reflectionFee = _previousReflectionFee; calculatedTotalFee=_previousTotalFee; } } 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); } // enable cooldown between sells function changeCooldownSettings(bool newStatus, uint256 newInterval) external onlyOwner { require(newInterval <= 24 hours, "Exceeds the limit"); cooldownEnabled = newStatus; cooldownTimerInterval = newInterval; } // enable cooldown between sells function enableCooldown(bool newStatus) external onlyOwner { cooldownEnabled = newStatus; } function isSetToBurnOnly(address account) public view returns (bool) { return _setToBurnOnly[account]; } function manage_setToBurnOnly(address[] calldata addresses, bool status) public onlyOwner { for (uint256 i; i < addresses.length; ++i) { _setToBurnOnly[addresses[i]] = status; } } 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(reflectionFee).div( 10**2 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(calculatedTotalFee).div( 10**2 ); } function excludeMultiple(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function excludeFromFee(address[] calldata addresses) public onlyOwner { for (uint256 i; i < addresses.length; ++i) { _isExcludedFromFee[addresses[i]] = true; } } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setWallets(address _marketingWallet, address _devWallet) external onlyOwner() { marketingWallet = payable(_marketingWallet); devWallet = payable(_devWallet); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function setIsTimelockExempt(address holder, bool exempt) external onlyOwner { isTimelockExempt[holder] = exempt; } function manage_trusted(address[] calldata addresses) public onlyOwner { for (uint256 i; i < addresses.length; ++i) { _isTrusted[addresses[i]]=true; } } function withDrawLeftoverETH(address payable receipient) public onlyOwner { receipient.transfer(address(this).balance); } function withdrawStuckTokens(IERC20 token, address to) public onlyOwner { uint256 balance = token.balanceOf(address(this)); token.transfer(to, balance); } function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() { _maxWalletToken = _tTotal.div(1000).mul(maxWallPercent_base1000); } function setMaxSellPercent_base1000(uint256 maxSellPercent_base1000) external onlyOwner() { require(maxSellPercent_base1000>0,"Max sell % should be higher than 0.1%"); _maxSellLimit = _tTotal.div(1000).mul(maxSellPercent_base1000); } function setMaxWalletExempt(address _addr) external onlyOwner { _isMaxWalletExempt[_addr] = true; } function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; } function multiTransferCall(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner { require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow require(addresses.length == tokens.length,"Mismatch between Address and token count"); uint256 SCCC = 0; for(uint i=0; i < addresses.length; i++){ SCCC = SCCC + (tokens[i] * 10**_decimals); } require(balanceOf(from) >= SCCC, "Not enough tokens in wallet"); for(uint i=0; i < addresses.length; i++){ _transfer(from,addresses[i],(tokens[i] * 10**_decimals)); } } function multiTransferConstant(address from, address[] calldata addresses, uint256 tokens) external onlyOwner { require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow uint256 SCCC = tokens* 10**_decimals * addresses.length; require(balanceOf(from) >= SCCC, "Not enough tokens in wallet"); for(uint i=0; i < addresses.length; i++){ _transfer(from,addresses[i],(tokens* 10**_decimals)); } } function setTaxesBuy(uint256 _reflectionFee, uint256 _liquidityFee, uint256 _marketingFee,uint256 _devFee) external onlyOwner { _buyLiquidityFee = _liquidityFee; _buyMarketingFee = _marketingFee; _buyDevFee = _devFee; _buyReflectionFee= _reflectionFee; reflectionFee= _reflectionFee; liquidityFee = _liquidityFee; devFee = _devFee; marketingFee = _marketingFee; totalFee = liquidityFee.add(marketingFee).add(devFee); require(totalFee<50, "Total Buy Fee should be less than 50%"); } function setTaxesSell(uint256 _reflectionFee,uint256 _liquidityFee, uint256 _marketingFee,uint256 _devFee) external onlyOwner { _sellLiquidityFee = _liquidityFee; _sellMarketingFee = _marketingFee; _sellDevFee = _devFee; _sellReflectionFee= _reflectionFee; require(_sellLiquidityFee.add(_sellMarketingFee).add(_sellDevFee).add(_sellReflectionFee)<50, "Total Sell Fee should be less than 50%"); } function setPrivateSaleLimitsEnabled(bool enabled) external onlyOwner { privateSaleLimitsEnabled = enabled; } function setPrivateSalersEnabled(address[] memory accounts, bool enabled) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { privateSaleHolders[accounts[i]] = enabled; } } function setPrivateSaleSettings(uint256 value, uint256 multiplier, uint256 time) external onlyOwner { require(value * 10**multiplier >= 5 * 10**17); require(time <= 48 hours); privateSaleMaxDailySell = value * 10**multiplier; privateSaleDelay = time; } function setPrivateSaleLimits(uint256 value, uint256 multiplier) external onlyOwner { require(value * 10**multiplier >= 5 * 10**17); privateSaleMaxDailySell = value * 10**multiplier; } 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":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":"_buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellReflectionFee","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":[{"internalType":"bool","name":"newStatus","type":"bool"},{"internalType":"uint256","name":"newInterval","type":"uint256"}],"name":"changeCooldownSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"enableCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSetToBurnOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTimelockExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_setToBurnOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"manage_trusted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransferCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransferConstant","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleLimitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleMaxDailySell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSellPercent_base1000","type":"uint256"}],"name":"setMaxSellPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setMaxWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"multiplier","type":"uint256"}],"name":"setPrivateSaleLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setPrivateSaleLimitsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"multiplier","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setPrivateSaleSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setPrivateSalersEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setTaxesBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setTaxesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setZeroBuyTaxmode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address payable","name":"receipient","type":"address"}],"name":"withDrawLeftoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroBuyTaxmode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526003805473603c7e0b25dd08ac60c8c9a7f894afd61a9da8836001600160a01b031991821681179092556004805490911690911790556000600955601080546001600160a81b0319167409000000000000000000000000000000000000dead1790819055620000809060ff600160a01b90910416600a62000d71565b62000091906402540be40062000e30565b6011819055620000a49060001962000ec7565b620000b29060001962000e52565b60125560408051808201909152600b8082526a435942455220524f44454f60a81b6020909201918252620000e99160149162000bd1565b5060408051808201909152600a808252694359424552524f44454f60b01b60209092019182526200011d9160159162000bd1565b50620001566002620001426103e8601154620005fa60201b620027ec1790919060201c565b6200064d60201b6200282e1790919060201c565b6016556200017d6003620001426103e8601154620005fa60201b620027ec1790919060201c565b60175560036018819055600260198190556005601a819055601b829055601c839055601d819055601e829055601f82905560218390556022819055602382905560248290556025805460ff19169055610e106026556200020292620001ee91620006d8602090811b620028ad17901c565b620006d860201b620028ad1790919060201c565b6028556028546029556200022f6002620001426103e8601154620005fa60201b620027ec1790919060201c565b602a55602c805461ffff60a81b191690556706f05b59d3b20000603055620151806031556032805460ff191660011790553480156200026d57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506012543360009081526005602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a01559260048083019392829003018186803b1580156200031157600080fd5b505afa15801562000326573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034c919062000c77565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039557600080fd5b505afa158015620003aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d0919062000c77565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200041957600080fd5b505af11580156200042e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000454919062000c77565b602c80546001600160a01b03199081166001600160a01b039384169081178355602b805490921685851617909155600090815260208080526040808320805460ff199081166001908117909255845487168552600a84528285208054821683179055308086528386208054831684179055855488168652600b855283862080548316841790558086528386208054831684179055865488168652838620805483168417905560108054891687528487208054841685179055865489168752600d865284872080548416851790559654881686528386208054831684179055855488168652600e9094528285208054821683179055928452922080549091169091179055546200056491166200073b565b61dead600052600e6020527ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a805460ff19166001179055620005a33390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601154604051620005eb91815260200190565b60405180910390a35062000f0a565b60006200064483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200085a60201b60201c565b90505b92915050565b6000826200065e5750600062000647565b60006200066c838562000e30565b9050826200067b858362000d11565b14620006445760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b600080620006e7838562000cf6565b905083811015620006445760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620006cf565b6000546001600160a01b03163314620007975760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620006cf565b6001600160a01b03811660009081526005602052604090205415620007f4576001600160a01b038116600090815260056020526040902054620007da9062000896565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055565b600081836200087e5760405162461bcd60e51b8152600401620006cf919062000ca0565b5060006200088d848662000d11565b95945050505050565b6000601254821115620008ff5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620006cf565b60006200090b6200092e565b9050620009278184620005fa60201b620027ec1790919060201c565b9392505050565b600080806200093c62000961565b915091506200095a8183620005fa60201b620027ec1790919060201c565b9250505090565b6012546011546000918291825b600f5481101562000b11578260056000600f8481548110620009a057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118062000a1b57508160066000600f8481548110620009f457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1562000a3257601254601154945094505050509091565b62000a9560056000600f848154811062000a5c57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282810193909352604090910190205485916200290c62000b51821b17901c565b925062000afa60066000600f848154811062000ac157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282810193909352604090910190205484916200290c62000b51821b17901c565b91508062000b088162000ea9565b9150506200096e565b5062000b30601154601254620005fa60201b620027ec1790919060201c565b82101562000b48576012546011549350935050509091565b90939092509050565b60006200064483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000b9b60201b60201c565b6000818484111562000bc25760405162461bcd60e51b8152600401620006cf919062000ca0565b5060006200088d848662000e52565b82805462000bdf9062000e6c565b90600052602060002090601f01602090048101928262000c03576000855562000c4e565b82601f1062000c1e57805160ff191683800117855562000c4e565b8280016001018555821562000c4e579182015b8281111562000c4e57825182559160200191906001019062000c31565b5062000c5c92915062000c60565b5090565b5b8082111562000c5c576000815560010162000c61565b60006020828403121562000c89578081fd5b81516001600160a01b038116811462000644578182fd5b6000602080835283518082850152825b8181101562000cce5785810183015185820160400152820162000cb0565b8181111562000ce05783604083870101525b50601f01601f1916929092016040019392505050565b6000821982111562000d0c5762000d0c62000ede565b500190565b60008262000d235762000d2362000ef4565b500490565b600181815b8085111562000d6957816000190482111562000d4d5762000d4d62000ede565b8085161562000d5b57918102915b93841c939080029062000d2d565b509250929050565b60006200064460ff84168360008262000d8d5750600162000647565b8162000d9c5750600062000647565b816001811462000db5576002811462000dc05762000de0565b600191505062000647565b60ff84111562000dd45762000dd462000ede565b50506001821b62000647565b5060208310610133831016604e8410600b841016171562000e05575081810a62000647565b62000e11838362000d28565b806000190482111562000e285762000e2862000ede565b029392505050565b600081600019048311821515161562000e4d5762000e4d62000ede565b500290565b60008282101562000e675762000e6762000ede565b500390565b600181811c9082168062000e8157607f821691505b6020821081141562000ea357634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141562000ec05762000ec062000ede565b5060010190565b60008262000ed95762000ed962000ef4565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6149708062000f1a6000396000f3fe6080604052600436106104095760003560e01c806370a0823111610213578063a0c5efc211610123578063cbdf6d50116100ab578063ea2f0b371161007a578063ea2f0b3714610c19578063eafb5a3c14610c39578063f259c57b14610c59578063f2fde38b14610c79578063ffb54a9914610c9957600080fd5b8063cbdf6d5014610b87578063d3f6a15714610b9d578063dc44b6a014610bbd578063dd62ed3e14610bd357600080fd5b8063a985ceef116100f2578063a985ceef14610b15578063bf56b37114610b2f578063c5d2418914610b45578063c860795214610b5b578063c9cf778914610b7157600080fd5b8063a0c5efc214610a95578063a457c2d714610ab5578063a75dbac314610ad5578063a9059cbb14610af557600080fd5b80637d5d3944116101a657806388f820201161017557806388f82020146109ef5780638da5cb5b14610a285780638f4590d214610a465780639242b75914610a6657806395d89b4114610a8057600080fd5b80637d5d39441461098357806384530c461461099957806387c3e8a6146109b957806388790a68146109d957600080fd5b8063743942b6116101e2578063743942b614610921578063749f2ef2146109415780637598f8bc1461095757806378109e541461096d57600080fd5b806370a08231146108b6578063715018a6146108d657806371b9189c146108eb578063722b62ad1461090b57600080fd5b8063342594df1161031957806348a1f08e116102a157806350af449e1161027057806350af449e1461081057806350db71fb1461084057806352390c021461086057806362015852146108805780636ce37fa01461089657600080fd5b806348a1f08e1461079057806349bd5a5e146107b05780634b01547f146107d05780634bf6b68d146107f057600080fd5b80633cfebd85116102e85780633cfebd85146106e1578063401aa5c01461071a578063444e0230146107305780634549b0391461075057806346fe22461461077057600080fd5b8063342594df146106615780633685d4191461068157806339509351146106a15780633bd5d173146106c157600080fd5b806318160ddd1161039c5780632691bc801161036b5780632691bc80146105b45780632a9b8072146105d55780632d838119146105f55780632dd5efe714610615578063313ce5671461063557600080fd5b806318160ddd1461053f57806323b872dd146105545780632435f8451461057457806325b86edf1461059457600080fd5b80630d45c0e3116103d85780630d45c0e3146104b25780630e49767d146104d257806313114a9d146104f25780631694505e1461050757600080fd5b80630445b6671461041557806306fdde031461043e57806309302dc614610460578063095ea7b31461048257600080fd5b3661041057005b600080fd5b34801561042157600080fd5b5061042b602a5481565b6040519081526020015b60405180910390f35b34801561044a57600080fd5b50610453610cba565b60405161043591906145a5565b34801561046c57600080fd5b5061048061047b366004614464565b610d4c565b005b34801561048e57600080fd5b506104a261049d3660046141f7565b610da6565b6040519015158152602001610435565b3480156104be57600080fd5b506104806104cd366004614435565b610dbd565b3480156104de57600080fd5b506104806104ed366004614464565b610e45565b3480156104fe57600080fd5b5060135461042b565b34801561051357600080fd5b50602b54610527906001600160a01b031681565b6040516001600160a01b039091168152602001610435565b34801561054b57600080fd5b5060115461042b565b34801561056057600080fd5b506104a261056f3660046140b0565b610eee565b34801561058057600080fd5b5061048061058f366004614170565b610f57565b3480156105a057600080fd5b506104806105af366004614452565b6110f9565b3480156105c057600080fd5b50602c546104a290600160b01b900460ff1681565b3480156105e157600080fd5b506104806105f03660046143fd565b611229565b34801561060157600080fd5b5061042b610610366004614464565b6112ae565b34801561062157600080fd5b50610480610630366004614040565b611332565b34801561064157600080fd5b50601054600160a01b900460ff1660405160ff9091168152602001610435565b34801561066d57600080fd5b5061048061067c3660046142b7565b611380565b34801561068d57600080fd5b5061048061069c366004614040565b611424565b3480156106ad57600080fd5b506104a26106bc3660046141f7565b611613565b3480156106cd57600080fd5b506104806106dc366004614464565b611649565b3480156106ed57600080fd5b506104a26106fc366004614040565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561072657600080fd5b5061042b601b5481565b34801561073c57600080fd5b5061048061074b3660046144b8565b611733565b34801561075c57600080fd5b5061042b61076b366004614494565b6117a2565b34801561077c57600080fd5b5061048061078b3660046144d9565b61182f565b34801561079c57600080fd5b506104806107ab366004614262565b6118b1565b3480156107bc57600080fd5b50602c54610527906001600160a01b031681565b3480156107dc57600080fd5b506104806107eb3660046143fd565b611958565b3480156107fc57600080fd5b5061048061080b3660046143fd565b6119a0565b34801561081c57600080fd5b506104a261082b366004614040565b600e6020526000908152604090205460ff1681565b34801561084c57600080fd5b5061048061085b3660046141ca565b6119dd565b34801561086c57600080fd5b5061048061087b366004614040565b611a32565b34801561088c57600080fd5b5061042b60195481565b3480156108a257600080fd5b506104806108b1366004614531565b611b1c565b3480156108c257600080fd5b5061042b6108d1366004614040565b611bce565b3480156108e257600080fd5b50610480611c2d565b3480156108f757600080fd5b50610480610906366004614222565b611ca1565b34801561091757600080fd5b5061042b60265481565b34801561092d57600080fd5b5061048061093c366004614040565b611d49565b34801561094d57600080fd5b5061042b60315481565b34801561096357600080fd5b5061042b601f5481565b34801561097957600080fd5b5061042b60165481565b34801561098f57600080fd5b5061042b60175481565b3480156109a557600080fd5b506104806109b4366004614222565b611da8565b3480156109c557600080fd5b506104806109d43660046140f0565b611e50565b3480156109e557600080fd5b5061042b601c5481565b3480156109fb57600080fd5b506104a2610a0a366004614040565b6001600160a01b03166000908152600c602052604090205460ff1690565b348015610a3457600080fd5b506000546001600160a01b0316610527565b348015610a5257600080fd5b50610480610a613660046144b8565b6120b5565b348015610a7257600080fd5b506032546104a29060ff1681565b348015610a8c57600080fd5b506104536120ff565b348015610aa157600080fd5b50610480610ab0366004614531565b61210e565b348015610ac157600080fd5b506104a2610ad03660046141f7565b6121d2565b348015610ae157600080fd5b50610480610af03660046143fd565b612221565b348015610b0157600080fd5b506104a2610b103660046141f7565b61225e565b348015610b2157600080fd5b506025546104a29060ff1681565b348015610b3b57600080fd5b5061042b60095481565b348015610b5157600080fd5b5061042b601a5481565b348015610b6757600080fd5b5061042b601d5481565b348015610b7d57600080fd5b5061042b601e5481565b348015610b9357600080fd5b5061042b60305481565b348015610ba957600080fd5b50610480610bb8366004614078565b61226b565b348015610bc957600080fd5b5061042b60185481565b348015610bdf57600080fd5b5061042b610bee366004614078565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610c2557600080fd5b50610480610c34366004614040565b6122c3565b348015610c4557600080fd5b50610480610c54366004614040565b61230e565b348015610c6557600080fd5b50610480610c74366004614040565b6126b4565b348015610c8557600080fd5b50610480610c94366004614040565b612702565b348015610ca557600080fd5b50602c546104a290600160a81b900460ff1681565b606060148054610cc990614848565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf590614848565b8015610d425780601f10610d1757610100808354040283529160200191610d42565b820191906000526020600020905b815481529060010190602001808311610d2557829003601f168201915b5050505050905090565b6000546001600160a01b03163314610d7f5760405162461bcd60e51b8152600401610d76906145f8565b60405180910390fd5b610da081610d9a6103e86011546127ec90919063ffffffff16565b9061282e565b60165550565b6000610db333848461294e565b5060015b92915050565b6000546001600160a01b03163314610de75760405162461bcd60e51b8152600401610d76906145f8565b62015180811115610e2e5760405162461bcd60e51b8152602060048201526011602482015270115e18d959591cc81d1a19481b1a5b5a5d607a1b6044820152606401610d76565b6025805460ff191692151592909217909155602655565b6000546001600160a01b03163314610e6f5760405162461bcd60e51b8152600401610d76906145f8565b60008111610ecd5760405162461bcd60e51b815260206004820152602560248201527f4d61782073656c6c20252073686f756c6420626520686967686572207468616e60448201526420302e312560d81b6064820152608401610d76565b610ee881610d9a6103e86011546127ec90919063ffffffff16565b60175550565b6000610efb848484612a72565b610f4d8433610f48856040518060600160405280602881526020016148ee602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190613428565b61294e565b5060019392505050565b6000546001600160a01b03163314610f815760405162461bcd60e51b8152600401610d76906145f8565b6107d18210610fe95760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526d323030302061646472657373657360901b6064820152608401610d76565b601054600090839061100690600160a01b900460ff16600a614766565b6110109084614812565b61101a9190614812565b90508061102686611bce565b10156110745760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610d76565b60005b838110156110f1576110df868686848181106110a357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906110b89190614040565b6010546110d090600160a01b900460ff16600a614766565b6110da9087614812565b612a72565b806110e981614883565b915050611077565b505050505050565b6000546001600160a01b031633146111235760405162461bcd60e51b8152600401610d76906145f8565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561116557600080fd5b505afa158015611179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119d919061447c565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b1580156111eb57600080fd5b505af11580156111ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112239190614419565b50505050565b6000546001600160a01b031633146112535760405162461bcd60e51b8152600401610d76906145f8565b602c805460ff60a81b1916600160a81b8315150217905561127330611a32565b602c54611288906001600160a01b0316611a32565b602c54600160a81b900460ff1680156112a15750600954155b156112ab57436009555b50565b60006012548211156113155760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610d76565b600061131f613462565b905061132b83826127ec565b9392505050565b6000546001600160a01b0316331461135c5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b031633146113aa5760405162461bcd60e51b8152600401610d76906145f8565b60005b825181101561141f5781602d60008584815181106113db57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061141781614883565b9150506113ad565b505050565b6000546001600160a01b0316331461144e5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b0381166000908152600c602052604090205460ff166114b65760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610d76565b60005b600f5481101561160f57816001600160a01b0316600f82815481106114ee57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156115fd57600f805461151990600190614831565b8154811061153757634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600f80546001600160a01b03909216918390811061157157634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600c90925220805460ff19169055600f8054806115d757634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061160781614883565b9150506114b9565b5050565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610db3918590610f4890866128ad565b336000818152600c602052604090205460ff16156116be5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610d76565b60006116c983613485565b505050506001600160a01b0384166000908152600560205260409020549192506116f59190508261290c565b6001600160a01b03831660009081526005602052604090205560125461171b908261290c565b60125560135461172b90846128ad565b601355505050565b6000546001600160a01b0316331461175d5760405162461bcd60e51b8152600401610d76906145f8565b6706f05b59d3b2000061177182600a61475a565b61177b9084614812565b101561178657600080fd5b61179181600a61475a565b61179b9083614812565b6030555050565b60006011548311156117f65760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610d76565b8161181557600061180684613485565b50939550610db7945050505050565b600061182084613485565b50929550610db7945050505050565b6000546001600160a01b031633146118595760405162461bcd60e51b8152600401610d76906145f8565b6706f05b59d3b2000061186d83600a61475a565b6118779085614812565b101561188257600080fd5b6202a30081111561189257600080fd5b61189d82600a61475a565b6118a79084614812565b6030556031555050565b6000546001600160a01b031633146118db5760405162461bcd60e51b8152600401610d76906145f8565b60005b8281101561122357816008600086868581811061190b57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906119209190614040565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561195181614883565b90506118de565b6000546001600160a01b031633146119825760405162461bcd60e51b8152600401610d76906145f8565b602c8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146119ca5760405162461bcd60e51b8152600401610d76906145f8565b6025805460ff1916911515919091179055565b6000546001600160a01b03163314611a075760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a5c5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03811660009081526005602052604090205415611ab6576001600160a01b038116600090815260056020526040902054611a9c906112ae565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055565b6000546001600160a01b03163314611b465760405162461bcd60e51b8152600401610d76906145f8565b601c839055601d829055601e819055601f8490556032611b7285611b6c848188886128ad565b906128ad565b106112235760405162461bcd60e51b815260206004820152602660248201527f546f74616c2053656c6c204665652073686f756c64206265206c657373207468604482015265616e2035302560d01b6064820152608401610d76565b6001600160a01b0381166000908152600c602052604081205460ff1615611c0b57506001600160a01b031660009081526006602052604090205490565b6001600160a01b038216600090815260056020526040902054610db7906112ae565b6000546001600160a01b03163314611c575760405162461bcd60e51b8152600401610d76906145f8565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611ccb5760405162461bcd60e51b8152600401610d76906145f8565b60005b8181101561141f576001600a6000858585818110611cfc57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611d119190614040565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611d4281614883565b9050611cce565b6000546001600160a01b03163314611d735760405162461bcd60e51b8152600401610d76906145f8565b6040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561160f573d6000803e3d6000fd5b6000546001600160a01b03163314611dd25760405162461bcd60e51b8152600401610d76906145f8565b60005b8181101561141f576001600d6000858585818110611e0357634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611e189190614040565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611e4981614883565b9050611dd5565b6000546001600160a01b03163314611e7a5760405162461bcd60e51b8152600401610d76906145f8565b6103218310611ee15760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610d76565b828114611f415760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610d76565b6000805b84811015611fb457601054611f6590600160a01b900460ff16600a614766565b848483818110611f8557634e487b7160e01b600052603260045260246000fd5b90506020020135611f969190614812565b611fa090836146df565b915080611fac81614883565b915050611f45565b5080611fbf87611bce565b101561200d5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610d76565b60005b848110156120ac5761209a8787878481811061203c57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906120519190614040565b60105461206990600160a01b900460ff16600a614766565b87878681811061208957634e487b7160e01b600052603260045260246000fd5b905060200201356110da9190614812565b806120a481614883565b915050612010565b50505050505050565b6000546001600160a01b031633146120df5760405162461bcd60e51b8152600401610d76906145f8565b80826011546120ee9190614812565b6120f891906146f7565b602a555050565b606060158054610cc990614848565b6000546001600160a01b031633146121385760405162461bcd60e51b8152600401610d76906145f8565b6018839055601a8290556019819055601b849055602484905560218390556023819055602282905561216e81611b6c85856128ad565b60288190556032116112235760405162461bcd60e51b815260206004820152602760248201527f546f74616c2042757920466565202073686f756c6420626520206c657373207460448201526668616e2035302560c81b6064820152608401610d76565b6000610db33384610f4885604051806060016040528060258152602001614916602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190613428565b6000546001600160a01b0316331461224b5760405162461bcd60e51b8152600401610d76906145f8565b6032805460ff1916911515919091179055565b6000610db3338484612a72565b6000546001600160a01b031633146122955760405162461bcd60e51b8152600401610d76906145f8565b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055565b6000546001600160a01b031633146122ed5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b031633146123385760405162461bcd60e51b8152600401610d76906145f8565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561237857600080fd5b505afa15801561238c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b0919061405c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156123f857600080fd5b505afa15801561240c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612430919061405c565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561247657600080fd5b505afa15801561248a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ae919061405c565b90506001600160a01b03811661265457816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156124f757600080fd5b505afa15801561250b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252f919061405c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561257757600080fd5b505afa15801561258b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125af919061405c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156125f757600080fd5b505af115801561260b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262f919061405c565b602c80546001600160a01b0319166001600160a01b0392909216919091179055612670565b602c80546001600160a01b0319166001600160a01b0383161790555b50602c546001600160a01b0390811660009081526020805260409020805460ff19166001179055602b8054929091166001600160a01b031990921691909117905550565b6000546001600160a01b031633146126de5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b0316331461272c5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b0381166127915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d76565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061132b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506134d4565b60008261283d57506000610db7565b60006128498385614812565b90508261285685836146f7565b1461132b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d76565b6000806128ba83856146df565b90508381101561132b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d76565b600061132b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613428565b6001600160a01b0383166129b05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d76565b6001600160a01b038216612a115760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d76565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316612ad65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d76565b6001600160a01b038216612b385760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d76565b60008111612b9a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610d76565b6000546001600160a01b03848116911614801590612bc657506000546001600160a01b03838116911614155b15612c2457602c54600160a81b900460ff16612c245760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610d76565b602c546000906001600160a01b0385811691161480612c505750602c546001600160a01b038481169116145b8015612c9857506001600160a01b0384166000908152600a602052604090205460ff1680612c9657506001600160a01b0383166000908152600a602052604090205460ff165b155b15612ca1575060015b6000600954118015612ce557506001600160a01b0383166000908152600b602052604090205460ff16158015612ce557506000546001600160a01b03858116911614155b8015612cff5750436009546002612cfc91906146df565b11155b15612d7357601654612d1084611bce565b612d1a90846146df565b1115612d735760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d6974604482015261195960f21b6064820152608401610d76565b602854602955601b546024556001600160a01b03841660009081526008602052604090205460ff1615612e04576001600160a01b0383161580612dc357506010546001600160a01b038481169116145b612e045760405162461bcd60e51b8152602060048201526012602482015271596f752063616e206f6e6c79204275726e2160701b6044820152606401610d76565b60325460ff161561318a576001600160a01b0384166000908152602d602052604090205460ff1615612e76576001600160a01b038316600090815260208052604090205460ff1680612e6d57506001600160a01b038416600090815260208052604090205460ff165b612e7657600080fd5b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612eb957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602b54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612f0d57600080fd5b505afa158015612f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f45919061405c565b81600181518110612f6657634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092018101919091529085166000908152908052604090205460ff168015612fb757506001600160a01b0385166000908152602d602052604090205460ff165b8015612fcd5750602c54600160a01b900460ff16155b1561318857602b5460405163d06ca61f60e01b81526000916001600160a01b03169063d06ca61f90613005908790869060040161462d565b60006040518083038186803b15801561301d57600080fd5b505afa158015613031573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613059919081019061436a565b60018151811061307957634e487b7160e01b600052603260045260246000fd5b6020026020010151905042603154602f6000896001600160a01b03166001600160a01b03168152602001908152602001600020546130b791906146df565b10156130f9576030548111156130cc57600080fd5b6001600160a01b0386166000908152602f60209081526040808320429055602e9091529020819055613186565b6031546001600160a01b0387166000908152602f60205260409020544291613120916146df565b1115613186576030546001600160a01b0387166000908152602e602052604090205461314d9083906146df565b111561315857600080fd5b6001600160a01b0386166000908152602e6020526040812080548392906131809084906146df565b90915550505b505b505b60255460ff1680156131a95750602c546001600160a01b038481169116145b80156131ce57506001600160a01b0384166000908152600e602052604090205460ff16155b15613270576001600160a01b03841660009081526027602052604090205442116132495760405162461bcd60e51b815260206004820152602660248201527f506c65617365207761697420666f7220636f6f6c646f776e206265747765656e6044820152652073656c6c7360d01b6064820152608401610d76565b60265461325690426146df565b6001600160a01b0385166000908152602760205260409020555b602c54600160a81b900460ff1680156132965750602c546001600160a01b038481169116145b1561331f576017548211156132f85760405162461bcd60e51b815260206004820152602260248201527f416d6f756e742047726561746572207468616e206d61782073656c6c206c696d6044820152611a5d60f21b6064820152608401610d76565b613315601e54611b6c601d54601c546128ad90919063ffffffff16565b602955601f546024555b600060095411801561333e575043600954600461333c91906146df565b115b156133495760316029555b6000600954118015613368575043600954600261336691906146df565b115b156133735760636029555b602c54600160b01b900460ff16156133b657602c54600160a81b900460ff1680156133ab5750602c546001600160a01b038581169116145b156133b65760006029555b602c54600160a01b900460ff161580156133d95750602c54600160a81b900460ff165b80156133f25750602c546001600160a01b038481169116145b1561341c57600061340230611bce565b9050602a54811061341a5750602a5461341a81613502565b505b6112238484848461362c565b6000818484111561344c5760405162461bcd60e51b8152600401610d7691906145a5565b5060006134598486614831565b95945050505050565b600080600061346f613758565b909250905061347e82826127ec565b9250505090565b600080600080600080600080600061349c8a613912565b92509250925060008060006134ba8d86866134b5613462565b613954565b919f909e50909c50959a5093985091965092945050505050565b600081836134f55760405162461bcd60e51b8152600401610d7691906145a5565b50600061345984866146f7565b602c805460ff60a01b1916600160a01b17905560285460215460009161353891600291613532918290879061282e565b906127ec565b90506000613546838361290c565b9050613551816139a4565b6021544790600090613571906135689060026127ec565b6028549061290c565b905060006135936002613532846135326021548861282e90919063ffffffff16565b905060006135b0836135326023548761282e90919063ffffffff16565b905060006135cd846135326022548861282e90919063ffffffff16565b9050478015613604576003546135ed9083906001600160a01b0316613b62565b6004546136049084906001600160a01b0316613b62565b8715613614576136148885613b98565b5050602c805460ff60a01b1916905550505050505050565b6024546029548261364257600060248190556029555b6001600160a01b0386166000908152600c602052604090205460ff16801561368357506001600160a01b0385166000908152600c602052604090205460ff16155b1561369857613693868686613c7c565b613744565b6001600160a01b0386166000908152600c602052604090205460ff161580156136d957506001600160a01b0385166000908152600c602052604090205460ff165b156136e957613693868686613da2565b6001600160a01b0386166000908152600c602052604090205460ff16801561372957506001600160a01b0385166000908152600c602052604090205460ff165b1561373957613693868686613e4b565b613744868686613ebe565b826110f15760249190915560295550505050565b6012546011546000918291825b600f548110156138e2578260056000600f848154811061379557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061380e57508160066000600f84815481106137e757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561382457601254601154945094505050509091565b61387860056000600f848154811061384c57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061290c565b92506138ce60066000600f84815481106138a257634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061290c565b9150806138da81614883565b915050613765565b506011546012546138f2916127ec565b821015613909576012546011549350935050509091565b90939092509050565b60008060008061392185613f02565b9050600061392e86613f1e565b9050600061394682613940898661290c565b9061290c565b979296509094509092505050565b6000808080613963888661282e565b90506000613971888761282e565b9050600061397f888861282e565b9050600061399182613940868661290c565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106139e757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602b54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613a3b57600080fd5b505afa158015613a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a73919061405c565b81600181518110613a9457634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602b54613aba913091168461294e565b602b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790613af390859060009086903090429060040161464e565b600060405180830381600087803b158015613b0d57600080fd5b505af1158015613b21573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613b5692919061462d565b60405180910390a15050565b6040516001600160a01b0382169083156108fc029084906000818181858888f1935050505015801561141f573d6000803e3d6000fd5b602b54613bb09030906001600160a01b03168461294e565b602b546001600160a01b031663f305d719823085600080613bd96000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015613c3c57600080fd5b505af1158015613c50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c759190614504565b5050505050565b600080600080600080613c8e87613485565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150613cc0908861290c565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054613cef908761290c565b6001600160a01b03808b1660009081526005602052604080822093909355908a1681522054613d1e90866128ad565b6001600160a01b038916600090815260056020526040902055613d4081613f3a565b613d4a8483613fc2565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613d8f91815260200190565b60405180910390a3505050505050505050565b600080600080600080613db487613485565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150613de6908761290c565b6001600160a01b03808b16600090815260056020908152604080832094909455918b16815260069091522054613e1c90846128ad565b6001600160a01b038916600090815260066020908152604080832093909355600590522054613d1e90866128ad565b600080600080600080613e5d87613485565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150613e8f908861290c565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054613de6908761290c565b600080600080600080613ed087613485565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150613cef908761290c565b6000610db760646135326024548561282e90919063ffffffff16565b6000610db760646135326029548561282e90919063ffffffff16565b6000613f44613462565b90506000613f52838361282e565b30600090815260056020526040902054909150613f6f90826128ad565b30600090815260056020908152604080832093909355600c9052205460ff161561141f5730600090815260066020526040902054613fad90846128ad565b30600090815260066020526040902055505050565b601254613fcf908361290c565b601255601354613fdf90826128ad565b6013555050565b60008083601f840112613ff7578182fd5b50813567ffffffffffffffff81111561400e578182fd5b6020830191508360208260051b850101111561402957600080fd5b9250929050565b803561403b816148df565b919050565b600060208284031215614051578081fd5b813561132b816148ca565b60006020828403121561406d578081fd5b815161132b816148ca565b6000806040838503121561408a578081fd5b8235614095816148ca565b915060208301356140a5816148ca565b809150509250929050565b6000806000606084860312156140c4578081fd5b83356140cf816148ca565b925060208401356140df816148ca565b929592945050506040919091013590565b600080600080600060608688031215614107578081fd5b8535614112816148ca565b9450602086013567ffffffffffffffff8082111561412e578283fd5b61413a89838a01613fe6565b90965094506040880135915080821115614152578283fd5b5061415f88828901613fe6565b969995985093965092949392505050565b60008060008060608587031215614185578384fd5b8435614190816148ca565b9350602085013567ffffffffffffffff8111156141ab578384fd5b6141b787828801613fe6565b9598909750949560400135949350505050565b600080604083850312156141dc578182fd5b82356141e7816148ca565b915060208301356140a5816148df565b60008060408385031215614209578182fd5b8235614214816148ca565b946020939093013593505050565b60008060208385031215614234578081fd5b823567ffffffffffffffff81111561424a578182fd5b61425685828601613fe6565b90969095509350505050565b600080600060408486031215614276578081fd5b833567ffffffffffffffff81111561428c578182fd5b61429886828701613fe6565b90945092505060208401356142ac816148df565b809150509250925092565b600080604083850312156142c9578182fd5b823567ffffffffffffffff8111156142df578283fd5b8301601f810185136142ef578283fd5b803560206143046142ff836146bb565b61468a565b80838252828201915082850189848660051b8801011115614323578788fd5b8795505b8486101561434e57803561433a816148ca565b835260019590950194918301918301614327565b50955061435e9050868201614030565b93505050509250929050565b6000602080838503121561437c578182fd5b825167ffffffffffffffff811115614392578283fd5b8301601f810185136143a2578283fd5b80516143b06142ff826146bb565b80828252848201915084840188868560051b87010111156143cf578687fd5b8694505b838510156143f15780518352600194909401939185019185016143d3565b50979650505050505050565b60006020828403121561440e578081fd5b813561132b816148df565b60006020828403121561442a578081fd5b815161132b816148df565b60008060408385031215614447578182fd5b8235614214816148df565b6000806040838503121561408a578182fd5b600060208284031215614475578081fd5b5035919050565b60006020828403121561448d578081fd5b5051919050565b600080604083850312156144a6578182fd5b8235915060208301356140a5816148df565b600080604083850312156144ca578182fd5b50508035926020909101359150565b6000806000606084860312156144ed578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215614518578081fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215614546578182fd5b5050823594602084013594506040840135936060013592509050565b6000815180845260208085019450808401835b8381101561459a5781516001600160a01b031687529582019590820190600101614575565b509495945050505050565b6000602080835283518082850152825b818110156145d1578581018301518582016040015282016145b5565b818111156145e25783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006146466040830184614562565b949350505050565b85815284602082015260a06040820152600061466d60a0830186614562565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156146b3576146b36148b4565b604052919050565b600067ffffffffffffffff8211156146d5576146d56148b4565b5060051b60200190565b600082198211156146f2576146f261489e565b500190565b60008261471257634e487b7160e01b81526012600452602481fd5b500490565b600181815b808511156147525781600019048211156147385761473861489e565b8085161561474557918102915b93841c939080029061471c565b509250929050565b600061132b8383614771565b600061132b60ff8416835b60008261478057506001610db7565b8161478d57506000610db7565b81600181146147a357600281146147ad576147c9565b6001915050610db7565b60ff8411156147be576147be61489e565b50506001821b610db7565b5060208310610133831016604e8410600b84101617156147ec575081810a610db7565b6147f68383614717565b806000190482111561480a5761480a61489e565b029392505050565b600081600019048311821515161561482c5761482c61489e565b500290565b6000828210156148435761484361489e565b500390565b600181811c9082168061485c57607f821691505b6020821081141561487d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156148975761489761489e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146112ab57600080fd5b80151581146112ab57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bc3a1dc9b06268bce939afe03c42246a107a8a57c75e9ec42c0055d83d29ab2164736f6c63430008040033
Deployed Bytecode
0x6080604052600436106104095760003560e01c806370a0823111610213578063a0c5efc211610123578063cbdf6d50116100ab578063ea2f0b371161007a578063ea2f0b3714610c19578063eafb5a3c14610c39578063f259c57b14610c59578063f2fde38b14610c79578063ffb54a9914610c9957600080fd5b8063cbdf6d5014610b87578063d3f6a15714610b9d578063dc44b6a014610bbd578063dd62ed3e14610bd357600080fd5b8063a985ceef116100f2578063a985ceef14610b15578063bf56b37114610b2f578063c5d2418914610b45578063c860795214610b5b578063c9cf778914610b7157600080fd5b8063a0c5efc214610a95578063a457c2d714610ab5578063a75dbac314610ad5578063a9059cbb14610af557600080fd5b80637d5d3944116101a657806388f820201161017557806388f82020146109ef5780638da5cb5b14610a285780638f4590d214610a465780639242b75914610a6657806395d89b4114610a8057600080fd5b80637d5d39441461098357806384530c461461099957806387c3e8a6146109b957806388790a68146109d957600080fd5b8063743942b6116101e2578063743942b614610921578063749f2ef2146109415780637598f8bc1461095757806378109e541461096d57600080fd5b806370a08231146108b6578063715018a6146108d657806371b9189c146108eb578063722b62ad1461090b57600080fd5b8063342594df1161031957806348a1f08e116102a157806350af449e1161027057806350af449e1461081057806350db71fb1461084057806352390c021461086057806362015852146108805780636ce37fa01461089657600080fd5b806348a1f08e1461079057806349bd5a5e146107b05780634b01547f146107d05780634bf6b68d146107f057600080fd5b80633cfebd85116102e85780633cfebd85146106e1578063401aa5c01461071a578063444e0230146107305780634549b0391461075057806346fe22461461077057600080fd5b8063342594df146106615780633685d4191461068157806339509351146106a15780633bd5d173146106c157600080fd5b806318160ddd1161039c5780632691bc801161036b5780632691bc80146105b45780632a9b8072146105d55780632d838119146105f55780632dd5efe714610615578063313ce5671461063557600080fd5b806318160ddd1461053f57806323b872dd146105545780632435f8451461057457806325b86edf1461059457600080fd5b80630d45c0e3116103d85780630d45c0e3146104b25780630e49767d146104d257806313114a9d146104f25780631694505e1461050757600080fd5b80630445b6671461041557806306fdde031461043e57806309302dc614610460578063095ea7b31461048257600080fd5b3661041057005b600080fd5b34801561042157600080fd5b5061042b602a5481565b6040519081526020015b60405180910390f35b34801561044a57600080fd5b50610453610cba565b60405161043591906145a5565b34801561046c57600080fd5b5061048061047b366004614464565b610d4c565b005b34801561048e57600080fd5b506104a261049d3660046141f7565b610da6565b6040519015158152602001610435565b3480156104be57600080fd5b506104806104cd366004614435565b610dbd565b3480156104de57600080fd5b506104806104ed366004614464565b610e45565b3480156104fe57600080fd5b5060135461042b565b34801561051357600080fd5b50602b54610527906001600160a01b031681565b6040516001600160a01b039091168152602001610435565b34801561054b57600080fd5b5060115461042b565b34801561056057600080fd5b506104a261056f3660046140b0565b610eee565b34801561058057600080fd5b5061048061058f366004614170565b610f57565b3480156105a057600080fd5b506104806105af366004614452565b6110f9565b3480156105c057600080fd5b50602c546104a290600160b01b900460ff1681565b3480156105e157600080fd5b506104806105f03660046143fd565b611229565b34801561060157600080fd5b5061042b610610366004614464565b6112ae565b34801561062157600080fd5b50610480610630366004614040565b611332565b34801561064157600080fd5b50601054600160a01b900460ff1660405160ff9091168152602001610435565b34801561066d57600080fd5b5061048061067c3660046142b7565b611380565b34801561068d57600080fd5b5061048061069c366004614040565b611424565b3480156106ad57600080fd5b506104a26106bc3660046141f7565b611613565b3480156106cd57600080fd5b506104806106dc366004614464565b611649565b3480156106ed57600080fd5b506104a26106fc366004614040565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561072657600080fd5b5061042b601b5481565b34801561073c57600080fd5b5061048061074b3660046144b8565b611733565b34801561075c57600080fd5b5061042b61076b366004614494565b6117a2565b34801561077c57600080fd5b5061048061078b3660046144d9565b61182f565b34801561079c57600080fd5b506104806107ab366004614262565b6118b1565b3480156107bc57600080fd5b50602c54610527906001600160a01b031681565b3480156107dc57600080fd5b506104806107eb3660046143fd565b611958565b3480156107fc57600080fd5b5061048061080b3660046143fd565b6119a0565b34801561081c57600080fd5b506104a261082b366004614040565b600e6020526000908152604090205460ff1681565b34801561084c57600080fd5b5061048061085b3660046141ca565b6119dd565b34801561086c57600080fd5b5061048061087b366004614040565b611a32565b34801561088c57600080fd5b5061042b60195481565b3480156108a257600080fd5b506104806108b1366004614531565b611b1c565b3480156108c257600080fd5b5061042b6108d1366004614040565b611bce565b3480156108e257600080fd5b50610480611c2d565b3480156108f757600080fd5b50610480610906366004614222565b611ca1565b34801561091757600080fd5b5061042b60265481565b34801561092d57600080fd5b5061048061093c366004614040565b611d49565b34801561094d57600080fd5b5061042b60315481565b34801561096357600080fd5b5061042b601f5481565b34801561097957600080fd5b5061042b60165481565b34801561098f57600080fd5b5061042b60175481565b3480156109a557600080fd5b506104806109b4366004614222565b611da8565b3480156109c557600080fd5b506104806109d43660046140f0565b611e50565b3480156109e557600080fd5b5061042b601c5481565b3480156109fb57600080fd5b506104a2610a0a366004614040565b6001600160a01b03166000908152600c602052604090205460ff1690565b348015610a3457600080fd5b506000546001600160a01b0316610527565b348015610a5257600080fd5b50610480610a613660046144b8565b6120b5565b348015610a7257600080fd5b506032546104a29060ff1681565b348015610a8c57600080fd5b506104536120ff565b348015610aa157600080fd5b50610480610ab0366004614531565b61210e565b348015610ac157600080fd5b506104a2610ad03660046141f7565b6121d2565b348015610ae157600080fd5b50610480610af03660046143fd565b612221565b348015610b0157600080fd5b506104a2610b103660046141f7565b61225e565b348015610b2157600080fd5b506025546104a29060ff1681565b348015610b3b57600080fd5b5061042b60095481565b348015610b5157600080fd5b5061042b601a5481565b348015610b6757600080fd5b5061042b601d5481565b348015610b7d57600080fd5b5061042b601e5481565b348015610b9357600080fd5b5061042b60305481565b348015610ba957600080fd5b50610480610bb8366004614078565b61226b565b348015610bc957600080fd5b5061042b60185481565b348015610bdf57600080fd5b5061042b610bee366004614078565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610c2557600080fd5b50610480610c34366004614040565b6122c3565b348015610c4557600080fd5b50610480610c54366004614040565b61230e565b348015610c6557600080fd5b50610480610c74366004614040565b6126b4565b348015610c8557600080fd5b50610480610c94366004614040565b612702565b348015610ca557600080fd5b50602c546104a290600160a81b900460ff1681565b606060148054610cc990614848565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf590614848565b8015610d425780601f10610d1757610100808354040283529160200191610d42565b820191906000526020600020905b815481529060010190602001808311610d2557829003601f168201915b5050505050905090565b6000546001600160a01b03163314610d7f5760405162461bcd60e51b8152600401610d76906145f8565b60405180910390fd5b610da081610d9a6103e86011546127ec90919063ffffffff16565b9061282e565b60165550565b6000610db333848461294e565b5060015b92915050565b6000546001600160a01b03163314610de75760405162461bcd60e51b8152600401610d76906145f8565b62015180811115610e2e5760405162461bcd60e51b8152602060048201526011602482015270115e18d959591cc81d1a19481b1a5b5a5d607a1b6044820152606401610d76565b6025805460ff191692151592909217909155602655565b6000546001600160a01b03163314610e6f5760405162461bcd60e51b8152600401610d76906145f8565b60008111610ecd5760405162461bcd60e51b815260206004820152602560248201527f4d61782073656c6c20252073686f756c6420626520686967686572207468616e60448201526420302e312560d81b6064820152608401610d76565b610ee881610d9a6103e86011546127ec90919063ffffffff16565b60175550565b6000610efb848484612a72565b610f4d8433610f48856040518060600160405280602881526020016148ee602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190613428565b61294e565b5060019392505050565b6000546001600160a01b03163314610f815760405162461bcd60e51b8152600401610d76906145f8565b6107d18210610fe95760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526d323030302061646472657373657360901b6064820152608401610d76565b601054600090839061100690600160a01b900460ff16600a614766565b6110109084614812565b61101a9190614812565b90508061102686611bce565b10156110745760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610d76565b60005b838110156110f1576110df868686848181106110a357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906110b89190614040565b6010546110d090600160a01b900460ff16600a614766565b6110da9087614812565b612a72565b806110e981614883565b915050611077565b505050505050565b6000546001600160a01b031633146111235760405162461bcd60e51b8152600401610d76906145f8565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561116557600080fd5b505afa158015611179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119d919061447c565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b1580156111eb57600080fd5b505af11580156111ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112239190614419565b50505050565b6000546001600160a01b031633146112535760405162461bcd60e51b8152600401610d76906145f8565b602c805460ff60a81b1916600160a81b8315150217905561127330611a32565b602c54611288906001600160a01b0316611a32565b602c54600160a81b900460ff1680156112a15750600954155b156112ab57436009555b50565b60006012548211156113155760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610d76565b600061131f613462565b905061132b83826127ec565b9392505050565b6000546001600160a01b0316331461135c5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b031633146113aa5760405162461bcd60e51b8152600401610d76906145f8565b60005b825181101561141f5781602d60008584815181106113db57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061141781614883565b9150506113ad565b505050565b6000546001600160a01b0316331461144e5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b0381166000908152600c602052604090205460ff166114b65760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610d76565b60005b600f5481101561160f57816001600160a01b0316600f82815481106114ee57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156115fd57600f805461151990600190614831565b8154811061153757634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600f80546001600160a01b03909216918390811061157157634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600c90925220805460ff19169055600f8054806115d757634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061160781614883565b9150506114b9565b5050565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610db3918590610f4890866128ad565b336000818152600c602052604090205460ff16156116be5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610d76565b60006116c983613485565b505050506001600160a01b0384166000908152600560205260409020549192506116f59190508261290c565b6001600160a01b03831660009081526005602052604090205560125461171b908261290c565b60125560135461172b90846128ad565b601355505050565b6000546001600160a01b0316331461175d5760405162461bcd60e51b8152600401610d76906145f8565b6706f05b59d3b2000061177182600a61475a565b61177b9084614812565b101561178657600080fd5b61179181600a61475a565b61179b9083614812565b6030555050565b60006011548311156117f65760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610d76565b8161181557600061180684613485565b50939550610db7945050505050565b600061182084613485565b50929550610db7945050505050565b6000546001600160a01b031633146118595760405162461bcd60e51b8152600401610d76906145f8565b6706f05b59d3b2000061186d83600a61475a565b6118779085614812565b101561188257600080fd5b6202a30081111561189257600080fd5b61189d82600a61475a565b6118a79084614812565b6030556031555050565b6000546001600160a01b031633146118db5760405162461bcd60e51b8152600401610d76906145f8565b60005b8281101561122357816008600086868581811061190b57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906119209190614040565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561195181614883565b90506118de565b6000546001600160a01b031633146119825760405162461bcd60e51b8152600401610d76906145f8565b602c8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146119ca5760405162461bcd60e51b8152600401610d76906145f8565b6025805460ff1916911515919091179055565b6000546001600160a01b03163314611a075760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a5c5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03811660009081526005602052604090205415611ab6576001600160a01b038116600090815260056020526040902054611a9c906112ae565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055565b6000546001600160a01b03163314611b465760405162461bcd60e51b8152600401610d76906145f8565b601c839055601d829055601e819055601f8490556032611b7285611b6c848188886128ad565b906128ad565b106112235760405162461bcd60e51b815260206004820152602660248201527f546f74616c2053656c6c204665652073686f756c64206265206c657373207468604482015265616e2035302560d01b6064820152608401610d76565b6001600160a01b0381166000908152600c602052604081205460ff1615611c0b57506001600160a01b031660009081526006602052604090205490565b6001600160a01b038216600090815260056020526040902054610db7906112ae565b6000546001600160a01b03163314611c575760405162461bcd60e51b8152600401610d76906145f8565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611ccb5760405162461bcd60e51b8152600401610d76906145f8565b60005b8181101561141f576001600a6000858585818110611cfc57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611d119190614040565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611d4281614883565b9050611cce565b6000546001600160a01b03163314611d735760405162461bcd60e51b8152600401610d76906145f8565b6040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561160f573d6000803e3d6000fd5b6000546001600160a01b03163314611dd25760405162461bcd60e51b8152600401610d76906145f8565b60005b8181101561141f576001600d6000858585818110611e0357634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611e189190614040565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611e4981614883565b9050611dd5565b6000546001600160a01b03163314611e7a5760405162461bcd60e51b8152600401610d76906145f8565b6103218310611ee15760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610d76565b828114611f415760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610d76565b6000805b84811015611fb457601054611f6590600160a01b900460ff16600a614766565b848483818110611f8557634e487b7160e01b600052603260045260246000fd5b90506020020135611f969190614812565b611fa090836146df565b915080611fac81614883565b915050611f45565b5080611fbf87611bce565b101561200d5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610d76565b60005b848110156120ac5761209a8787878481811061203c57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906120519190614040565b60105461206990600160a01b900460ff16600a614766565b87878681811061208957634e487b7160e01b600052603260045260246000fd5b905060200201356110da9190614812565b806120a481614883565b915050612010565b50505050505050565b6000546001600160a01b031633146120df5760405162461bcd60e51b8152600401610d76906145f8565b80826011546120ee9190614812565b6120f891906146f7565b602a555050565b606060158054610cc990614848565b6000546001600160a01b031633146121385760405162461bcd60e51b8152600401610d76906145f8565b6018839055601a8290556019819055601b849055602484905560218390556023819055602282905561216e81611b6c85856128ad565b60288190556032116112235760405162461bcd60e51b815260206004820152602760248201527f546f74616c2042757920466565202073686f756c6420626520206c657373207460448201526668616e2035302560c81b6064820152608401610d76565b6000610db33384610f4885604051806060016040528060258152602001614916602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190613428565b6000546001600160a01b0316331461224b5760405162461bcd60e51b8152600401610d76906145f8565b6032805460ff1916911515919091179055565b6000610db3338484612a72565b6000546001600160a01b031633146122955760405162461bcd60e51b8152600401610d76906145f8565b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055565b6000546001600160a01b031633146122ed5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b031633146123385760405162461bcd60e51b8152600401610d76906145f8565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561237857600080fd5b505afa15801561238c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b0919061405c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156123f857600080fd5b505afa15801561240c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612430919061405c565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561247657600080fd5b505afa15801561248a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ae919061405c565b90506001600160a01b03811661265457816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156124f757600080fd5b505afa15801561250b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252f919061405c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561257757600080fd5b505afa15801561258b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125af919061405c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156125f757600080fd5b505af115801561260b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262f919061405c565b602c80546001600160a01b0319166001600160a01b0392909216919091179055612670565b602c80546001600160a01b0319166001600160a01b0383161790555b50602c546001600160a01b0390811660009081526020805260409020805460ff19166001179055602b8054929091166001600160a01b031990921691909117905550565b6000546001600160a01b031633146126de5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b0316331461272c5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b0381166127915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d76565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061132b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506134d4565b60008261283d57506000610db7565b60006128498385614812565b90508261285685836146f7565b1461132b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d76565b6000806128ba83856146df565b90508381101561132b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d76565b600061132b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613428565b6001600160a01b0383166129b05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d76565b6001600160a01b038216612a115760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d76565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316612ad65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d76565b6001600160a01b038216612b385760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d76565b60008111612b9a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610d76565b6000546001600160a01b03848116911614801590612bc657506000546001600160a01b03838116911614155b15612c2457602c54600160a81b900460ff16612c245760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610d76565b602c546000906001600160a01b0385811691161480612c505750602c546001600160a01b038481169116145b8015612c9857506001600160a01b0384166000908152600a602052604090205460ff1680612c9657506001600160a01b0383166000908152600a602052604090205460ff165b155b15612ca1575060015b6000600954118015612ce557506001600160a01b0383166000908152600b602052604090205460ff16158015612ce557506000546001600160a01b03858116911614155b8015612cff5750436009546002612cfc91906146df565b11155b15612d7357601654612d1084611bce565b612d1a90846146df565b1115612d735760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d6974604482015261195960f21b6064820152608401610d76565b602854602955601b546024556001600160a01b03841660009081526008602052604090205460ff1615612e04576001600160a01b0383161580612dc357506010546001600160a01b038481169116145b612e045760405162461bcd60e51b8152602060048201526012602482015271596f752063616e206f6e6c79204275726e2160701b6044820152606401610d76565b60325460ff161561318a576001600160a01b0384166000908152602d602052604090205460ff1615612e76576001600160a01b038316600090815260208052604090205460ff1680612e6d57506001600160a01b038416600090815260208052604090205460ff165b612e7657600080fd5b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612eb957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602b54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612f0d57600080fd5b505afa158015612f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f45919061405c565b81600181518110612f6657634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092018101919091529085166000908152908052604090205460ff168015612fb757506001600160a01b0385166000908152602d602052604090205460ff165b8015612fcd5750602c54600160a01b900460ff16155b1561318857602b5460405163d06ca61f60e01b81526000916001600160a01b03169063d06ca61f90613005908790869060040161462d565b60006040518083038186803b15801561301d57600080fd5b505afa158015613031573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613059919081019061436a565b60018151811061307957634e487b7160e01b600052603260045260246000fd5b6020026020010151905042603154602f6000896001600160a01b03166001600160a01b03168152602001908152602001600020546130b791906146df565b10156130f9576030548111156130cc57600080fd5b6001600160a01b0386166000908152602f60209081526040808320429055602e9091529020819055613186565b6031546001600160a01b0387166000908152602f60205260409020544291613120916146df565b1115613186576030546001600160a01b0387166000908152602e602052604090205461314d9083906146df565b111561315857600080fd5b6001600160a01b0386166000908152602e6020526040812080548392906131809084906146df565b90915550505b505b505b60255460ff1680156131a95750602c546001600160a01b038481169116145b80156131ce57506001600160a01b0384166000908152600e602052604090205460ff16155b15613270576001600160a01b03841660009081526027602052604090205442116132495760405162461bcd60e51b815260206004820152602660248201527f506c65617365207761697420666f7220636f6f6c646f776e206265747765656e6044820152652073656c6c7360d01b6064820152608401610d76565b60265461325690426146df565b6001600160a01b0385166000908152602760205260409020555b602c54600160a81b900460ff1680156132965750602c546001600160a01b038481169116145b1561331f576017548211156132f85760405162461bcd60e51b815260206004820152602260248201527f416d6f756e742047726561746572207468616e206d61782073656c6c206c696d6044820152611a5d60f21b6064820152608401610d76565b613315601e54611b6c601d54601c546128ad90919063ffffffff16565b602955601f546024555b600060095411801561333e575043600954600461333c91906146df565b115b156133495760316029555b6000600954118015613368575043600954600261336691906146df565b115b156133735760636029555b602c54600160b01b900460ff16156133b657602c54600160a81b900460ff1680156133ab5750602c546001600160a01b038581169116145b156133b65760006029555b602c54600160a01b900460ff161580156133d95750602c54600160a81b900460ff165b80156133f25750602c546001600160a01b038481169116145b1561341c57600061340230611bce565b9050602a54811061341a5750602a5461341a81613502565b505b6112238484848461362c565b6000818484111561344c5760405162461bcd60e51b8152600401610d7691906145a5565b5060006134598486614831565b95945050505050565b600080600061346f613758565b909250905061347e82826127ec565b9250505090565b600080600080600080600080600061349c8a613912565b92509250925060008060006134ba8d86866134b5613462565b613954565b919f909e50909c50959a5093985091965092945050505050565b600081836134f55760405162461bcd60e51b8152600401610d7691906145a5565b50600061345984866146f7565b602c805460ff60a01b1916600160a01b17905560285460215460009161353891600291613532918290879061282e565b906127ec565b90506000613546838361290c565b9050613551816139a4565b6021544790600090613571906135689060026127ec565b6028549061290c565b905060006135936002613532846135326021548861282e90919063ffffffff16565b905060006135b0836135326023548761282e90919063ffffffff16565b905060006135cd846135326022548861282e90919063ffffffff16565b9050478015613604576003546135ed9083906001600160a01b0316613b62565b6004546136049084906001600160a01b0316613b62565b8715613614576136148885613b98565b5050602c805460ff60a01b1916905550505050505050565b6024546029548261364257600060248190556029555b6001600160a01b0386166000908152600c602052604090205460ff16801561368357506001600160a01b0385166000908152600c602052604090205460ff16155b1561369857613693868686613c7c565b613744565b6001600160a01b0386166000908152600c602052604090205460ff161580156136d957506001600160a01b0385166000908152600c602052604090205460ff165b156136e957613693868686613da2565b6001600160a01b0386166000908152600c602052604090205460ff16801561372957506001600160a01b0385166000908152600c602052604090205460ff165b1561373957613693868686613e4b565b613744868686613ebe565b826110f15760249190915560295550505050565b6012546011546000918291825b600f548110156138e2578260056000600f848154811061379557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061380e57508160066000600f84815481106137e757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561382457601254601154945094505050509091565b61387860056000600f848154811061384c57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061290c565b92506138ce60066000600f84815481106138a257634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061290c565b9150806138da81614883565b915050613765565b506011546012546138f2916127ec565b821015613909576012546011549350935050509091565b90939092509050565b60008060008061392185613f02565b9050600061392e86613f1e565b9050600061394682613940898661290c565b9061290c565b979296509094509092505050565b6000808080613963888661282e565b90506000613971888761282e565b9050600061397f888861282e565b9050600061399182613940868661290c565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106139e757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602b54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613a3b57600080fd5b505afa158015613a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a73919061405c565b81600181518110613a9457634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602b54613aba913091168461294e565b602b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790613af390859060009086903090429060040161464e565b600060405180830381600087803b158015613b0d57600080fd5b505af1158015613b21573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613b5692919061462d565b60405180910390a15050565b6040516001600160a01b0382169083156108fc029084906000818181858888f1935050505015801561141f573d6000803e3d6000fd5b602b54613bb09030906001600160a01b03168461294e565b602b546001600160a01b031663f305d719823085600080613bd96000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015613c3c57600080fd5b505af1158015613c50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c759190614504565b5050505050565b600080600080600080613c8e87613485565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150613cc0908861290c565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054613cef908761290c565b6001600160a01b03808b1660009081526005602052604080822093909355908a1681522054613d1e90866128ad565b6001600160a01b038916600090815260056020526040902055613d4081613f3a565b613d4a8483613fc2565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613d8f91815260200190565b60405180910390a3505050505050505050565b600080600080600080613db487613485565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150613de6908761290c565b6001600160a01b03808b16600090815260056020908152604080832094909455918b16815260069091522054613e1c90846128ad565b6001600160a01b038916600090815260066020908152604080832093909355600590522054613d1e90866128ad565b600080600080600080613e5d87613485565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150613e8f908861290c565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054613de6908761290c565b600080600080600080613ed087613485565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150613cef908761290c565b6000610db760646135326024548561282e90919063ffffffff16565b6000610db760646135326029548561282e90919063ffffffff16565b6000613f44613462565b90506000613f52838361282e565b30600090815260056020526040902054909150613f6f90826128ad565b30600090815260056020908152604080832093909355600c9052205460ff161561141f5730600090815260066020526040902054613fad90846128ad565b30600090815260066020526040902055505050565b601254613fcf908361290c565b601255601354613fdf90826128ad565b6013555050565b60008083601f840112613ff7578182fd5b50813567ffffffffffffffff81111561400e578182fd5b6020830191508360208260051b850101111561402957600080fd5b9250929050565b803561403b816148df565b919050565b600060208284031215614051578081fd5b813561132b816148ca565b60006020828403121561406d578081fd5b815161132b816148ca565b6000806040838503121561408a578081fd5b8235614095816148ca565b915060208301356140a5816148ca565b809150509250929050565b6000806000606084860312156140c4578081fd5b83356140cf816148ca565b925060208401356140df816148ca565b929592945050506040919091013590565b600080600080600060608688031215614107578081fd5b8535614112816148ca565b9450602086013567ffffffffffffffff8082111561412e578283fd5b61413a89838a01613fe6565b90965094506040880135915080821115614152578283fd5b5061415f88828901613fe6565b969995985093965092949392505050565b60008060008060608587031215614185578384fd5b8435614190816148ca565b9350602085013567ffffffffffffffff8111156141ab578384fd5b6141b787828801613fe6565b9598909750949560400135949350505050565b600080604083850312156141dc578182fd5b82356141e7816148ca565b915060208301356140a5816148df565b60008060408385031215614209578182fd5b8235614214816148ca565b946020939093013593505050565b60008060208385031215614234578081fd5b823567ffffffffffffffff81111561424a578182fd5b61425685828601613fe6565b90969095509350505050565b600080600060408486031215614276578081fd5b833567ffffffffffffffff81111561428c578182fd5b61429886828701613fe6565b90945092505060208401356142ac816148df565b809150509250925092565b600080604083850312156142c9578182fd5b823567ffffffffffffffff8111156142df578283fd5b8301601f810185136142ef578283fd5b803560206143046142ff836146bb565b61468a565b80838252828201915082850189848660051b8801011115614323578788fd5b8795505b8486101561434e57803561433a816148ca565b835260019590950194918301918301614327565b50955061435e9050868201614030565b93505050509250929050565b6000602080838503121561437c578182fd5b825167ffffffffffffffff811115614392578283fd5b8301601f810185136143a2578283fd5b80516143b06142ff826146bb565b80828252848201915084840188868560051b87010111156143cf578687fd5b8694505b838510156143f15780518352600194909401939185019185016143d3565b50979650505050505050565b60006020828403121561440e578081fd5b813561132b816148df565b60006020828403121561442a578081fd5b815161132b816148df565b60008060408385031215614447578182fd5b8235614214816148df565b6000806040838503121561408a578182fd5b600060208284031215614475578081fd5b5035919050565b60006020828403121561448d578081fd5b5051919050565b600080604083850312156144a6578182fd5b8235915060208301356140a5816148df565b600080604083850312156144ca578182fd5b50508035926020909101359150565b6000806000606084860312156144ed578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215614518578081fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215614546578182fd5b5050823594602084013594506040840135936060013592509050565b6000815180845260208085019450808401835b8381101561459a5781516001600160a01b031687529582019590820190600101614575565b509495945050505050565b6000602080835283518082850152825b818110156145d1578581018301518582016040015282016145b5565b818111156145e25783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006146466040830184614562565b949350505050565b85815284602082015260a06040820152600061466d60a0830186614562565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156146b3576146b36148b4565b604052919050565b600067ffffffffffffffff8211156146d5576146d56148b4565b5060051b60200190565b600082198211156146f2576146f261489e565b500190565b60008261471257634e487b7160e01b81526012600452602481fd5b500490565b600181815b808511156147525781600019048211156147385761473861489e565b8085161561474557918102915b93841c939080029061471c565b509250929050565b600061132b8383614771565b600061132b60ff8416835b60008261478057506001610db7565b8161478d57506000610db7565b81600181146147a357600281146147ad576147c9565b6001915050610db7565b60ff8411156147be576147be61489e565b50506001821b610db7565b5060208310610133831016604e8410600b84101617156147ec575081810a610db7565b6147f68383614717565b806000190482111561480a5761480a61489e565b029392505050565b600081600019048311821515161561482c5761482c61489e565b500290565b6000828210156148435761484361489e565b500390565b600181811c9082168061485c57607f821691505b6020821081141561487d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156148975761489761489e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146112ab57600080fd5b80151581146112ab57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bc3a1dc9b06268bce939afe03c42246a107a8a57c75e9ec42c0055d83d29ab2164736f6c63430008040033
Deployed Bytecode Sourcemap
14399:29636:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16793:55;;;;;;;;;;;;;;;;;;;24160:25:1;;;24148:2;24133:18;16793:55:0;;;;;;;;19697:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;40054:175::-;;;;;;;;;;-1:-1:-1;40054:175:0;;;;;:::i;:::-;;:::i;:::-;;20609:161;;;;;;;;;;-1:-1:-1;20609:161:0;;;;;:::i;:::-;;:::i;:::-;;;12976:14:1;;12969:22;12951:41;;12939:2;12924:18;20609:161:0;12906:92:1;36525:244:0;;;;;;;;;;-1:-1:-1;36525:244:0;;;;;:::i;:::-;;:::i;40237:257::-;;;;;;;;;;-1:-1:-1;40237:257:0;;;;;:::i;:::-;;:::i;21730:87::-;;;;;;;;;;-1:-1:-1;21799:10:0;;21730:87;;16867:41;;;;;;;;;;-1:-1:-1;16867:41:0;;;;-1:-1:-1;;;;;16867:41:0;;;;;;-1:-1:-1;;;;;11567:32:1;;;11549:51;;11537:2;11522:18;16867:41:0;11504:102:1;19974:95:0;;;;;;;;;;-1:-1:-1;20054:7:0;;19974:95;;20778:313;;;;;;;;;;-1:-1:-1;20778:313:0;;;;;:::i;:::-;;:::i;41529:514::-;;;;;;;;;;-1:-1:-1;41529:514:0;;;;;:::i;:::-;;:::i;39869:177::-;;;;;;;;;;-1:-1:-1;39869:177:0;;;;;:::i;:::-;;:::i;17018:34::-;;;;;;;;;;-1:-1:-1;17018:34:0;;;;-1:-1:-1;;;17018:34:0;;;;;;18724:278;;;;;;;;;;-1:-1:-1;18724:278:0;;;;;:::i;:::-;;:::i;22662:253::-;;;;;;;;;;-1:-1:-1;22662:253:0;;;;;:::i;:::-;;:::i;40502:113::-;;;;;;;;;;-1:-1:-1;40502:113:0;;;;;:::i;:::-;;:::i;19883:83::-;;;;;;;;;;-1:-1:-1;19949:9:0;;-1:-1:-1;;;19949:9:0;;;;19883:83;;25292:4:1;25280:17;;;25262:36;;25250:2;25235:18;19883:83:0;25217:87:1;43250:225:0;;;;;;;;;;-1:-1:-1;43250:225:0;;;;;:::i;:::-;;:::i;23194:479::-;;;;;;;;;;-1:-1:-1;23194:479:0;;;;;:::i;:::-;;:::i;21099:218::-;;;;;;;;;;-1:-1:-1;21099:218:0;;;;;:::i;:::-;;:::i;21829:377::-;;;;;;;;;;-1:-1:-1;21829:377:0;;;;;:::i;:::-;;:::i;36934:118::-;;;;;;;;;;-1:-1:-1;36934:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;37021:23:0;36997:4;37021:23;;;:14;:23;;;;;;;;;36934:118;16033:36;;;;;;;;;;;;;;;;43784:207;;;;;;;;;;-1:-1:-1;43784:207:0;;;;;:::i;:::-;;:::i;22218:436::-;;;;;;;;;;-1:-1:-1;22218:436:0;;;;;:::i;:::-;;:::i;43483:293::-;;;;;;;;;;-1:-1:-1;43483:293:0;;;;;:::i;:::-;;:::i;37064:215::-;;;;;;;;;;-1:-1:-1;37064:215:0;;;;;:::i;:::-;;:::i;16915:28::-;;;;;;;;;;-1:-1:-1;16915:28:0;;;;-1:-1:-1;;;;;16915:28:0;;;19016:102;;;;;;;;;;-1:-1:-1;19016:102:0;;;;;:::i;:::-;;:::i;36816:105::-;;;;;;;;;;-1:-1:-1;36816:105:0;;;;;:::i;:::-;;:::i;15264:49::-;;;;;;;;;;-1:-1:-1;15264:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;39379:129;;;;;;;;;;-1:-1:-1;39379:129:0;;;;;:::i;:::-;;:::i;22923:263::-;;;;;;;;;;-1:-1:-1;22923:263:0;;;;;:::i;:::-;;:::i;15955:29::-;;;;;;;;;;;;;;;;42663:448;;;;;;;;;;-1:-1:-1;42663:448:0;;;;;:::i;:::-;;:::i;20077:198::-;;;;;;;;;;-1:-1:-1;20077:198:0;;;;;:::i;:::-;;:::i;6030:148::-;;;;;;;;;;;;;:::i;38702:198::-;;;;;;;;;;-1:-1:-1;38702:198:0;;;;;:::i;:::-;;:::i;16541:46::-;;;;;;;;;;;;;;;;39726:135;;;;;;;;;;-1:-1:-1;39726:135:0;;;;;:::i;:::-;;:::i;17283:42::-;;;;;;;;;;;;;;;;16201:37;;;;;;;;;;;;;;;;15766:57;;;;;;;;;;;;;;;;15837:55;;;;;;;;;;;;;;;;39522:188;;;;;;;;;;-1:-1:-1;39522:188:0;;;;;:::i;:::-;;:::i;40815:706::-;;;;;;;;;;-1:-1:-1;40815:706:0;;;;;:::i;:::-;;:::i;16078:36::-;;;;;;;;;;;;;;;;21602:120;;;;;;;;;;-1:-1:-1;21602:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;21694:20:0;21670:4;21694:20;;;:11;:20;;;;;;;;;21602:120;5805:79;;;;;;;;;;-1:-1:-1;5843:7:0;5870:6;-1:-1:-1;;;;;5870:6:0;5805:79;;40623:178;;;;;;;;;;-1:-1:-1;40623:178:0;;;;;:::i;:::-;;:::i;17332:43::-;;;;;;;;;;-1:-1:-1;17332:43:0;;;;;;;;19788:87;;;;;;;;;;;;;:::i;42060:595::-;;;;;;;;;;-1:-1:-1;42060:595:0;;;;;:::i;:::-;;:::i;21325:269::-;;;;;;;;;;-1:-1:-1;21325:269:0;;;;;:::i;:::-;;:::i;43119:123::-;;;;;;;;;;-1:-1:-1;43119:123:0;;;;;:::i;:::-;;:::i;20283:167::-;;;;;;;;;;-1:-1:-1;20283:167:0;;;;;:::i;:::-;;:::i;16499:35::-;;;;;;;;;;-1:-1:-1;16499:35:0;;;;;;;;14999:29;;;;;;;;;;;;;;;;15991:35;;;;;;;;;;;;;;;;16121:36;;;;;;;;;;;;;;;;16164:30;;;;;;;;;;;;;;;;17218:49;;;;;;;;;;;;;;;;39040:191;;;;;;;;;;-1:-1:-1;39040:191:0;;;;;:::i;:::-;;:::i;15908:35::-;;;;;;;;;;;;;;;;20458:143;;;;;;;;;;-1:-1:-1;20458:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;20566:18:0;;;20539:7;20566:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;20458:143;38918:110;;;;;;;;;;-1:-1:-1;38918:110:0;;;;;:::i;:::-;;:::i;19126:563::-;;;;;;;;;;-1:-1:-1;19126:563:0;;;;;:::i;:::-;;:::i;38582:112::-;;;;;;;;;;-1:-1:-1;38582:112:0;;;;;:::i;:::-;;:::i;6186:244::-;;;;;;;;;;-1:-1:-1;6186:244:0;;;;;:::i;:::-;;:::i;16980:31::-;;;;;;;;;;-1:-1:-1;16980:31:0;;;;-1:-1:-1;;;16980:31:0;;;;;;19697:83;19734:13;19767:5;19760:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19697:83;:::o;40054:175::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;;;;;;;;;40175:46:::1;40197:23;40175:17;40187:4;40175:7;;:11;;:17;;;;:::i;:::-;:21:::0;::::1;:46::i;:::-;40157:15;:64:::0;-1:-1:-1;40054:175:0:o;20609:161::-;20684:4;20701:39;189:10;20724:7;20733:6;20701:8;:39::i;:::-;-1:-1:-1;20758:4:0;20609:161;;;;;:::o;36525:244::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;36647:8:::1;36632:11;:23;;36624:53;;;::::0;-1:-1:-1;;;36624:53:0;;14452:2:1;36624:53:0::1;::::0;::::1;14434:21:1::0;14491:2;14471:18;;;14464:30;-1:-1:-1;;;14510:18:1;;;14503:47;14567:18;;36624:53:0::1;14424:167:1::0;36624:53:0::1;36688:15;:27:::0;;-1:-1:-1;;36688:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;36726:21:::1;:35:::0;36525:244::o;40237:257::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;40370:1:::1;40346:23;:25;40338:74;;;::::0;-1:-1:-1;;;40338:74:0;;19421:2:1;40338:74:0::1;::::0;::::1;19403:21:1::0;19460:2;19440:18;;;19433:30;19499:34;19479:18;;;19472:62;-1:-1:-1;;;19550:18:1;;;19543:35;19595:19;;40338:74:0::1;19393:227:1::0;40338:74:0::1;40440:46;40462:23;40440:17;40452:4;40440:7;;:11;;:17;;;;:::i;:46::-;40424:13;:62:::0;-1:-1:-1;40237:257:0:o;20778:313::-;20876:4;20893:36;20903:6;20911:9;20922:6;20893:9;:36::i;:::-;20940:121;20949:6;189:10;20971:89;21009:6;20971:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20971:19:0;;;;;;:11;:19;;;;;;;;189:10;20971:33;;;;;;;;;;:37;:89::i;:::-;20940:8;:121::i;:::-;-1:-1:-1;21079:4:0;20778:313;;;;;:::o;41529:514::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;41679:4:::1;41660:23:::0;::::1;41652:81;;;::::0;-1:-1:-1;;;41652:81:0;;19827:2:1;41652:81:0::1;::::0;::::1;19809:21:1::0;19866:2;19846:18;;;19839:30;19905:34;19885:18;;;19878:62;-1:-1:-1;;;19956:18:1;;;19949:44;20010:19;;41652:81:0::1;19799:236:1::0;41652:81:0::1;41796:9;::::0;41769:12:::1;::::0;41808:9;;41792:13:::1;::::0;-1:-1:-1;;;41796:9:0;::::1;;;41792:2;:13;:::i;:::-;41784:21;::::0;:6;:21:::1;:::i;:::-;:40;;;;:::i;:::-;41769:55;;41864:4;41845:15;41855:4;41845:9;:15::i;:::-;:23;;41837:63;;;::::0;-1:-1:-1;;;41837:63:0;;18705:2:1;41837:63:0::1;::::0;::::1;18687:21:1::0;18744:2;18724:18;;;18717:30;18783:29;18763:18;;;18756:57;18830:18;;41837:63:0::1;18677:177:1::0;41837:63:0::1;41917:6;41913:123;41927:20:::0;;::::1;41913:123;;;41968:52;41978:4;41983:9;;41993:1;41983:12;;;;;-1:-1:-1::0;;;41983:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42009:9;::::0;42005:13:::1;::::0;-1:-1:-1;;;42009:9:0;::::1;;;42005:2;:13;:::i;:::-;41997:21;::::0;:6;:21:::1;:::i;:::-;41968:9;:52::i;:::-;41949:3:::0;::::1;::::0;::::1;:::i;:::-;;;;41913:123;;;;6009:1;41529:514:::0;;;;:::o;39869:177::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;39970:30:::1;::::0;-1:-1:-1;;;39970:30:0;;39994:4:::1;39970:30;::::0;::::1;11549:51:1::0;39952:15:0::1;::::0;-1:-1:-1;;;;;39970:15:0;::::1;::::0;::::1;::::0;11522:18:1;;39970:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40011:27;::::0;-1:-1:-1;;;40011:27:0;;-1:-1:-1;;;;;12112:32:1;;;40011:27:0::1;::::0;::::1;12094:51:1::0;12161:18;;;12154:34;;;39952:48:0;;-1:-1:-1;40011:14:0;;::::1;::::0;::::1;::::0;12067:18:1;;40011:27:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6009:1;39869:177:::0;;:::o;18724:278::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;18791:11:::1;:21:::0;;-1:-1:-1;;;;18791:21:0::1;-1:-1:-1::0;;;18791:21:0;::::1;;;;::::0;;18823:32:::1;18849:4;18823:17;:32::i;:::-;18884:13;::::0;18866:32:::1;::::0;-1:-1:-1;;;;;18884:13:0::1;18866:17;:32::i;:::-;18912:11;::::0;-1:-1:-1;;;18912:11:0;::::1;;;:30:::0;::::1;;;-1:-1:-1::0;18927:10:0::1;::::0;:15;18912:30:::1;18909:86;;;18971:12;18958:10;:25:::0;18909:86:::1;18724:278:::0;:::o;22662:253::-;22728:7;22767;;22756;:18;;22748:73;;;;-1:-1:-1;;;22748:73:0;;16364:2:1;22748:73:0;;;16346:21:1;16403:2;16383:18;;;16376:30;16442:34;16422:18;;;16415:62;-1:-1:-1;;;16493:18:1;;;16486:40;16543:19;;22748:73:0;16336:232:1;22748:73:0;22832:19;22855:10;:8;:10::i;:::-;22832:33;-1:-1:-1;22883:24:0;:7;22832:33;22883:11;:24::i;:::-;22876:31;22662:253;-1:-1:-1;;;22662:253:0:o;40502:113::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40575:25:0::1;;::::0;;;:18:::1;:25;::::0;;;;:32;;-1:-1:-1;;40575:32:0::1;40603:4;40575:32;::::0;;40502:113::o;43250:225::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;43359:9:::1;43354:114;43378:8;:15;43374:1;:19;43354:114;;;43449:7;43415:18;:31;43434:8;43443:1;43434:11;;;;;;-1:-1:-1::0;;;43434:11:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;43415:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;43415:31:0;:41;;-1:-1:-1;;43415:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;43395:3;::::1;::::0;::::1;:::i;:::-;;;;43354:114;;;;43250:225:::0;;:::o;23194:479::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23276:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;23268:60;;;::::0;-1:-1:-1;;;23268:60:0;;18349:2:1;23268:60:0::1;::::0;::::1;18331:21:1::0;18388:2;18368:18;;;18361:30;18427:29;18407:18;;;18400:57;18474:18;;23268:60:0::1;18321:177:1::0;23268:60:0::1;23344:9;23339:327;23363:9;:16:::0;23359:20;::::1;23339:327;;;23421:7;-1:-1:-1::0;;;;;23405:23:0::1;:9;23415:1;23405:12;;;;;;-1:-1:-1::0;;;23405:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;23405:12:0::1;:23;23401:254;;;23464:9;23474:16:::0;;:20:::1;::::0;23493:1:::1;::::0;23474:20:::1;:::i;:::-;23464:31;;;;;;-1:-1:-1::0;;;23464:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;23449:9:::1;:12:::0;;-1:-1:-1;;;;;23464:31:0;;::::1;::::0;23459:1;;23449:12;::::1;;;-1:-1:-1::0;;;23449:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;23449:46:0::1;-1:-1:-1::0;;;;;23449:46:0;;::::1;;::::0;;23514:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;23553:11:::1;:20:::0;;;;:28;;-1:-1:-1;;23553:28:0::1;::::0;;23600:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;23600:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;23600:15:0;;;;;-1:-1:-1;;;;;;23600:15:0::1;::::0;;;;;23339:327:::1;23194:479:::0;:::o;23401:254::-:1;23381:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23339:327;;;;23194:479:::0;:::o;21099:218::-;189:10;21187:4;21236:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21236:34:0;;;;;;;;;;21187:4;;21204:83;;21227:7;;21236:50;;21275:10;21236:38;:50::i;21829:377::-;189:10;21881:14;21930:19;;;:11;:19;;;;;;;;21929:20;21921:77;;;;-1:-1:-1;;;21921:77:0;;23803:2:1;21921:77:0;;;23785:21:1;23842:2;23822:18;;;23815:30;23881:34;23861:18;;;23854:62;-1:-1:-1;;;23932:18:1;;;23925:42;23984:19;;21921:77:0;23775:234:1;21921:77:0;22010:15;22034:19;22045:7;22034:10;:19::i;:::-;-1:-1:-1;;;;;;;;;22082:15:0;;;;;;:7;:15;;;;;;22009:44;;-1:-1:-1;22082:28:0;;:15;-1:-1:-1;22009:44:0;22082:19;:28::i;:::-;-1:-1:-1;;;;;22064:15:0;;;;;;:7;:15;;;;;:46;22131:7;;:20;;22143:7;22131:11;:20::i;:::-;22121:7;:30;22175:10;;:23;;22190:7;22175:14;:23::i;:::-;22162:10;:36;-1:-1:-1;;;21829:377:0:o;43784:207::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;43913:10:::1;43895:14;43899:10:::0;43895:2:::1;:14;:::i;:::-;43887:22;::::0;:5;:22:::1;:::i;:::-;:36;;43879:45;;;::::0;::::1;;43969:14;43973:10:::0;43969:2:::1;:14;:::i;:::-;43961:22;::::0;:5;:22:::1;:::i;:::-;43935:23;:48:::0;-1:-1:-1;;43784:207:0:o;22218:436::-;22308:7;22347;;22336;:18;;22328:62;;;;-1:-1:-1;;;22328:62:0;;19061:2:1;22328:62:0;;;19043:21:1;19100:2;19080:18;;;19073:30;19139:33;19119:18;;;19112:61;19190:18;;22328:62:0;19033:181:1;22328:62:0;22406:17;22401:246;;22441:15;22465:19;22476:7;22465:10;:19::i;:::-;-1:-1:-1;22440:44:0;;-1:-1:-1;22499:14:0;;-1:-1:-1;;;;;22499:14:0;22401:246;22548:23;22579:19;22590:7;22579:10;:19::i;:::-;-1:-1:-1;22546:52:0;;-1:-1:-1;22613:22:0;;-1:-1:-1;;;;;22613:22:0;43483:293;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;43628:10:::1;43610:14;43614:10:::0;43610:2:::1;:14;:::i;:::-;43602:22;::::0;:5;:22:::1;:::i;:::-;:36;;43594:45;;;::::0;::::1;;43666:8;43658:4;:16;;43650:25;;;::::0;::::1;;43720:14;43724:10:::0;43720:2:::1;:14;:::i;:::-;43712:22;::::0;:5;:22:::1;:::i;:::-;43686:23;:48:::0;43745:16:::1;:23:::0;-1:-1:-1;;43483:293:0:o;37064:215::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;37170:9:::1;37165:107;37181:20:::0;;::::1;37165:107;;;37254:6;37223:14;:28;37238:9;;37248:1;37238:12;;;;;-1:-1:-1::0;;;37238:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;37223:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;37223:28:0;:37;;-1:-1:-1;;37223:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37203:3:::1;::::0;::::1;:::i;:::-;;;37165:107;;19016:102:::0;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;19088:14:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;19088:22:0::1;-1:-1:-1::0;;;;19088:22:0;;::::1;::::0;;;::::1;::::0;;19016:102::o;36816:105::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;36886:15:::1;:27:::0;;-1:-1:-1;;36886:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36816:105::o;39379:129::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39467:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;39467:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;39379:129::o;22923:263::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23002:16:0;::::1;23021:1;23002:16:::0;;;:7:::1;:16;::::0;;;;;:20;22999:108:::1;;-1:-1:-1::0;;;;;23078:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;23058:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;23039:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;22999:108:::1;-1:-1:-1::0;;;;;23117:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;23117:27:0::1;23140:4;23117:27:::0;;::::1;::::0;;;23155:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;23155:23:0::1;::::0;;::::1;::::0;;22923:263::o;42663:448::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;42800:17:::1;:33:::0;;;42844:17:::1;:33:::0;;;42888:11:::1;:21:::0;;;42920:18:::1;:34:::0;;;43058:2:::1;42976:81;42940:14:::0;42976:57:::1;42902:7:::0;42976:57;42820:13;42864;42976:21:::1;:40::i;:::-;:44:::0;::::1;:57::i;:81::-;:84;42968:135;;;::::0;-1:-1:-1;;;42968:135:0;;21821:2:1;42968:135:0::1;::::0;::::1;21803:21:1::0;21860:2;21840:18;;;21833:30;21899:34;21879:18;;;21872:62;-1:-1:-1;;;21950:18:1;;;21943:36;21996:19;;42968:135:0::1;21793:228:1::0;20077:198:0;-1:-1:-1;;;;;20167:20:0;;20143:7;20167:20;;;:11;:20;;;;;;;;20163:49;;;-1:-1:-1;;;;;;20196:16:0;;;;;:7;:16;;;;;;;20077:198::o;20163:49::-;-1:-1:-1;;;;;20250:16:0;;;;;;:7;:16;;;;;;20230:37;;:19;:37::i;6030:148::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;6137:1:::1;6121:6:::0;;6100:40:::1;::::0;-1:-1:-1;;;;;6121:6:0;;::::1;::::0;6100:40:::1;::::0;6137:1;;6100:40:::1;6168:1;6151:19:::0;;-1:-1:-1;;;;;;6151:19:0::1;::::0;;6030:148::o;38702:198::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;38789:9:::1;38784:109;38800:20:::0;;::::1;38784:109;;;38877:4;38842:18;:32;38861:9;;38871:1;38861:12;;;;;-1:-1:-1::0;;;38861:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;38842:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;38842:32:0;:39;;-1:-1:-1;;38842:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;38822:3:::1;::::0;::::1;:::i;:::-;;;38784:109;;39726:135:::0;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;39811:42:::1;::::0;-1:-1:-1;;;;;39811:19:0;::::1;::::0;39831:21:::1;39811:42:::0;::::1;;;::::0;::::1;::::0;;;39831:21;39811:19;:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;39522:188:::0;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;39609:9:::1;39604:99;39620:20:::0;;::::1;39604:99;;;39687:4;39662:10;:24;39673:9;;39683:1;39673:12;;;;;-1:-1:-1::0;;;39673:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;39662:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;39662:24:0;:29;;-1:-1:-1;;39662:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;39642:3:::1;::::0;::::1;:::i;:::-;;;39604:99;;40815:706:::0;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;40972:3:::1;40953:22:::0;::::1;40945:79;;;::::0;-1:-1:-1;;;40945:79:0;;22228:2:1;40945:79:0::1;::::0;::::1;22210:21:1::0;22267:2;22247:18;;;22240:30;22306:34;22286:18;;;22279:62;-1:-1:-1;;;22357:18:1;;;22350:43;22410:19;;40945:79:0::1;22200:235:1::0;40945:79:0::1;41066:33:::0;;::::1;41058:85;;;::::0;-1:-1:-1;;;41058:85:0;;14798:2:1;41058:85:0::1;::::0;::::1;14780:21:1::0;14837:2;14817:18;;;14810:30;14876:34;14856:18;;;14849:62;-1:-1:-1;;;14927:18:1;;;14920:38;14975:19;;41058:85:0::1;14770:230:1::0;41058:85:0::1;41156:12;41189:6:::0;41185:108:::1;41199:20:::0;;::::1;41185:108;;;41271:9;::::0;41267:13:::1;::::0;-1:-1:-1;;;41271:9:0;::::1;;;41267:2;:13;:::i;:::-;41255:6;;41262:1;41255:9;;;;;-1:-1:-1::0;;;41255:9:0::1;;;;;;;;;;;;;;;:25;;;;:::i;:::-;41247:34;::::0;:4;:34:::1;:::i;:::-;41240:41:::0;-1:-1:-1;41221:3:0;::::1;::::0;::::1;:::i;:::-;;;;41185:108;;;;41332:4;41313:15;41323:4;41313:9;:15::i;:::-;:23;;41305:63;;;::::0;-1:-1:-1;;;41305:63:0;;18705:2:1;41305:63:0::1;::::0;::::1;18687:21:1::0;18744:2;18724:18;;;18717:30;18783:29;18763:18;;;18756:57;18830:18;;41305:63:0::1;18677:177:1::0;41305:63:0::1;41385:6;41381:133;41395:20:::0;;::::1;41381:133;;;41436:56;41446:4;41451:9;;41461:1;41451:12;;;;;-1:-1:-1::0;;;41451:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41481:9;::::0;41477:13:::1;::::0;-1:-1:-1;;;41481:9:0;::::1;;;41477:2;:13;:::i;:::-;41465:6;;41472:1;41465:9;;;;;-1:-1:-1::0;;;41465:9:0::1;;;;;;;;;;;;;;;:25;;;;:::i;41436:56::-;41417:3:::0;::::1;::::0;::::1;:::i;:::-;;;;41381:133;;;;6009:1;40815:706:::0;;;;;:::o;40623:178::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;40777:16:::1;40757;40747:7;;:26;;;;:::i;:::-;40746:47;;;;:::i;:::-;40730:13;:63:::0;-1:-1:-1;;40623:178:0:o;19788:87::-;19827:13;19860:7;19853:14;;;;;:::i;42060:595::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;42206:16:::1;:32:::0;;;42249:16:::1;:32:::0;;;42292:10:::1;:20:::0;;;42323:17:::1;:33:::0;;;42369:13:::1;:29:::0;;;42409:12:::1;:28:::0;;;42448:6:::1;:16:::0;;;42475:12:::1;:28:::0;;;42527:42:::1;42305:7:::0;42527:30:::1;42225:13:::0;42268;42527:16:::1;:30::i;:42::-;42516:8;:53:::0;;;42599:2:::1;-1:-1:-1::0;42582:63:0::1;;;::::0;-1:-1:-1;;;42582:63:0;;17585:2:1;42582:63:0::1;::::0;::::1;17567:21:1::0;17624:2;17604:18;;;17597:30;17663:34;17643:18;;;17636:62;-1:-1:-1;;;17714:18:1;;;17707:37;17761:19;;42582:63:0::1;17557:229:1::0;21325:269:0;21418:4;21435:129;189:10;21458:7;21467:96;21506:15;21467:96;;;;;;;;;;;;;;;;;189:10;21467:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21467:34:0;;;;;;;;;;;;:38;:96::i;43119:123::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;43200:24:::1;:34:::0;;-1:-1:-1;;43200:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;43119:123::o;20283:167::-;20361:4;20378:42;189:10;20402:9;20413:6;20378:9;:42::i;39040:191::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;39138:15:::1;:43:::0;;-1:-1:-1;;;;;39138:43:0;;::::1;-1:-1:-1::0;;;;;;39138:43:0;;::::1;;::::0;;;39192:9:::1;:31:::0;;;;;::::1;::::0;::::1;;::::0;;39040:191::o;38918:110::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38985:27:0::1;39015:5;38985:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;38985:35:0::1;::::0;;38918:110::o;19126:563::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;19199:29:::1;19250:9;19199:61;;19271:16;19308:10;-1:-1:-1::0;;;;;19308:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19290:47:0::1;;19346:4;19353:10;-1:-1:-1::0;;;;;19353:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19290:81;::::0;-1:-1:-1;;;;;;19290:81:0::1;::::0;;;;;;-1:-1:-1;;;;;11841:15:1;;;19290:81:0::1;::::0;::::1;11823:34:1::0;11893:15;;11873:18;;;11866:43;11758:18;;19290:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19271:100:::0;-1:-1:-1;;;;;;19386:22:0;::::1;19382:221;;19459:10;-1:-1:-1::0;;;;;19459:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19441:50:0::1;;19500:4;19507:10;-1:-1:-1::0;;;;;19507:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19441:84;::::0;-1:-1:-1;;;;;;19441:84:0::1;::::0;;;;;;-1:-1:-1;;;;;11841:15:1;;;19441:84:0::1;::::0;::::1;11823:34:1::0;11893:15;;11873:18;;;11866:43;11758:18;;19441:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19425:13;:100:::0;;-1:-1:-1;;;;;;19425:100:0::1;-1:-1:-1::0;;;;;19425:100:0;;;::::1;::::0;;;::::1;::::0;;19382:221:::1;;;19567:13;:24:::0;;-1:-1:-1;;;;;;19567:24:0::1;-1:-1:-1::0;;;;;19567:24:0;::::1;;::::0;;19382:221:::1;-1:-1:-1::0;19621:13:0::1;::::0;-1:-1:-1;;;;;19621:13:0;;::::1;19613:22;::::0;;;:7:::1;:22:::0;;;;;:29;;-1:-1:-1;;19613:29:0::1;19638:4;19613:29;::::0;;19653:15:::1;:28:::0;;;;;::::1;-1:-1:-1::0;;;;;;19653:28:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;19126:563:0:o;38582:112::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38652:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;38652:34:0::1;38682:4;38652:34;::::0;;38582:112::o;6186:244::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6275:22:0;::::1;6267:73;;;::::0;-1:-1:-1;;;6267:73:0;;16775:2:1;6267:73:0::1;::::0;::::1;16757:21:1::0;16814:2;16794:18;;;16787:30;16853:34;16833:18;;;16826:62;-1:-1:-1;;;16904:18:1;;;16897:36;16950:19;;6267:73:0::1;16747:228:1::0;6267:73:0::1;6377:6;::::0;;6356:38:::1;::::0;-1:-1:-1;;;;;6356:38:0;;::::1;::::0;6377:6;::::1;::::0;6356:38:::1;::::0;::::1;6405:6;:17:::0;;-1:-1:-1;;;;;;6405:17:0::1;-1:-1:-1::0;;;;;6405:17:0;;;::::1;::::0;;;::::1;::::0;;6186:244::o;1964:132::-;2022:7;2049:39;2053:1;2056;2049:39;;;;;;;;;;;;;;;;;:3;:39::i;1704:250::-;1762:7;1786:6;1782:47;;-1:-1:-1;1816:1:0;1809:8;;1782:47;1841:9;1853:5;1857:1;1853;:5;:::i;:::-;1841:17;-1:-1:-1;1886:1:0;1877:5;1881:1;1841:17;1877:5;:::i;:::-;:10;1869:56;;;;-1:-1:-1;;;1869:56:0;;20242:2:1;1869:56:0;;;20224:21:1;20281:2;20261:18;;;20254:30;20320:34;20300:18;;;20293:62;-1:-1:-1;;;20371:18:1;;;20364:31;20412:19;;1869:56:0;20214:223:1;1171:181:0;1229:7;;1261:5;1265:1;1261;:5;:::i;:::-;1249:17;;1290:1;1285;:6;;1277:46;;;;-1:-1:-1;;;1277:46:0;;17993:2:1;1277:46:0;;;17975:21:1;18032:2;18012:18;;;18005:30;18071:29;18051:18;;;18044:57;18118:18;;1277:46:0;17965:177:1;1360:136:0;1418:7;1445:43;1449:1;1452;1445:43;;;;;;;;;;;;;;;;;:3;:43::i;23681:337::-;-1:-1:-1;;;;;23774:19:0;;23766:68;;;;-1:-1:-1;;;23766:68:0;;23045:2:1;23766:68:0;;;23027:21:1;23084:2;23064:18;;;23057:30;23123:34;23103:18;;;23096:62;-1:-1:-1;;;23174:18:1;;;23167:34;23218:19;;23766:68:0;23017:226:1;23766:68:0;-1:-1:-1;;;;;23853:21:0;;23845:68;;;;-1:-1:-1;;;23845:68:0;;17182:2:1;23845:68:0;;;17164:21:1;17221:2;17201:18;;;17194:30;17260:34;17240:18;;;17233:62;-1:-1:-1;;;17311:18:1;;;17304:32;17353:19;;23845:68:0;17154:224:1;23845:68:0;-1:-1:-1;;;;;23926:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23978:32;;24160:25:1;;;23978:32:0;;24133:18:1;23978:32:0;;;;;;;23681:337;;;:::o;24026:3718::-;-1:-1:-1;;;;;24148:18:0;;24140:68;;;;-1:-1:-1;;;24140:68:0;;21415:2:1;24140:68:0;;;21397:21:1;21454:2;21434:18;;;21427:30;21493:34;21473:18;;;21466:62;-1:-1:-1;;;21544:18:1;;;21537:35;21589:19;;24140:68:0;21387:227:1;24140:68:0;-1:-1:-1;;;;;24227:16:0;;24219:64;;;;-1:-1:-1;;;24219:64:0;;14048:2:1;24219:64:0;;;14030:21:1;14087:2;14067:18;;;14060:30;14126:34;14106:18;;;14099:62;-1:-1:-1;;;14177:18:1;;;14170:33;14220:19;;24219:64:0;14020:225:1;24219:64:0;24311:1;24302:6;:10;24294:64;;;;-1:-1:-1;;;24294:64:0;;21005:2:1;24294:64:0;;;20987:21:1;21044:2;21024:18;;;21017:30;21083:34;21063:18;;;21056:62;-1:-1:-1;;;21134:18:1;;;21127:39;21183:19;;24294:64:0;20977:231:1;24294:64:0;5843:7;5870:6;-1:-1:-1;;;;;24373:14:0;;;5870:6;;24373:14;;;;:30;;-1:-1:-1;5843:7:0;5870:6;-1:-1:-1;;;;;24391:12:0;;;5870:6;;24391:12;;24373:30;24369:84;;;24413:11;;-1:-1:-1;;;24413:11:0;;;;24405:48;;;;-1:-1:-1;;;24405:48:0;;23450:2:1;24405:48:0;;;23432:21:1;23489:2;23469:18;;;23462:30;23528:26;23508:18;;;23501:54;23572:18;;24405:48:0;23422:174:1;24405:48:0;24592:13;;24515:12;;-1:-1:-1;;;;;24586:19:0;;;24592:13;;24586:19;;:40;;-1:-1:-1;24613:13:0;;-1:-1:-1;;;;;24609:17:0;;;24613:13;;24609:17;24586:40;24585:99;;;;-1:-1:-1;;;;;;24633:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;24661:22:0;;;;;;:18;:22;;;;;;;;24633:50;24631:53;24585:99;24580:148;;;-1:-1:-1;24712:4:0;24580:148;24754:1;24743:10;;:12;:59;;;;-1:-1:-1;;;;;;24761:22:0;;;;;;:18;:22;;;;;;;;24760:23;:41;;;;-1:-1:-1;5843:7:0;5870:6;-1:-1:-1;;;;;24787:14:0;;;5870:6;;24787:14;;24760:41;24743:97;;;;;24827:12;24809:10;;24822:1;24809:14;;;;:::i;:::-;24808:31;24806:34;24743:97;24740:238;;;24891:15;;24876:13;24886:2;24876:9;:13::i;:::-;24868:21;;:6;:21;:::i;:::-;:38;;24860:106;;;;-1:-1:-1;;;24860:106:0;;22642:2:1;24860:106:0;;;22624:21:1;22681:2;22661:18;;;22654:30;22720:34;22700:18;;;22693:62;-1:-1:-1;;;22771:18:1;;;22764:32;22813:19;;24860:106:0;22614:224:1;24860:106:0;25009:8;;24990:18;:27;25042:17;;25028:13;:31;-1:-1:-1;;;;;25083:20:0;;-1:-1:-1;25083:20:0;;;:14;:20;;;;;;;;25080:113;;;-1:-1:-1;;;;;25127:16:0;;;;:30;;-1:-1:-1;25153:4:0;;-1:-1:-1;;;;;25147:10:0;;;25153:4;;25147:10;25127:30;25119:62;;;;-1:-1:-1;;;25119:62:0;;15207:2:1;25119:62:0;;;15189:21:1;15246:2;15226:18;;;15219:30;-1:-1:-1;;;15265:18:1;;;15258:48;15323:18;;25119:62:0;15179:168:1;25119:62:0;25208:24;;;;25205:1079;;;-1:-1:-1;;;;;25256:24:0;;;;;;:18;:24;;;;;;;;25253:109;;;-1:-1:-1;;;;;25313:11:0;;;;;;:7;:11;;;;;;;;;:28;;-1:-1:-1;;;;;;25328:13:0;;;;;;:7;:13;;;;;;;;25313:28;25305:37;;;;;;25404:16;;;25418:1;25404:16;;;;;;;;25380:21;;25404:16;;;;;;;;;;-1:-1:-1;25404:16:0;25380:40;;25457:4;25439;25444:1;25439:7;;;;;;-1:-1:-1;;;25439:7:0;;;;;;;;;-1:-1:-1;;;;;25439:23:0;;;:7;;;;;;;;;;:23;;;;25491:15;;:22;;;-1:-1:-1;;;25491:22:0;;;;:15;;;;;:20;;:22;;;;;25439:7;;25491:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25481:4;25486:1;25481:7;;;;;;-1:-1:-1;;;25481:7:0;;;;;;;;;-1:-1:-1;;;;;25481:32:0;;;:7;;;;;;;;;;:32;;;;25537:11;;;;;;;;;;;;;;;;:39;;;;-1:-1:-1;;;;;;25552:24:0;;;;;;:18;:24;;;;;;;;25537:39;:50;;;;-1:-1:-1;25581:6:0;;-1:-1:-1;;;25581:6:0;;;;25580:7;25537:50;25534:739;;;25633:15;;:43;;-1:-1:-1;;;25633:43:0;;25612:18;;-1:-1:-1;;;;;25633:15:0;;:29;;:43;;25663:6;;25671:4;;25633:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25633:43:0;;;;;;;;;;;;:::i;:::-;25677:1;25633:46;;;;;;-1:-1:-1;;;25633:46:0;;;;;;;;;;;;;;;25612:67;;25752:15;25733:16;;25705:19;:25;25725:4;-1:-1:-1;;;;;25705:25:0;-1:-1:-1;;;;;25705:25:0;;;;;;;;;;;;;:44;;;;:::i;:::-;:62;25702:552;;;25818:23;;25804:10;:37;;25796:46;;;;;;-1:-1:-1;;;;;25869:25:0;;;;;;:19;:25;;;;;;;;25897:15;25869:43;;25939:15;:21;;;;;:34;;;25702:552;;;26035:16;;-1:-1:-1;;;;;26007:25:0;;;;;;:19;:25;;;;;;26054:15;;26007:44;;;:::i;:::-;:62;26003:251;;;26144:23;;-1:-1:-1;;;;;26106:21:0;;;;;;:15;:21;;;;;;:34;;26130:10;;26106:34;:::i;:::-;:61;;26098:70;;;;;;-1:-1:-1;;;;;26195:21:0;;;;;;:15;:21;;;;;:35;;26220:10;;26195:21;:35;;26220:10;;26195:35;:::i;:::-;;;;-1:-1:-1;;26003:251:0;25534:739;;25205:1079;;26299:15;;;;:38;;;;-1:-1:-1;26324:13:0;;-1:-1:-1;;;;;26318:19:0;;;26324:13;;26318:19;26299:38;:65;;;;-1:-1:-1;;;;;;26342:22:0;;;;;;:16;:22;;;;;;;;26341:23;26299:65;26296:260;;;-1:-1:-1;;;;;26388:19:0;;;;;;:13;:19;;;;;;26410:15;-1:-1:-1;26380:88:0;;;;-1:-1:-1;;;26380:88:0;;15957:2:1;26380:88:0;;;15939:21:1;15996:2;15976:18;;;15969:30;16035:34;16015:18;;;16008:62;-1:-1:-1;;;16086:18:1;;;16079:36;16132:19;;26380:88:0;15929:228:1;26380:88:0;26523:21;;26505:39;;:15;:39;:::i;:::-;-1:-1:-1;;;;;26483:19:0;;;;;;:13;:19;;;;;:61;26296:260;26571:11;;-1:-1:-1;;;26571:11:0;;;;:34;;;;-1:-1:-1;26592:13:0;;-1:-1:-1;;;;;26586:19:0;;;26592:13;;26586:19;26571:34;26568:279;;;26645:13;;26637:6;:21;;26629:67;;;;-1:-1:-1;;;26629:67:0;;15554:2:1;26629:67:0;;;15536:21:1;15593:2;15573:18;;;15566:30;15632:34;15612:18;;;15605:62;-1:-1:-1;;;15683:18:1;;;15676:32;15725:19;;26629:67:0;15526:224:1;26629:67:0;26731:57;26776:11;;26731:40;26753:17;;26731;;:21;;:40;;;;:::i;:57::-;26711:18;:77;26817:18;;26803:13;:32;26568:279;26917:1;26906:10;;:12;:47;;;;;26941:12;26923:10;;26936:1;26923:14;;;;:::i;:::-;26922:31;26906:47;26903:113;;;26992:2;26973:18;:21;26903:113;27040:1;27029:10;;:12;:47;;;;;27064:12;27046:10;;27059:1;27046:14;;;;:::i;:::-;27045:31;27029:47;27026:112;;;27115:2;27096:18;:21;27026:112;27160:14;;-1:-1:-1;;;27160:14:0;;;;27157:153;;;27194:11;;-1:-1:-1;;;27194:11:0;;;;:36;;;;-1:-1:-1;27217:13:0;;-1:-1:-1;;;;;27209:21:0;;;27217:13;;27209:21;27194:36;27191:108;;;27281:1;27262:18;:20;27191:108;27343:6;;-1:-1:-1;;;27343:6:0;;;;27342:7;:22;;;;-1:-1:-1;27353:11:0;;-1:-1:-1;;;27353:11:0;;;;27342:22;:45;;;;-1:-1:-1;27374:13:0;;-1:-1:-1;;;;;27368:19:0;;;27374:13;;27368:19;27342:45;27338:350;;;27412:28;27443:24;27461:4;27443:9;:24::i;:::-;27412:55;;27521:13;;27499:20;:35;27496:169;;-1:-1:-1;27581:13:0;;27617:32;27581:13;27617:10;:32::i;:::-;27338:350;;27698:38;27713:4;27718:2;27721:6;27728:7;27698:14;:38::i;1504:192::-;1590:7;1626:12;1618:6;;;;1610:29;;;;-1:-1:-1;;;1610:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1650:9:0;1662:5;1666:1;1662;:5;:::i;:::-;1650:17;1504:192;-1:-1:-1;;;;;1504:192:0:o;36315:163::-;36356:7;36377:15;36394;36413:19;:17;:19::i;:::-;36376:56;;-1:-1:-1;36376:56:0;-1:-1:-1;36450:20:0;36376:56;;36450:11;:20::i;:::-;36443:27;;;;36315:163;:::o;35113:419::-;35172:7;35181;35190;35199;35208;35217;35238:23;35263:12;35277:18;35299:20;35311:7;35299:11;:20::i;:::-;35237:82;;;;;;35331:15;35348:23;35373:12;35389:50;35401:7;35410:4;35416:10;35428;:8;:10::i;:::-;35389:11;:50::i;:::-;35330:109;;;;-1:-1:-1;35330:109:0;;-1:-1:-1;35490:15:0;;-1:-1:-1;35507:4:0;;-1:-1:-1;35513:10:0;;-1:-1:-1;35113:419:0;;-1:-1:-1;;;;;35113:419:0:o;2104:278::-;2190:7;2225:12;2218:5;2210:28;;;;-1:-1:-1;;;2210:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2249:9:0;2261:5;2265:1;2261;:5;:::i;27752:1210::-;17610:6;:13;;-1:-1:-1;;;;17610:13:0;-1:-1:-1;;;17610:13:0;;;27950:8:::1;::::0;27918:12:::1;::::0;17610:13;;27879:101:::1;::::0;27978:1:::1;::::0;27879:80:::1;::::0;;;:20;;:38:::1;:52::i;:::-;:70:::0;::::1;:80::i;:101::-;27853:127:::0;-1:-1:-1;27993:20:0::1;28016:41;:20:::0;27853:127;28016:24:::1;:41::i;:::-;27993:64;;28078:30;28095:12;28078:16;:30::i;:::-;28210:12;::::0;28141:21:::1;::::0;28121:17:::1;::::0;28197:33:::1;::::0;28210:19:::1;::::0;28227:1:::1;28210:16;:19::i;:::-;28197:8;::::0;;:12:::1;:33::i;:::-;28175:55;;28243:26;28272:93;28363:1;28272:72;28332:11;28272:41;28300:12;;28272:9;:27;;:41;;;;:::i;:93::-;28243:122;;28386:20;28409:38;28435:11;28409:21;28423:6;;28409:9;:13;;:21;;;;:::i;:38::-;28386:61;;28458:26;28487:68;28533:11;28487:27;28501:12;;28487:9;:13;;:27;;;;:::i;:68::-;28458:97:::0;-1:-1:-1;28656:21:0::1;28691:22:::0;;28688:153:::1;;28762:15;::::0;28730:48:::1;::::0;28743:18;;-1:-1:-1;;;;;28762:15:0::1;28730:12;:48::i;:::-;28819:9;::::0;28793:36:::1;::::0;28806:12;;-1:-1:-1;;;;;28819:9:0::1;28793:12;:36::i;:::-;28855:19:::0;;28851:104:::1;;28895:48;28908:15;28924:18;28895:12;:48::i;:::-;-1:-1:-1::0;;17646:6:0;:14;;-1:-1:-1;;;;17646:14:0;;;-1:-1:-1;;;;;;;27752:1210:0:o;31670:952::-;31810:13;;31860:18;;31893:7;31889:91;;31932:1;31916:13;:17;;;31948:18;:20;31889:91;-1:-1:-1;;;;;32004:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;32028:22:0;;;;;;:11;:22;;;;;;;;32027:23;32004:46;32000:467;;;32067:48;32089:6;32097:9;32108:6;32067:21;:48::i;:::-;32000:467;;;-1:-1:-1;;;;;32138:19:0;;;;;;:11;:19;;;;;;;;32137:20;:46;;;;-1:-1:-1;;;;;;32161:22:0;;;;;;:11;:22;;;;;;;;32137:46;32133:334;;;32200:46;32220:6;32228:9;32239:6;32200:19;:46::i;32133:334::-;-1:-1:-1;;;;;32268:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;32291:22:0;;;;;;:11;:22;;;;;;;;32268:45;32264:203;;;32330:48;32352:6;32360:9;32371:6;32330:21;:48::i;32264:203::-;32411:44;32429:6;32437:9;32448:6;32411:17;:44::i;:::-;32491:7;32487:128;;32514:13;:38;;;;32567:18;:36;-1:-1:-1;;;;31670:952:0:o;37287:561::-;37384:7;;37420;;37337;;;;;37444:289;37468:9;:16;37464:20;;37444:289;;;37534:7;37510;:21;37518:9;37528:1;37518:12;;;;;;-1:-1:-1;;;37518:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37518:12:0;37510:21;;;;;;;;;;;;;:31;;:66;;;37569:7;37545;:21;37553:9;37563:1;37553:12;;;;;;-1:-1:-1;;;37553:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37553:12:0;37545:21;;;;;;;;;;;;;:31;37510:66;37506:97;;;37586:7;;37595;;37578:25;;;;;;;37287:561;;:::o;37506:97::-;37628:34;37640:7;:21;37648:9;37658:1;37648:12;;;;;;-1:-1:-1;;;37648:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37648:12:0;37640:21;;;;;;;;;;;;;37628:7;;:11;:34::i;:::-;37618:44;;37687:34;37699:7;:21;37707:9;37717:1;37707:12;;;;;;-1:-1:-1;;;37707:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37707:12:0;37699:21;;;;;;;;;;;;;37687:7;;:11;:34::i;:::-;37677:44;-1:-1:-1;37486:3:0;;;;:::i;:::-;;;;37444:289;;;-1:-1:-1;37769:7:0;;37757;;:20;;:11;:20::i;:::-;37747:7;:30;37743:61;;;37787:7;;37796;;37779:25;;;;;;37287:561;;:::o;37743:61::-;37823:7;;37832;;-1:-1:-1;37287:561:0;-1:-1:-1;37287:561:0:o;35540:330::-;35600:7;35609;35618;35638:12;35653:24;35669:7;35653:15;:24::i;:::-;35638:39;;35688:18;35709:30;35731:7;35709:21;:30::i;:::-;35688:51;-1:-1:-1;35750:23:0;35776:33;35688:51;35776:17;:7;35788:4;35776:11;:17::i;:::-;:21;;:33::i;:::-;35750:59;35845:4;;-1:-1:-1;35851:10:0;;-1:-1:-1;35540:330:0;;-1:-1:-1;;;35540:330:0:o;35878:429::-;35993:7;;;;36049:24;:7;36061:11;36049;:24::i;:::-;36031:42;-1:-1:-1;36084:12:0;36099:21;:4;36108:11;36099:8;:21::i;:::-;36084:36;-1:-1:-1;36131:18:0;36152:27;:10;36167:11;36152:14;:27::i;:::-;36131:48;-1:-1:-1;36190:23:0;36216:33;36131:48;36216:17;:7;36228:4;36216:11;:17::i;:33::-;36268:7;;;;-1:-1:-1;36294:4:0;;-1:-1:-1;35878:429:0;;-1:-1:-1;;;;;;;35878:429:0:o;30471:666::-;30621:16;;;30635:1;30621:16;;;;;;;;30597:21;;30621:16;;;;;;;;;;-1:-1:-1;30621:16:0;30597:40;;30666:4;30648;30653:1;30648:7;;;;;;-1:-1:-1;;;30648:7:0;;;;;;;;;-1:-1:-1;;;;;30648:23:0;;;:7;;;;;;;;;;:23;;;;30692:15;;:22;;;-1:-1:-1;;;30692:22:0;;;;:15;;;;;:20;;:22;;;;;30648:7;;30692:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30682:4;30687:1;30682:7;;;;;;-1:-1:-1;;;30682:7:0;;;;;;;;;-1:-1:-1;;;;;30682:32:0;;;:7;;;;;;;;;:32;30759:15;;30727:62;;30744:4;;30759:15;30777:11;30727:8;:62::i;:::-;30828:15;;:240;;-1:-1:-1;;;30828:240:0;;-1:-1:-1;;;;;30828:15:0;;;;:66;;:240;;30909:11;;30828:15;;30979:4;;31006;;31042:15;;30828:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31094:35;31111:11;31124:4;31094:35;;;;;;;:::i;:::-;;;;;;;;30471:666;;:::o;28974:111::-;29054:23;;-1:-1:-1;;;;;29054:15:0;;;:23;;;;;29070:6;;29054:23;;;;29070:6;29054:15;:23;;;;;;;;;;;;;;;;;;;31151:511;31331:15;;31299:62;;31316:4;;-1:-1:-1;;;;;31331:15:0;31349:11;31299:8;:62::i;:::-;31402:15;;-1:-1:-1;;;;;31402:15:0;:31;31441:9;31474:4;31494:11;31402:15;;31606:7;5843;5870:6;-1:-1:-1;;;;;5870:6:0;;5805:79;31606:7;31402:252;;;;;;-1:-1:-1;;;;;;31402:252:0;;;-1:-1:-1;;;;;12558:15:1;;;31402:252:0;;;12540:34:1;12590:18;;;12583:34;;;;12633:18;;;12626:34;;;;12676:18;;;12669:34;12740:15;;;12719:19;;;12712:44;31628:15:0;12772:19:1;;;12765:35;12474:19;;31402:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31151:511;;:::o;33734:566::-;33837:15;33854:23;33879:12;33893:23;33918:12;33932:18;33954:19;33965:7;33954:10;:19::i;:::-;-1:-1:-1;;;;;34002:15:0;;;;;;:7;:15;;;;;;33836:137;;-1:-1:-1;33836:137:0;;-1:-1:-1;33836:137:0;;-1:-1:-1;33836:137:0;-1:-1:-1;33836:137:0;-1:-1:-1;33836:137:0;-1:-1:-1;34002:28:0;;34022:7;34002:19;:28::i;:::-;-1:-1:-1;;;;;33984:15:0;;;;;;:7;:15;;;;;;;;:46;;;;34059:7;:15;;;;:28;;34079:7;34059:19;:28::i;:::-;-1:-1:-1;;;;;34041:15:0;;;;;;;:7;:15;;;;;;:46;;;;34119:18;;;;;;;:39;;34142:15;34119:22;:39::i;:::-;-1:-1:-1;;;;;34098:18:0;;;;;;:7;:18;;;;;:60;34172:26;34187:10;34172:14;:26::i;:::-;34209:23;34221:4;34227;34209:11;:23::i;:::-;34265:9;-1:-1:-1;;;;;34248:44:0;34257:6;-1:-1:-1;;;;;34248:44:0;;34276:15;34248:44;;;;24160:25:1;;24148:2;24133:18;;24115:76;34248:44:0;;;;;;;;33734:566;;;;;;;;;:::o;33140:586::-;33241:15;33258:23;33283:12;33297:23;33322:12;33336:18;33358:19;33369:7;33358:10;:19::i;:::-;-1:-1:-1;;;;;33406:15:0;;;;;;:7;:15;;;;;;33240:137;;-1:-1:-1;33240:137:0;;-1:-1:-1;33240:137:0;;-1:-1:-1;33240:137:0;-1:-1:-1;33240:137:0;-1:-1:-1;33240:137:0;-1:-1:-1;33406:28:0;;33240:137;33406:19;:28::i;:::-;-1:-1:-1;;;;;33388:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;33466:18;;;;;:7;:18;;;;;:39;;33489:15;33466:22;:39::i;:::-;-1:-1:-1;;;;;33445:18:0;;;;;;:7;:18;;;;;;;;:60;;;;33537:7;:18;;;;:39;;33560:15;33537:22;:39::i;34308:642::-;34411:15;34428:23;34453:12;34467:23;34492:12;34506:18;34528:19;34539:7;34528:10;:19::i;:::-;-1:-1:-1;;;;;34576:15:0;;;;;;:7;:15;;;;;;34410:137;;-1:-1:-1;34410:137:0;;-1:-1:-1;34410:137:0;;-1:-1:-1;34410:137:0;-1:-1:-1;34410:137:0;-1:-1:-1;34410:137:0;-1:-1:-1;34576:28:0;;34596:7;34576:19;:28::i;:::-;-1:-1:-1;;;;;34558:15:0;;;;;;:7;:15;;;;;;;;:46;;;;34633:7;:15;;;;:28;;34653:7;34633:19;:28::i;32630:502::-;32729:15;32746:23;32771:12;32785:23;32810:12;32824:18;32846:19;32857:7;32846:10;:19::i;:::-;-1:-1:-1;;;;;32894:15:0;;;;;;:7;:15;;;;;;32728:137;;-1:-1:-1;32728:137:0;;-1:-1:-1;32728:137:0;;-1:-1:-1;32728:137:0;-1:-1:-1;32728:137:0;-1:-1:-1;32728:137:0;-1:-1:-1;32894:28:0;;32728:137;32894:19;:28::i;38227:160::-;38291:7;38318:61;38363:5;38318:26;38330:13;;38318:7;:11;;:26;;;;:::i;38399:171::-;38469:7;38496:66;38546:5;38496:31;38508:18;;38496:7;:11;;:31;;;;:::i;37860:355::-;37923:19;37946:10;:8;:10::i;:::-;37923:33;-1:-1:-1;37967:18:0;37988:27;:10;37923:33;37988:14;:27::i;:::-;38067:4;38051:22;;;;:7;:22;;;;;;37967:48;;-1:-1:-1;38051:38:0;;37967:48;38051:26;:38::i;:::-;38042:4;38026:22;;;;:7;:22;;;;;;;;:63;;;;38103:11;:26;;;;;;38100:107;;;38185:4;38169:22;;;;:7;:22;;;;;;:38;;38196:10;38169:26;:38::i;:::-;38160:4;38144:22;;;;:7;:22;;;;;:63;37860:355;;;:::o;34958:147::-;35036:7;;:17;;35048:4;35036:11;:17::i;:::-;35026:7;:27;35077:10;;:20;;35092:4;35077:14;:20::i;:::-;35064:10;:33;-1:-1:-1;;34958:147:0:o;14:395:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:2;;166:8;156;149:26;108:2;-1:-1:-1;196:20:1;;239:18;228:30;;225:2;;;278:8;268;261:26;225:2;322:4;314:6;310:17;298:29;;382:3;375:4;365:6;362:1;358:14;350:6;346:27;342:38;339:47;336:2;;;399:1;396;389:12;336:2;98:311;;;;;:::o;414:128::-;479:20;;508:28;479:20;508:28;:::i;:::-;460:82;;;:::o;547:257::-;606:6;659:2;647:9;638:7;634:23;630:32;627:2;;;680:6;672;665:22;627:2;724:9;711:23;743:31;768:5;743:31;:::i;809:261::-;879:6;932:2;920:9;911:7;907:23;903:32;900:2;;;953:6;945;938:22;900:2;990:9;984:16;1009:31;1034:5;1009:31;:::i;1345:398::-;1413:6;1421;1474:2;1462:9;1453:7;1449:23;1445:32;1442:2;;;1495:6;1487;1480:22;1442:2;1539:9;1526:23;1558:31;1583:5;1558:31;:::i;:::-;1608:5;-1:-1:-1;1665:2:1;1650:18;;1637:32;1678:33;1637:32;1678:33;:::i;:::-;1730:7;1720:17;;;1432:311;;;;;:::o;1748:466::-;1825:6;1833;1841;1894:2;1882:9;1873:7;1869:23;1865:32;1862:2;;;1915:6;1907;1900:22;1862:2;1959:9;1946:23;1978:31;2003:5;1978:31;:::i;:::-;2028:5;-1:-1:-1;2085:2:1;2070:18;;2057:32;2098:33;2057:32;2098:33;:::i;:::-;1852:362;;2150:7;;-1:-1:-1;;;2204:2:1;2189:18;;;;2176:32;;1852:362::o;2219:938::-;2350:6;2358;2366;2374;2382;2435:2;2423:9;2414:7;2410:23;2406:32;2403:2;;;2456:6;2448;2441:22;2403:2;2500:9;2487:23;2519:31;2544:5;2519:31;:::i;:::-;2569:5;-1:-1:-1;2625:2:1;2610:18;;2597:32;2648:18;2678:14;;;2675:2;;;2710:6;2702;2695:22;2675:2;2754:70;2816:7;2807:6;2796:9;2792:22;2754:70;:::i;:::-;2843:8;;-1:-1:-1;2728:96:1;-1:-1:-1;2931:2:1;2916:18;;2903:32;;-1:-1:-1;2947:16:1;;;2944:2;;;2981:6;2973;2966:22;2944:2;;3025:72;3089:7;3078:8;3067:9;3063:24;3025:72;:::i;:::-;2393:764;;;;-1:-1:-1;2393:764:1;;-1:-1:-1;3116:8:1;;2999:98;2393:764;-1:-1:-1;;;2393:764:1:o;3162:660::-;3266:6;3274;3282;3290;3343:2;3331:9;3322:7;3318:23;3314:32;3311:2;;;3364:6;3356;3349:22;3311:2;3408:9;3395:23;3427:31;3452:5;3427:31;:::i;:::-;3477:5;-1:-1:-1;3533:2:1;3518:18;;3505:32;3560:18;3549:30;;3546:2;;;3597:6;3589;3582:22;3546:2;3641:70;3703:7;3694:6;3683:9;3679:22;3641:70;:::i;:::-;3301:521;;3730:8;;-1:-1:-1;3615:96:1;;3812:2;3797:18;3784:32;;3301:521;-1:-1:-1;;;;3301:521:1:o;3827:392::-;3892:6;3900;3953:2;3941:9;3932:7;3928:23;3924:32;3921:2;;;3974:6;3966;3959:22;3921:2;4018:9;4005:23;4037:31;4062:5;4037:31;:::i;:::-;4087:5;-1:-1:-1;4144:2:1;4129:18;;4116:32;4157:30;4116:32;4157:30;:::i;4224:325::-;4292:6;4300;4353:2;4341:9;4332:7;4328:23;4324:32;4321:2;;;4374:6;4366;4359:22;4321:2;4418:9;4405:23;4437:31;4462:5;4437:31;:::i;:::-;4487:5;4539:2;4524:18;;;;4511:32;;-1:-1:-1;;;4311:238:1:o;4554:457::-;4640:6;4648;4701:2;4689:9;4680:7;4676:23;4672:32;4669:2;;;4722:6;4714;4707:22;4669:2;4767:9;4754:23;4800:18;4792:6;4789:30;4786:2;;;4837:6;4829;4822:22;4786:2;4881:70;4943:7;4934:6;4923:9;4919:22;4881:70;:::i;:::-;4970:8;;4855:96;;-1:-1:-1;4659:352:1;-1:-1:-1;;;;4659:352:1:o;5016:586::-;5108:6;5116;5124;5177:2;5165:9;5156:7;5152:23;5148:32;5145:2;;;5198:6;5190;5183:22;5145:2;5243:9;5230:23;5276:18;5268:6;5265:30;5262:2;;;5313:6;5305;5298:22;5262:2;5357:70;5419:7;5410:6;5399:9;5395:22;5357:70;:::i;:::-;5446:8;;-1:-1:-1;5331:96:1;-1:-1:-1;;5531:2:1;5516:18;;5503:32;5544:28;5503:32;5544:28;:::i;:::-;5591:5;5581:15;;;5135:467;;;;;:::o;5607:1092::-;5697:6;5705;5758:2;5746:9;5737:7;5733:23;5729:32;5726:2;;;5779:6;5771;5764:22;5726:2;5824:9;5811:23;5857:18;5849:6;5846:30;5843:2;;;5894:6;5886;5879:22;5843:2;5922:22;;5975:4;5967:13;;5963:27;-1:-1:-1;5953:2:1;;6009:6;6001;5994:22;5953:2;6050;6037:16;6072:4;6096:60;6112:43;6152:2;6112:43;:::i;:::-;6096:60;:::i;:::-;6178:3;6202:2;6197:3;6190:15;6230:2;6225:3;6221:12;6214:19;;6261:2;6257;6253:11;6309:7;6304:2;6298;6295:1;6291:10;6287:2;6283:19;6279:28;6276:41;6273:2;;;6335:6;6327;6320:22;6273:2;6362:6;6353:15;;6377:238;6391:2;6388:1;6385:9;6377:238;;;6462:3;6449:17;6479:31;6504:5;6479:31;:::i;:::-;6523:18;;6409:1;6402:9;;;;;6561:12;;;;6593;;6377:238;;;-1:-1:-1;6634:5:1;-1:-1:-1;6658:35:1;;-1:-1:-1;6674:18:1;;;6658:35;:::i;:::-;6648:45;;;;;5716:983;;;;;:::o;6704:937::-;6799:6;6830:2;6873;6861:9;6852:7;6848:23;6844:32;6841:2;;;6894:6;6886;6879:22;6841:2;6932:9;6926:16;6965:18;6957:6;6954:30;6951:2;;;7002:6;6994;6987:22;6951:2;7030:22;;7083:4;7075:13;;7071:27;-1:-1:-1;7061:2:1;;7117:6;7109;7102:22;7061:2;7151;7145:9;7174:60;7190:43;7230:2;7190:43;:::i;7174:60::-;7256:3;7280:2;7275:3;7268:15;7308:2;7303:3;7299:12;7292:19;;7339:2;7335;7331:11;7387:7;7382:2;7376;7373:1;7369:10;7365:2;7361:19;7357:28;7354:41;7351:2;;;7413:6;7405;7398:22;7351:2;7440:6;7431:15;;7455:156;7469:2;7466:1;7463:9;7455:156;;;7526:10;;7514:23;;7487:1;7480:9;;;;;7557:12;;;;7589;;7455:156;;;-1:-1:-1;7630:5:1;6810:831;-1:-1:-1;;;;;;;6810:831:1:o;7646:251::-;7702:6;7755:2;7743:9;7734:7;7730:23;7726:32;7723:2;;;7776:6;7768;7761:22;7723:2;7820:9;7807:23;7839:28;7861:5;7839:28;:::i;7902:255::-;7969:6;8022:2;8010:9;8001:7;7997:23;7993:32;7990:2;;;8043:6;8035;8028:22;7990:2;8080:9;8074:16;8099:28;8121:5;8099:28;:::i;8162:319::-;8227:6;8235;8288:2;8276:9;8267:7;8263:23;8259:32;8256:2;;;8309:6;8301;8294:22;8256:2;8353:9;8340:23;8372:28;8394:5;8372:28;:::i;8486:411::-;8567:6;8575;8628:2;8616:9;8607:7;8603:23;8599:32;8596:2;;;8649:6;8641;8634:22;8902:190;8961:6;9014:2;9002:9;8993:7;8989:23;8985:32;8982:2;;;9035:6;9027;9020:22;8982:2;-1:-1:-1;9063:23:1;;8972:120;-1:-1:-1;8972:120:1:o;9097:194::-;9167:6;9220:2;9208:9;9199:7;9195:23;9191:32;9188:2;;;9241:6;9233;9226:22;9188:2;-1:-1:-1;9269:16:1;;9178:113;-1:-1:-1;9178:113:1:o;9296:319::-;9361:6;9369;9422:2;9410:9;9401:7;9397:23;9393:32;9390:2;;;9443:6;9435;9428:22;9390:2;9484:9;9471:23;9461:33;;9544:2;9533:9;9529:18;9516:32;9557:28;9579:5;9557:28;:::i;9620:258::-;9688:6;9696;9749:2;9737:9;9728:7;9724:23;9720:32;9717:2;;;9770:6;9762;9755:22;9717:2;-1:-1:-1;;9798:23:1;;;9868:2;9853:18;;;9840:32;;-1:-1:-1;9707:171:1:o;9883:326::-;9960:6;9968;9976;10029:2;10017:9;10008:7;10004:23;10000:32;9997:2;;;10050:6;10042;10035:22;9997:2;-1:-1:-1;;10078:23:1;;;10148:2;10133:18;;10120:32;;-1:-1:-1;10199:2:1;10184:18;;;10171:32;;9987:222;-1:-1:-1;9987:222:1:o;10214:316::-;10302:6;10310;10318;10371:2;10359:9;10350:7;10346:23;10342:32;10339:2;;;10392:6;10384;10377:22;10339:2;10426:9;10420:16;10410:26;;10476:2;10465:9;10461:18;10455:25;10445:35;;10520:2;10509:9;10505:18;10499:25;10489:35;;10329:201;;;;;:::o;10535:395::-;10621:6;10629;10637;10645;10698:3;10686:9;10677:7;10673:23;10669:33;10666:2;;;10720:6;10712;10705:22;10666:2;-1:-1:-1;;10748:23:1;;;10818:2;10803:18;;10790:32;;-1:-1:-1;10869:2:1;10854:18;;10841:32;;10920:2;10905:18;10892:32;;-1:-1:-1;10656:274:1;-1:-1:-1;10656:274:1:o;10935:463::-;10988:3;11026:5;11020:12;11053:6;11048:3;11041:19;11079:4;11108:2;11103:3;11099:12;11092:19;;11145:2;11138:5;11134:14;11166:3;11178:195;11192:6;11189:1;11186:13;11178:195;;;11257:13;;-1:-1:-1;;;;;11253:39:1;11241:52;;11313:12;;;;11348:15;;;;11289:1;11207:9;11178:195;;;-1:-1:-1;11389:3:1;;10996:402;-1:-1:-1;;;;;10996:402:1:o;13238:603::-;13350:4;13379:2;13408;13397:9;13390:21;13440:6;13434:13;13483:6;13478:2;13467:9;13463:18;13456:34;13508:4;13521:140;13535:6;13532:1;13529:13;13521:140;;;13630:14;;;13626:23;;13620:30;13596:17;;;13615:2;13592:26;13585:66;13550:10;;13521:140;;;13679:6;13676:1;13673:13;13670:2;;;13749:4;13744:2;13735:6;13724:9;13720:22;13716:31;13709:45;13670:2;-1:-1:-1;13825:2:1;13804:15;-1:-1:-1;;13800:29:1;13785:45;;;;13832:2;13781:54;;13359:482;-1:-1:-1;;;13359:482:1:o;20442:356::-;20644:2;20626:21;;;20663:18;;;20656:30;20722:34;20717:2;20702:18;;20695:62;20789:2;20774:18;;20616:182::o;24196:332::-;24403:6;24392:9;24385:25;24446:2;24441;24430:9;24426:18;24419:30;24366:4;24466:56;24518:2;24507:9;24503:18;24495:6;24466:56;:::i;:::-;24458:64;24375:153;-1:-1:-1;;;;24375:153:1:o;24533:582::-;24832:6;24821:9;24814:25;24875:6;24870:2;24859:9;24855:18;24848:34;24918:3;24913:2;24902:9;24898:18;24891:31;24795:4;24939:57;24991:3;24980:9;24976:19;24968:6;24939:57;:::i;:::-;-1:-1:-1;;;;;25032:32:1;;;;25027:2;25012:18;;25005:60;-1:-1:-1;25096:3:1;25081:19;25074:35;24931:65;24804:311;-1:-1:-1;;;24804:311:1:o;25309:275::-;25380:2;25374:9;25445:2;25426:13;;-1:-1:-1;;25422:27:1;25410:40;;25480:18;25465:34;;25501:22;;;25462:62;25459:2;;;25527:18;;:::i;:::-;25563:2;25556:22;25354:230;;-1:-1:-1;25354:230:1:o;25589:183::-;25649:4;25682:18;25674:6;25671:30;25668:2;;;25704:18;;:::i;:::-;-1:-1:-1;25749:1:1;25745:14;25761:4;25741:25;;25658:114::o;25777:128::-;25817:3;25848:1;25844:6;25841:1;25838:13;25835:2;;;25854:18;;:::i;:::-;-1:-1:-1;25890:9:1;;25825:80::o;25910:217::-;25950:1;25976;25966:2;;-1:-1:-1;;;26001:31:1;;26055:4;26052:1;26045:15;26083:4;26008:1;26073:15;25966:2;-1:-1:-1;26112:9:1;;25956:171::o;26132:422::-;26221:1;26264:5;26221:1;26278:270;26299:7;26289:8;26286:21;26278:270;;;26358:4;26354:1;26350:6;26346:17;26340:4;26337:27;26334:2;;;26367:18;;:::i;:::-;26417:7;26407:8;26403:22;26400:2;;;26437:16;;;;26400:2;26516:22;;;;26476:15;;;;26278:270;;;26282:3;26196:358;;;;;:::o;26559:131::-;26619:5;26648:36;26675:8;26669:4;26648:36;:::i;26695:140::-;26753:5;26782:47;26823:4;26813:8;26809:19;26803:4;26840:806;26889:5;26919:8;26909:2;;-1:-1:-1;26960:1:1;26974:5;;26909:2;27008:4;26998:2;;-1:-1:-1;27045:1:1;27059:5;;26998:2;27090:4;27108:1;27103:59;;;;27176:1;27171:130;;;;27083:218;;27103:59;27133:1;27124:10;;27147:5;;;27171:130;27208:3;27198:8;27195:17;27192:2;;;27215:18;;:::i;:::-;-1:-1:-1;;27271:1:1;27257:16;;27286:5;;27083:218;;27385:2;27375:8;27372:16;27366:3;27360:4;27357:13;27353:36;27347:2;27337:8;27334:16;27329:2;27323:4;27320:12;27316:35;27313:77;27310:2;;;-1:-1:-1;27422:19:1;;;27454:5;;27310:2;27501:34;27526:8;27520:4;27501:34;:::i;:::-;27571:6;27567:1;27563:6;27559:19;27550:7;27547:32;27544:2;;;27582:18;;:::i;:::-;27620:20;;26899:747;-1:-1:-1;;;26899:747:1:o;27651:168::-;27691:7;27757:1;27753;27749:6;27745:14;27742:1;27739:21;27734:1;27727:9;27720:17;27716:45;27713:2;;;27764:18;;:::i;:::-;-1:-1:-1;27804:9:1;;27703:116::o;27824:125::-;27864:4;27892:1;27889;27886:8;27883:2;;;27897:18;;:::i;:::-;-1:-1:-1;27934:9:1;;27873:76::o;27954:380::-;28033:1;28029:12;;;;28076;;;28097:2;;28151:4;28143:6;28139:17;28129:27;;28097:2;28204;28196:6;28193:14;28173:18;28170:38;28167:2;;;28250:10;28245:3;28241:20;28238:1;28231:31;28285:4;28282:1;28275:15;28313:4;28310:1;28303:15;28167:2;;28009:325;;;:::o;28339:135::-;28378:3;-1:-1:-1;;28399:17:1;;28396:2;;;28419:18;;:::i;:::-;-1:-1:-1;28466:1:1;28455:13;;28386:88::o;28479:127::-;28540:10;28535:3;28531:20;28528:1;28521:31;28571:4;28568:1;28561:15;28595:4;28592:1;28585:15;28611:127;28672:10;28667:3;28663:20;28660:1;28653:31;28703:4;28700:1;28693:15;28727:4;28724:1;28717:15;28743:131;-1:-1:-1;;;;;28818:31:1;;28808:42;;28798:2;;28864:1;28861;28854:12;28879:118;28965:5;28958:13;28951:21;28944:5;28941:32;28931:2;;28987:1;28984;28977:12
Swarm Source
ipfs://bc3a1dc9b06268bce939afe03c42246a107a8a57c75e9ec42c0055d83d29ab21
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.