ERC-20
Overview
Max Total Supply
100,000,000 ETH4000
Holders
74
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
9.015779804 ETH4000Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ETHFourThousand
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-09 */ /* ETH 4000 Official Community 📈 📍 https://eth4000.com 📍 https://twitter.com/ETH_4000 📍 https://medium.com/@eth4000.official 📍 https://t.me/eth4000 Let's Make Ethereum Great Again!!!🚀🌕 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.13; 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); event TransferDetails(address indexed from, address indexed to, uint256 total_Amount, uint256 reflected_amount, uint256 total_TransferAmount, uint256 reflected_TransferAmount); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract ETHFourThousand is Context, IERC20, Ownable { using Address for address; mapping (address => uint256) public _rewardedBalance; mapping (address => uint256) public _totalBalance; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public _isExcluded; bool public blacklistMode = true; mapping (address => bool) public isBlacklisted; bool public tradingOpen = false; bool public TOBITNA = true; uint256 private constant MAX = ~uint256(0); uint8 public constant decimals = 9; uint256 public constant totalSupply = 1 * 10**8 * 10**decimals; uint256 private _reflectSupply = (MAX - (MAX % totalSupply)); string public constant name = "ETH4000"; string public constant symbol = "ETH4000"; uint256 public _swapToFeeThreshold_treasury = totalSupply / 5000; uint256 public _swapToFeeThreshold_marketing = totalSupply / 5000; uint256 public _treasuryBalanceLimit = 0; uint256 public _marketingBalanceLimit = 0; uint256 public _reflectionFee = 150; //1.5% uint256 private _old_reflectionFee = _reflectionFee; uint256 public _contractReflectionAmount = 0; uint256 public _marketingFee = 75;//0.75% uint256 private _old_marketingFee = _marketingFee; address payable public _marketingWallet; uint256 public _treasuryFee = 75;//0.75% uint256 private _old_treasuryFee = _treasuryFee; address payable public _treasuryWallet; uint256 public _liquidityFee = 100; //1.5% uint256 private _old_liquidtyFee = _liquidityFee; uint256 public _burntFee = 100;//1% uint256 private _old_burntFee = _burntFee; address constant burntWallet = 0x000000000000000000000000000000000000dEaD; uint256 public _fee_denominator = 10000; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public _maxWallet = totalSupply / 50; uint256 public _maxTxnAmount = totalSupply / 100; address[] public _excluded; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isExcludedFromTxnLimit; mapping (address => bool) public isExcludedFromWalletLimit; uint256 public swapThreshold = ( totalSupply * 2 ) / 1000; uint256 public sellMultiplier = 100; uint256 public buyMultiplier = 100; uint256 public transferMultiplier = 100; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _rewardedBalance[owner()] = _reflectSupply; _marketingWallet = payable(0xdaDcbDFd7529f101E7f64F67cc331f3e90f27ca9); _treasuryWallet = payable(0x0b20a925355DCE12D19E2890697B1FE153b4ccE6); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; isExcludedFromFee[msg.sender] = true; isExcludedFromFee[address(this)] = true; isExcludedFromFee[burntWallet] = true; isExcludedFromTxnLimit[msg.sender] = true; isExcludedFromTxnLimit[burntWallet] = true; isExcludedFromTxnLimit[_marketingWallet] = true; isExcludedFromTxnLimit[_treasuryWallet] = true; isExcludedFromWalletLimit[msg.sender] = true; isExcludedFromWalletLimit[address(this)] = true; isExcludedFromWalletLimit[burntWallet] = true; isExcludedFromWalletLimit[_marketingWallet] = true; isExcludedFromWalletLimit[_treasuryWallet] = true; emit Transfer(address(0), owner(), totalSupply); } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _totalBalance[account]; return tokenFromReflection(_rewardedBalance[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); require (_allowances[sender][_msgSender()] >= amount,"ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), (_allowances[sender][_msgSender()]-amount)); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, (_allowances[_msgSender()][spender] + addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { require (_allowances[_msgSender()][spender] >= subtractedValue,"ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, (_allowances[_msgSender()][spender] - subtractedValue)); return true; } function ___tokenInfo () public view returns( uint256 MaxTxAmount, uint256 MaxWalletToken, uint256 TotalSupply, uint256 Reflected_Supply, uint256 Reflection_Rate, bool TradingOpen ) { return (_maxTxnAmount, _maxWallet, totalSupply, _reflectSupply, _getRate(), tradingOpen ); } function ___feesInfo () public view returns( uint256 SwapThreshold, uint256 contractTokenBalance, uint256 Reflection_tokens_stored ) { return (swapThreshold, balanceOf(address(this)), _contractReflectionAmount); } function ___wallets () public view returns( uint256 Reflection_Fees, uint256 Liquidity_Fee, uint256 Treasury_Fee, uint256 Treasury_Fee_Convert_Limit, uint256 Treasury_Fee_Minimum_Balance, uint256 Marketing_Fee, uint256 Marketing_Fee_Convert_Limit, uint256 Marketing_Fee_Minimum_Balance ) { return ( _reflectionFee, _liquidityFee, _treasuryFee,_swapToFeeThreshold_treasury,_treasuryBalanceLimit, _marketingFee,_swapToFeeThreshold_marketing, _marketingBalanceLimit); } function changeWallets(address _newMarketing, address _newTreasury) external onlyOwner { _marketingWallet = payable(_newMarketing); _treasuryWallet = payable(_newTreasury); } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _reflectSupply, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return (rAmount / currentRate); } function excludeFromReward(address account) external onlyOwner { require(!_isExcluded[account], "Account is already excluded"); if(_rewardedBalance[account] > 0) { _totalBalance[account] = tokenFromReflection(_rewardedBalance[account]); } _isExcluded[account] = true; _excluded.push(account); } function removeExcludeFromReward(address account) external onlyOwner { require(_isExcluded[account], "Account is already included"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _totalBalance[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function tradingStatus(bool _status, bool _ab) external onlyOwner { tradingOpen = _status; TOBITNA = _ab; } function setMaxTxPercent_base1000(uint256 maxTxPercentBase1000) external onlyOwner { _maxTxnAmount = (totalSupply * maxTxPercentBase1000 ) / 1000; } function setMaxWalletPercent_base1000(uint256 maxWallPercentBase1000) external onlyOwner { _maxWallet = (totalSupply * maxWallPercentBase1000 ) / 1000; } function setSwapSettings(bool _status, uint256 _threshold) external onlyOwner { swapAndLiquifyEnabled = _status; swapThreshold = _threshold; } function enable_blacklist(bool _status) external onlyOwner { blacklistMode = _status; } function manage_blacklist(address[] calldata addresses, bool status) external onlyOwner { for (uint256 i; i < addresses.length; ++i) { isBlacklisted[addresses[i]] = status; } } function manage_excludeFromFee(address[] calldata addresses, bool status) external onlyOwner { for (uint256 i; i < addresses.length; ++i) { isExcludedFromFee[addresses[i]] = status; } } function manage_TxLimitExempt(address[] calldata addresses, bool status) external onlyOwner { require(addresses.length < 501,"GAS Error: max limit is 500 addresses"); for (uint256 i=0; i < addresses.length; ++i) { isExcludedFromTxnLimit[addresses[i]] = status; } } function manage_WalletLimitExempt(address[] calldata addresses, bool status) external onlyOwner { require(addresses.length < 501,"GAS Error: max limit is 500 addresses"); for (uint256 i=0; i < addresses.length; ++i) { isExcludedFromWalletLimit[addresses[i]] = status; } } function clearStuckBalance(uint256 amountPercentage) external onlyOwner { uint256 amountToClear = amountPercentage * address(this).balance / 100; payable(msg.sender).transfer(amountToClear); } function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) { if(tokens == 0){ tokens = IERC20(tokenAddress).balanceOf(address(this)); } return IERC20(tokenAddress).transfer(msg.sender, tokens); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply / tSupply; } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _reflectSupply; uint256 tSupply = totalSupply; for (uint256 i = 0; i < _excluded.length; i++) { if (_rewardedBalance[_excluded[i]] > rSupply || _totalBalance[_excluded[i]] > tSupply) return (_reflectSupply, totalSupply); rSupply = rSupply - _rewardedBalance[_excluded[i]]; tSupply = tSupply - _totalBalance[_excluded[i]]; } if (rSupply < (_reflectSupply/totalSupply)) return (_reflectSupply, totalSupply); return (rSupply, tSupply); } function _getValues(uint256 tAmount, address recipient, address sender) private view returns ( uint256 rAmount, uint256 rTransferAmount, uint256 rReflection, uint256 tTransferAmount, uint256 tMarketing, uint256 tLiquidity, uint256 tTreasury, uint256 tReflection, uint256 tBurnt) { uint256 multiplier = transferMultiplier; if(recipient == uniswapV2Pair) { multiplier = sellMultiplier; } else if(sender == uniswapV2Pair) { multiplier = buyMultiplier; } tMarketing = ( tAmount * _marketingFee ) * multiplier / (_fee_denominator * 100); tLiquidity = ( tAmount * _liquidityFee ) * multiplier / (_fee_denominator * 100); tTreasury = ( tAmount * _treasuryFee ) * multiplier / (_fee_denominator * 100); tReflection = ( tAmount * _reflectionFee ) * multiplier / (_fee_denominator * 100); tBurnt = (tAmount * _burntFee) * multiplier / (_fee_denominator * 100); tTransferAmount = tAmount - ( tMarketing + tLiquidity + tTreasury + tReflection + tBurnt); rReflection = tReflection * _getRate(); rAmount = tAmount * _getRate(); rTransferAmount = tTransferAmount * _getRate(); } function _fees_to_eth_process( address payable wallet, uint256 tokensToConvert) private lockTheSwap { uint256 rTokensToConvert = tokensToConvert * _getRate(); _rewardedBalance[wallet] = _rewardedBalance[wallet] - rTokensToConvert; if (_isExcluded[wallet]){ _totalBalance[wallet] = _totalBalance[wallet] - tokensToConvert; } _rewardedBalance[address(this)] = _rewardedBalance[address(this)] + rTokensToConvert; emit Transfer(wallet, address(this), tokensToConvert); swapTokensForEthAndSend(tokensToConvert,wallet); } function _fees_to_eth(uint256 tokensToConvert, address payable feeWallet, uint256 minBalanceToKeep) private { if(tokensToConvert == 0){ return; } if(tokensToConvert > _maxTxnAmount){ tokensToConvert = _maxTxnAmount; } if((tokensToConvert+minBalanceToKeep) <= balanceOf(feeWallet)){ _fees_to_eth_process(feeWallet,tokensToConvert); } } function _takeFee(uint256 feeAmount, address receiverWallet) private { uint256 reflectedReeAmount = feeAmount * _getRate(); _rewardedBalance[receiverWallet] = _rewardedBalance[receiverWallet] + reflectedReeAmount; if(_isExcluded[receiverWallet]){ _totalBalance[receiverWallet] = _totalBalance[receiverWallet] + feeAmount; } if(feeAmount > 0){ emit Transfer(msg.sender, receiverWallet, feeAmount); } } function _setAllFees(uint256 marketingFee, uint256 liquidityFee, uint256 treasuryFee, uint256 reflectionFee, uint256 burntFee) private { _marketingFee = marketingFee; _liquidityFee = liquidityFee; _treasuryFee = treasuryFee; _reflectionFee = reflectionFee; _burntFee = burntFee; } function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner { buyMultiplier = _buy; sellMultiplier = _sell; transferMultiplier = _trans; } function setFeesThreshold(uint256 swapToFeeThreshold_marketing, uint256 swapToFeeThreshold_treasury,uint256 treasuryBalanceLimit, uint256 marketingBalanceLimit) external onlyOwner { _swapToFeeThreshold_marketing = swapToFeeThreshold_marketing; _swapToFeeThreshold_treasury = swapToFeeThreshold_treasury; _treasuryBalanceLimit = treasuryBalanceLimit; _marketingBalanceLimit = marketingBalanceLimit; } function setFees(uint256 marketingFee, uint256 liquidityFee, uint256 treasuryFee, uint256 reflectionFee, uint256 bruntFee) external onlyOwner { uint256 totalFees = marketingFee + liquidityFee + treasuryFee + reflectionFee + bruntFee; require(totalFees/100 < 25); _setAllFees( marketingFee, liquidityFee, treasuryFee, reflectionFee, bruntFee); } function removeAllFee() private { _old_marketingFee = _marketingFee; _old_liquidtyFee = _liquidityFee; _old_treasuryFee = _treasuryFee; _old_reflectionFee = _reflectionFee; _old_burntFee = _burntFee; _setAllFees(0,0,0,0,0); } function restoreAllFee() private { _setAllFees(_old_marketingFee, _old_liquidtyFee, _old_treasuryFee, _old_reflectionFee, _old_burntFee); } function swapAndLiquify(uint256 tokensToSwap) private lockTheSwap { uint256 tokensHalf = tokensToSwap / 2; uint256 contractETHBalance = address(this).balance; swapTokensForEth(tokensHalf); uint256 ethSwapped = address(this).balance - contractETHBalance; addLiquidity(tokensHalf,ethSwapped); emit SwapAndLiquify(tokensToSwap, tokensHalf, ethSwapped); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function swapTokensForEthAndSend(uint256 tokenAmount, address payable receiverWallet) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, receiverWallet, block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); } 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 { if(from != owner() && to != owner()){ require(tradingOpen,"Trading not open yet"); if(TOBITNA && from == uniswapV2Pair){ isBlacklisted[to] = true; } } if(blacklistMode && !TOBITNA){ require(!isBlacklisted[from],"Blacklisted"); } require((amount <= _maxTxnAmount) || isExcludedFromTxnLimit[from] || isExcludedFromTxnLimit[to], "Max TX Limit Exceeded"); if (!isExcludedFromWalletLimit[from] && !isExcludedFromWalletLimit[to] && to != uniswapV2Pair) { require((balanceOf(to) + amount) <= _maxWallet,"max wallet limit reached"); } { uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxnAmount) { contractTokenBalance = _maxTxnAmount - 1; } bool overMinTokenBalance = contractTokenBalance >= swapThreshold; if (overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = swapThreshold; swapAndLiquify(contractTokenBalance); } if(!inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled){ _fees_to_eth(_swapToFeeThreshold_treasury,_treasuryWallet, _treasuryBalanceLimit); _fees_to_eth(_swapToFeeThreshold_marketing,_marketingWallet, _marketingBalanceLimit); } } bool takeFee = true; if(isExcludedFromFee[from] || isExcludedFromFee[to]){ takeFee = false; removeAllFee(); } (uint256 rAmount, uint256 rTransferAmount, uint256 rReflection, uint256 tTransferAmount, uint256 tMarketing, uint256 tLiquidity, uint256 tTreasury, uint256 tReflection, uint256 tBurnt) = _getValues(amount, to, from); _transferStandard(from, to, amount, rAmount, tTransferAmount, rTransferAmount); _reflectSupply = _reflectSupply - rReflection; _contractReflectionAmount = _contractReflectionAmount + tReflection; if(!takeFee){ restoreAllFee(); } else{ _takeFee(tMarketing,_marketingWallet); _takeFee(tLiquidity,address(this)); _takeFee(tTreasury,_treasuryWallet); _takeFee(tBurnt, burntWallet); } } function _transferStandard(address from, address to, uint256 tAmount, uint256 rAmount, uint256 tTransferAmount, uint256 rTransferAmount) private { _rewardedBalance[from] = _rewardedBalance[from] - rAmount; if (_isExcluded[from]){ _totalBalance[from] = _totalBalance[from] - tAmount; } if (_isExcluded[to]){ _totalBalance[to] = _totalBalance[to] + tTransferAmount; } _rewardedBalance[to] = _rewardedBalance[to] + rTransferAmount; if(tTransferAmount > 0){ emit Transfer(from, to, tTransferAmount); } } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"total_Amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reflected_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"total_TransferAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reflected_TransferAmount","type":"uint256"}],"name":"TransferDetails","type":"event"},{"inputs":[],"name":"TOBITNA","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"___feesInfo","outputs":[{"internalType":"uint256","name":"SwapThreshold","type":"uint256"},{"internalType":"uint256","name":"contractTokenBalance","type":"uint256"},{"internalType":"uint256","name":"Reflection_tokens_stored","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"___tokenInfo","outputs":[{"internalType":"uint256","name":"MaxTxAmount","type":"uint256"},{"internalType":"uint256","name":"MaxWalletToken","type":"uint256"},{"internalType":"uint256","name":"TotalSupply","type":"uint256"},{"internalType":"uint256","name":"Reflected_Supply","type":"uint256"},{"internalType":"uint256","name":"Reflection_Rate","type":"uint256"},{"internalType":"bool","name":"TradingOpen","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"___wallets","outputs":[{"internalType":"uint256","name":"Reflection_Fees","type":"uint256"},{"internalType":"uint256","name":"Liquidity_Fee","type":"uint256"},{"internalType":"uint256","name":"Treasury_Fee","type":"uint256"},{"internalType":"uint256","name":"Treasury_Fee_Convert_Limit","type":"uint256"},{"internalType":"uint256","name":"Treasury_Fee_Minimum_Balance","type":"uint256"},{"internalType":"uint256","name":"Marketing_Fee","type":"uint256"},{"internalType":"uint256","name":"Marketing_Fee_Convert_Limit","type":"uint256"},{"internalType":"uint256","name":"Marketing_Fee_Minimum_Balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burntFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_contractReflectionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_excluded","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_fee_denominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingBalanceLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rewardedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapToFeeThreshold_marketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapToFeeThreshold_treasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_totalBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryBalanceLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newMarketing","type":"address"},{"internalType":"address","name":"_newTreasury","type":"address"}],"name":"changeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","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":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromTxnLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeExcludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"treasuryFee","type":"uint256"},{"internalType":"uint256","name":"reflectionFee","type":"uint256"},{"internalType":"uint256","name":"bruntFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapToFeeThreshold_marketing","type":"uint256"},{"internalType":"uint256","name":"swapToFeeThreshold_treasury","type":"uint256"},{"internalType":"uint256","name":"treasuryBalanceLimit","type":"uint256"},{"internalType":"uint256","name":"marketingBalanceLimit","type":"uint256"}],"name":"setFeesThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercentBase1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercentBase1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":"bool","name":"_status","type":"bool"},{"internalType":"bool","name":"_ab","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","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":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526005805460ff191660011790556007805461ffff19166101001790556200002e6009600a6200069e565b6200003e906305f5e100620006b6565b6200004c90600019620006ee565b6200005a9060001962000705565b6008556113886200006e6009600a6200069e565b6200007e906305f5e100620006b6565b6200008a91906200071f565b6009556113886009600a620000a091906200069e565b620000b0906305f5e100620006b6565b620000bc91906200071f565b600a9081556000600b819055600c8190556096600d819055600e55600f55604b6010819055601181905560138190556014556064601681905560178190556018819055601955612710601a55601b805461ff00191661010017905560329062000128906009906200069e565b62000138906305f5e100620006b6565b6200014491906200071f565b601c556064620001576009600a6200069e565b62000167906305f5e100620006b6565b6200017391906200071f565b601d556103e8620001876009600a6200069e565b62000197906305f5e100620006b6565b620001a4906002620006b6565b620001b091906200071f565b602255606460235560646024556064602555348015620001cf57600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360085460016000620002296000546001600160a01b031690565b6001600160a01b03168152602080820192909252604090810160002092909255601280546001600160a01b031990811673dadcbdfd7529f101e7f64f67cc331f3e90f27ca91790915560158054909116730b20a925355dce12d19e2890697b1fe153b4cce6179055815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a0155926004808401938290030181865afa158015620002dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000303919062000736565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000351573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000377919062000736565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620003c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003eb919062000736565b6001600160a01b0390811660a052818116608052336000818152601f602090815260408083208054600160ff1991821681179092553080865283862080548316841790557fef94442dfc0e910ca743614215a10fad3ff708bf5378f9c5c958c9192b3bf004805483168417905586865284805283862080548316841790557fcbaad361c71be11fa6bdbe0e740c6259be964b32182da2da47b54472477c6a17805483168417905560128054891687528487208054841685179055601580548a168852858820805485168617905597875260219095528386208054831684179055855282852080548216831790557fda90364631e387f138e7e413f1de75a8ecb4767574209ddf012729113dea45c0805482168317905592548616845281842080548416821790559354851683528220805490911690921790915554166001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005616009600a6200069e565b62000571906305f5e100620006b6565b60405190815260200160405180910390a35062000761565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005e0578160001904821115620005c457620005c462000589565b80851615620005d257918102915b93841c9390800290620005a4565b509250929050565b600082620005f95750600162000698565b81620006085750600062000698565b81600181146200062157600281146200062c576200064c565b600191505062000698565b60ff84111562000640576200064062000589565b50506001821b62000698565b5060208310610133831016604e8410600b841016171562000671575081810a62000698565b6200067d83836200059f565b806000190482111562000694576200069462000589565b0290505b92915050565b6000620006af60ff841683620005e8565b9392505050565b6000816000190483118215151615620006d357620006d362000589565b500290565b634e487b7160e01b600052601260045260246000fd5b600082620007005762000700620006d8565b500690565b6000828210156200071a576200071a62000589565b500390565b600082620007315762000731620006d8565b500490565b6000602082840312156200074957600080fd5b81516001600160a01b0381168114620006af57600080fd5b60805160a051613656620007e96000396000818161073701528181611dea01528181611f960152818161207d015281816120e8015281816123ca015261240c01526000818161057101528181612aa001528181612b5901528181612b9501528181612c0701528181612c2e01528181612e9e01528181612f570152612f9301526136566000f3fe6080604052600436106103f25760003560e01c8063682e54d511610208578063a61699c411610118578063d10ae165116100ab578063f682cb691161007a578063f682cb6914610c91578063fd748c3014610ca7578063fe575a8714610cbd578063fed0d2a114610ced578063ffb54a9914610d0357600080fd5b8063d10ae16514610bec578063dd62ed3e14610c0b578063e092034914610c51578063f2fde38b14610c7157600080fd5b8063bd9ab537116100e7578063bd9ab53714610b50578063c7c6df2514610b70578063d067ed2e14610b9d578063d0e1032614610bcc57600080fd5b8063a61699c414610aca578063a9059cbb14610aea578063b40f946914610b0a578063bb4411e014610b3a57600080fd5b8063896648c11161019b578063955748ee1161016a578063955748ee14610a5457806395d89b411461049f578063962dfc7514610a6a578063a26c833a14610a8a578063a457c2d714610aaa57600080fd5b8063896648c1146109dc5780638da5cb5b146109f65780638e2eee8414610a145780638ecaddf314610a3457600080fd5b806370a08231116101d757806370a0823114610971578063715018a61461099157806377b54bad146109a657806382247ec0146109c657600080fd5b8063682e54d5146108f85780636bc87c3a146109255780636ce46bc31461093b5780636f6413461461095b57600080fd5b806328f0b257116103035780634be9d8691161029657806355e7fe011161026557806355e7fe01146108085780635921652f1461081e5780635e562f3b14610834578063617c62a11461085457806367dc9e921461089857600080fd5b80634be9d869146107785780634d09deb31461079857806352390c02146107b85780635342acb4146107d857600080fd5b80633206b4aa116102d25780633206b4aa146106ef578063395093511461070557806349bd5a5e146107255780634a74bb021461075957600080fd5b806328f0b2571461067c5780632d838119146106925780633121c7c0146106b2578063313ce567146106c857600080fd5b80630b285b1f116103865780631da1db5e116103555780631da1db5e146105f05780631de125161461061057806322976e0d1461062657806323b872dd1461063c578063269d1faa1461065c57600080fd5b80630b285b1f1461052f5780631694505e1461055f57806318160ddd146105ab5780631c3c4fec146105c057600080fd5b806304a66b48116103c257806304a66b481461047f57806306fdde031461049f57806309302dc6146104df578063095ea7b3146104ff57600080fd5b8062108683146103fe57806301ea01a514610420578063034c4897146104495780630445b6671461046957600080fd5b366103f957005b600080fd5b34801561040a57600080fd5b5061041e610419366004613019565b610d1d565b005b34801561042c57600080fd5b5061043660185481565b6040519081526020015b60405180910390f35b34801561045557600080fd5b5061041e61046436600461309f565b610de6565b34801561047557600080fd5b5061043660225481565b34801561048b57600080fd5b5061041e61049a3660046130d8565b610e34565b3480156104ab57600080fd5b506104d2604051806040016040528060078152602001660455448343030360cc1b81525081565b6040516104409190613113565b3480156104eb57600080fd5b5061041e6104fa366004613168565b610ec6565b34801561050b57600080fd5b5061051f61051a366004613196565b610f28565b6040519015158152602001610440565b34801561053b57600080fd5b5061051f61054a3660046131c2565b60046020526000908152604090205460ff1681565b34801561056b57600080fd5b506105937f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610440565b3480156105b757600080fd5b50610436610f3f565b3480156105cc57600080fd5b506105d5610f5c565b60408051938452602084019290925290820152606001610440565b3480156105fc57600080fd5b5061041e61060b366004613168565b610f7b565b34801561061c57600080fd5b50610436601d5481565b34801561063257600080fd5b5061043660105481565b34801561064857600080fd5b5061051f6106573660046131df565b610ff2565b34801561066857600080fd5b50601554610593906001600160a01b031681565b34801561068857600080fd5b5061043660135481565b34801561069e57600080fd5b506104366106ad366004613168565b6110c8565b3480156106be57600080fd5b5061043660245481565b3480156106d457600080fd5b506106dd600981565b60405160ff9091168152602001610440565b3480156106fb57600080fd5b50610436600d5481565b34801561071157600080fd5b5061051f610720366004613196565b61114c565b34801561073157600080fd5b506105937f000000000000000000000000000000000000000000000000000000000000000081565b34801561076557600080fd5b50601b5461051f90610100900460ff1681565b34801561078457600080fd5b5061041e610793366004613019565b611183565b3480156107a457600080fd5b506105936107b3366004613168565b61123d565b3480156107c457600080fd5b5061041e6107d33660046131c2565b611267565b3480156107e457600080fd5b5061051f6107f33660046131c2565b601f6020526000908152604090205460ff1681565b34801561081457600080fd5b5061043660095481565b34801561082a57600080fd5b5061043660255481565b34801561084057600080fd5b5061041e61084f366004613220565b6113ba565b34801561086057600080fd5b506108696113f7565b6040805196875260208701959095529385019290925260608401526080830152151560a082015260c001610440565b3480156108a457600080fd5b50600d54601654601354600954600b54601054600a54600c54604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001610440565b34801561090457600080fd5b506104366109133660046131c2565b60026020526000908152604090205481565b34801561093157600080fd5b5061043660165481565b34801561094757600080fd5b5061041e61095636600461323d565b611447565b34801561096757600080fd5b50610436600f5481565b34801561097d57600080fd5b5061043661098c3660046131c2565b61147f565b34801561099d57600080fd5b5061041e6114de565b3480156109b257600080fd5b5061051f6109c1366004613196565b611552565b3480156109d257600080fd5b50610436601c5481565b3480156109e857600080fd5b5060055461051f9060ff1681565b348015610a0257600080fd5b506000546001600160a01b0316610593565b348015610a2057600080fd5b5061041e610a2f366004613019565b611661565b348015610a4057600080fd5b5061041e610a4f366004613269565b6116fa565b348015610a6057600080fd5b50610436600b5481565b348015610a7657600080fd5b50601254610593906001600160a01b031681565b348015610a9657600080fd5b5061041e610aa53660046131c2565b611738565b348015610ab657600080fd5b5061051f610ac5366004613196565b6118ee565b348015610ad657600080fd5b5061041e610ae536600461329b565b6119a5565b348015610af657600080fd5b5061051f610b05366004613196565b6119fd565b348015610b1657600080fd5b5061051f610b253660046131c2565b60216020526000908152604090205460ff1681565b348015610b4657600080fd5b50610436600c5481565b348015610b5c57600080fd5b5061041e610b6b366004613168565b611a0a565b348015610b7c57600080fd5b50610436610b8b3660046131c2565b60016020526000908152604090205481565b348015610ba957600080fd5b5061051f610bb83660046131c2565b602080526000908152604090205460ff1681565b348015610bd857600080fd5b5061041e610be73660046132c9565b611a6c565b348015610bf857600080fd5b5060075461051f90610100900460ff1681565b348015610c1757600080fd5b50610436610c2636600461329b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610c5d57600080fd5b5061041e610c6c366004613019565b611ab4565b348015610c7d57600080fd5b5061041e610c8c3660046131c2565b611b4d565b348015610c9d57600080fd5b50610436600a5481565b348015610cb357600080fd5b50610436601a5481565b348015610cc957600080fd5b5061051f610cd83660046131c2565b60066020526000908152604090205460ff1681565b348015610cf957600080fd5b5061043660235481565b348015610d0f57600080fd5b5060075461051f9060ff1681565b6000546001600160a01b03163314610d505760405162461bcd60e51b8152600401610d47906132e7565b60405180910390fd5b6101f58210610d715760405162461bcd60e51b8152600401610d479061331c565b60005b82811015610de0578160216000868685818110610d9357610d93613361565b9050602002016020810190610da891906131c2565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610dd98161338d565b9050610d74565b50505050565b6000546001600160a01b03163314610e105760405162461bcd60e51b8152600401610d47906132e7565b6007805461ffff191692151561ff0019169290921761010091151591909102179055565b6000546001600160a01b03163314610e5e5760405162461bcd60e51b8152600401610d47906132e7565b6000818385610e6d888a6133a6565b610e7791906133a6565b610e8191906133a6565b610e8b91906133a6565b90506019610e9a6064836133be565b10610ea457600080fd5b601086905560168590556013849055600d83905560188290555b505050505050565b6000546001600160a01b03163314610ef05760405162461bcd60e51b8152600401610d47906132e7565b6103e881610f006009600a6134c4565b610f0e906305f5e1006134d3565b610f1891906134d3565b610f2291906133be565b601c5550565b6000610f35338484611c37565b5060015b92915050565b610f4b6009600a6134c4565b610f59906305f5e1006134d3565b81565b6000806000602254610f6d3061147f565b600f54925092509250909192565b6000546001600160a01b03163314610fa55760405162461bcd60e51b8152600401610d47906132e7565b60006064610fb347846134d3565b610fbd91906133be565b604051909150339082156108fc029083906000818181858888f19350505050158015610fed573d6000803e3d6000fd5b505050565b6000610fff848484611d5c565b6001600160a01b03841660009081526003602090815260408083203384529091529020548211156110835760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610d47565b6001600160a01b0384166000908152600360209081526040808320338085529252909120546110be9186916110b99086906134f2565b611c37565b5060019392505050565b600060085482111561112f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610d47565b6000611139612283565b905061114581846133be565b9392505050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610f359185906110b99086906133a6565b6000546001600160a01b031633146111ad5760405162461bcd60e51b8152600401610d47906132e7565b6101f582106111ce5760405162461bcd60e51b8152600401610d479061331c565b60005b82811015610de05781602060008686858181106111f0576111f0613361565b905060200201602081019061120591906131c2565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556112368161338d565b90506111d1565b601e818154811061124d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146112915760405162461bcd60e51b8152600401610d47906132e7565b6001600160a01b03811660009081526004602052604090205460ff16156112fa5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610d47565b6001600160a01b03811660009081526001602052604090205415611354576001600160a01b03811660009081526001602052604090205461133a906110c8565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600460205260408120805460ff19166001908117909155601e805491820181559091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500180546001600160a01b0319169091179055565b6000546001600160a01b031633146113e45760405162461bcd60e51b8152600401610d47906132e7565b6005805460ff1916911515919091179055565b600080600080600080601d54601c546009600a61141491906134c4565b611422906305f5e1006134d3565b60085461142d612283565b600754949b939a509198509650945060ff90911692509050565b6000546001600160a01b031633146114715760405162461bcd60e51b8152600401610d47906132e7565b602492909255602355602555565b6001600160a01b03811660009081526004602052604081205460ff16156114bc57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610f39906110c8565b6000546001600160a01b031633146115085760405162461bcd60e51b8152600401610d47906132e7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600080546001600160a01b0316331461157d5760405162461bcd60e51b8152600401610d47906132e7565b816000036115f0576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156115c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ed9190613509565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561163d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111459190613522565b6000546001600160a01b0316331461168b5760405162461bcd60e51b8152600401610d47906132e7565b60005b82811015610de05781600660008686858181106116ad576116ad613361565b90506020020160208101906116c291906131c2565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556116f38161338d565b905061168e565b6000546001600160a01b031633146117245760405162461bcd60e51b8152600401610d47906132e7565b600a93909355600991909155600b55600c55565b6000546001600160a01b031633146117625760405162461bcd60e51b8152600401610d47906132e7565b6001600160a01b03811660009081526004602052604090205460ff166117ca5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610d47565b60005b601e548110156118ea57816001600160a01b0316601e82815481106117f4576117f4613361565b6000918252602090912001546001600160a01b0316036118d857601e805461181e906001906134f2565b8154811061182e5761182e613361565b600091825260209091200154601e80546001600160a01b03909216918390811061185a5761185a613361565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600490925220805460ff19169055601e8054806118b2576118b261353f565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806118e28161338d565b9150506117cd565b5050565b3360009081526003602090815260408083206001600160a01b038616845290915281205482111561196f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d47565b3360008181526003602090815260408083206001600160a01b0388168452909152902054610f35919085906110b99086906134f2565b6000546001600160a01b031633146119cf5760405162461bcd60e51b8152600401610d47906132e7565b601280546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b6000610f35338484611d5c565b6000546001600160a01b03163314611a345760405162461bcd60e51b8152600401610d47906132e7565b6103e881611a446009600a6134c4565b611a52906305f5e1006134d3565b611a5c91906134d3565b611a6691906133be565b601d5550565b6000546001600160a01b03163314611a965760405162461bcd60e51b8152600401610d47906132e7565b601b80549215156101000261ff001990931692909217909155602255565b6000546001600160a01b03163314611ade5760405162461bcd60e51b8152600401610d47906132e7565b60005b82811015610de05781601f6000868685818110611b0057611b00613361565b9050602002016020810190611b1591906131c2565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611b468161338d565b9050611ae1565b6000546001600160a01b03163314611b775760405162461bcd60e51b8152600401610d47906132e7565b6001600160a01b038116611bdc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d47565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611c995760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d47565b6001600160a01b038216611cfa5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d47565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000546001600160a01b03848116911614801590611d8857506000546001600160a01b03838116911614155b15611e475760075460ff16611dd65760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610d47565b600754610100900460ff168015611e1e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b15611e47576001600160a01b0382166000908152600660205260409020805460ff191660011790555b60055460ff168015611e615750600754610100900460ff16155b15611ebd576001600160a01b03831660009081526006602052604090205460ff1615611ebd5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610d47565b601d5481111580611ee557506001600160a01b038316600090815260208052604090205460ff165b80611f0757506001600160a01b038216600090815260208052604090205460ff165b611f4b5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610d47565b6001600160a01b03831660009081526021602052604090205460ff16158015611f8d57506001600160a01b03821660009081526021602052604090205460ff16155b8015611fcb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561203557601c5481611fdd8461147f565b611fe791906133a6565b11156120355760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610d47565b60006120403061147f565b9050601d54811061205d576001601d5461205a91906134f2565b90505b602254811080159081906120745750601b5460ff16155b80156120b257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156120c55750601b54610100900460ff165b156120d85760225491506120d8826122a6565b601b5460ff1615801561211d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156121305750601b54610100900460ff165b1561216f57600954601554600b5461215292916001600160a01b031690612335565b600a54601254600c5461216f92916001600160a01b031690612335565b50506001600160a01b0383166000908152601f602052604090205460019060ff16806121b357506001600160a01b0383166000908152601f602052604090205460ff165b156121c3575060006121c3612374565b60008060008060008060008060006121dc8b8d8f6123b4565b9850985098509850985098509850985098506121fc8d8d8d8c8a8d6125ce565b8660085461220a91906134f2565b600855600f5461221b9083906133a6565b600f55896122305761222b612754565b612274565b6012546122479086906001600160a01b031661277d565b612251843061277d565b6015546122689084906001600160a01b031661277d565b6122748161dead61277d565b50505050505050505050505050565b6000806000612290612866565b909250905061229f81836133be565b9250505090565b601b805460ff1916600117905560006122c06002836133be565b9050476122cc82612a49565b60006122d882476134f2565b90506122e48382612c01565b60408051858152602081018590529081018290527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601b805460ff191690555050565b8260000361234257505050565b601d5483111561235257601d5492505b61235b8261147f565b61236582856133a6565b11610fed57610fed8284612d07565b601054601155601654601755601354601455600d54600e556018546019556123b2600080808080601094909455601692909255601355600d55601855565b565b60008060008060008060008060008060255490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168c6001600160a01b03160361240a5750602354612448565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168b6001600160a01b03160361244857506024545b601a546124569060646134d3565b816010548f61246591906134d3565b61246f91906134d3565b61247991906133be565b9550601a54606461248a91906134d3565b816016548f61249991906134d3565b6124a391906134d3565b6124ad91906133be565b9450601a5460646124be91906134d3565b816013548f6124cd91906134d3565b6124d791906134d3565b6124e191906133be565b9350601a5460646124f291906134d3565b81600d548f61250191906134d3565b61250b91906134d3565b61251591906133be565b9250601a54606461252691906134d3565b816018548f61253591906134d3565b61253f91906134d3565b61254991906133be565b9150818385612558888a6133a6565b61256291906133a6565b61256c91906133a6565b61257691906133a6565b612580908e6134f2565b965061258a612283565b61259490846134d3565b975061259e612283565b6125a8908e6134d3565b99506125b2612283565b6125bc90886134d3565b98505093979b92969a50939750939750565b6001600160a01b0386166000908152600160205260409020546125f29084906134f2565b6001600160a01b03871660009081526001602090815260408083209390935560049052205460ff161561265d576001600160a01b0386166000908152600260205260409020546126439085906134f2565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526004602052604090205460ff16156126bc576001600160a01b0385166000908152600260205260409020546126a29083906133a6565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b0385166000908152600160205260409020546126e09082906133a6565b6001600160a01b0386166000908152600160205260409020558115610ebe57846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161274491815260200190565b60405180910390a3505050505050565b6123b2601154601754601454600e54601954601094909455601692909255601355600d55601855565b6000612787612283565b61279190846134d3565b6001600160a01b0383166000908152600160205260409020549091506127b89082906133a6565b6001600160a01b03831660009081526001602090815260408083209390935560049052205460ff1615612823576001600160a01b0382166000908152600260205260409020546128099084906133a6565b6001600160a01b0383166000908152600260205260409020555b8215610fed576040518381526001600160a01b0383169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611d4f565b60085460009081908161287b6009600a6134c4565b612889906305f5e1006134d3565b905060005b601e548110156129ea578260016000601e84815481106128b0576128b0613361565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061291b57508160026000601e84815481106128f4576128f4613361565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156129485760085461292f6009600a6134c4565b61293d906305f5e1006134d3565b945094505050509091565b60016000601e838154811061295f5761295f613361565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461298e90846134f2565b925060026000601e83815481106129a7576129a7613361565b60009182526020808320909101546001600160a01b031683528201929092526040019020546129d690836134f2565b9150806129e28161338d565b91505061288e565b506129f76009600a6134c4565b612a05906305f5e1006134d3565b600854612a1291906133be565b821015612a4057600854612a286009600a6134c4565b612a36906305f5e1006134d3565b9350935050509091565b90939092509050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612a7e57612a7e613361565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b209190613555565b81600181518110612b3357612b33613361565b60200260200101906001600160a01b031690816001600160a01b031681525050612b7e307f000000000000000000000000000000000000000000000000000000000000000084611c37565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612bd39085906000908690309042906004016135b6565b600060405180830381600087803b158015612bed57600080fd5b505af1158015610ebe573d6000803e3d6000fd5b612c2c307f000000000000000000000000000000000000000000000000000000000000000084611c37565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719823085600080612c736000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612cdb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d0091906135f2565b5050505050565b601b805460ff191660011790556000612d1e612283565b612d2890836134d3565b6001600160a01b038416600090815260016020526040902054909150612d4f9082906134f2565b6001600160a01b03841660009081526001602090815260408083209390935560049052205460ff1615612dba576001600160a01b038316600090815260026020526040902054612da09083906134f2565b6001600160a01b0384166000908152600260205260409020555b30600090815260016020526040902054612dd59082906133a6565b30600081815260016020526040908190209290925590516001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612e269086815260200190565b60405180910390a3612e388284612e47565b5050601b805460ff1916905550565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e7c57612e7c613361565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1e9190613555565b81600181518110612f3157612f31613361565b60200260200101906001600160a01b031690816001600160a01b031681525050612f7c307f000000000000000000000000000000000000000000000000000000000000000085611c37565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612fd19086906000908690889042906004016135b6565b600060405180830381600087803b158015612feb57600080fd5b505af1158015612fff573d6000803e3d6000fd5b50505050505050565b801515811461301657600080fd5b50565b60008060006040848603121561302e57600080fd5b833567ffffffffffffffff8082111561304657600080fd5b818601915086601f83011261305a57600080fd5b81358181111561306957600080fd5b8760208260051b850101111561307e57600080fd5b6020928301955093505084013561309481613008565b809150509250925092565b600080604083850312156130b257600080fd5b82356130bd81613008565b915060208301356130cd81613008565b809150509250929050565b600080600080600060a086880312156130f057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b8181101561314057858101830151858201604001528201613124565b81811115613152576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561317a57600080fd5b5035919050565b6001600160a01b038116811461301657600080fd5b600080604083850312156131a957600080fd5b82356131b481613181565b946020939093013593505050565b6000602082840312156131d457600080fd5b813561114581613181565b6000806000606084860312156131f457600080fd5b83356131ff81613181565b9250602084013561320f81613181565b929592945050506040919091013590565b60006020828403121561323257600080fd5b813561114581613008565b60008060006060848603121561325257600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561327f57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156132ae57600080fd5b82356132b981613181565b915060208301356130cd81613181565b600080604083850312156132dc57600080fd5b82356131b481613008565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161339f5761339f613377565b5060010190565b600082198211156133b9576133b9613377565b500190565b6000826133db57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561341b57816000190482111561340157613401613377565b8085161561340e57918102915b93841c93908002906133e5565b509250929050565b60008261343257506001610f39565b8161343f57506000610f39565b8160018114613455576002811461345f5761347b565b6001915050610f39565b60ff84111561347057613470613377565b50506001821b610f39565b5060208310610133831016604e8410600b841016171561349e575081810a610f39565b6134a883836133e0565b80600019048211156134bc576134bc613377565b029392505050565b600061114560ff841683613423565b60008160001904831182151516156134ed576134ed613377565b500290565b60008282101561350457613504613377565b500390565b60006020828403121561351b57600080fd5b5051919050565b60006020828403121561353457600080fd5b815161114581613008565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561356757600080fd5b815161114581613181565b600081518084526020808501945080840160005b838110156135ab5781516001600160a01b031687529582019590820190600101613586565b509495945050505050565b85815284602082015260a0604082015260006135d560a0830186613572565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561360757600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f6ccb4d95bde39c9ff4a8afa8390f33bd516d77935cba11cd8e004974d47cd7264736f6c634300080f0033
Deployed Bytecode
0x6080604052600436106103f25760003560e01c8063682e54d511610208578063a61699c411610118578063d10ae165116100ab578063f682cb691161007a578063f682cb6914610c91578063fd748c3014610ca7578063fe575a8714610cbd578063fed0d2a114610ced578063ffb54a9914610d0357600080fd5b8063d10ae16514610bec578063dd62ed3e14610c0b578063e092034914610c51578063f2fde38b14610c7157600080fd5b8063bd9ab537116100e7578063bd9ab53714610b50578063c7c6df2514610b70578063d067ed2e14610b9d578063d0e1032614610bcc57600080fd5b8063a61699c414610aca578063a9059cbb14610aea578063b40f946914610b0a578063bb4411e014610b3a57600080fd5b8063896648c11161019b578063955748ee1161016a578063955748ee14610a5457806395d89b411461049f578063962dfc7514610a6a578063a26c833a14610a8a578063a457c2d714610aaa57600080fd5b8063896648c1146109dc5780638da5cb5b146109f65780638e2eee8414610a145780638ecaddf314610a3457600080fd5b806370a08231116101d757806370a0823114610971578063715018a61461099157806377b54bad146109a657806382247ec0146109c657600080fd5b8063682e54d5146108f85780636bc87c3a146109255780636ce46bc31461093b5780636f6413461461095b57600080fd5b806328f0b257116103035780634be9d8691161029657806355e7fe011161026557806355e7fe01146108085780635921652f1461081e5780635e562f3b14610834578063617c62a11461085457806367dc9e921461089857600080fd5b80634be9d869146107785780634d09deb31461079857806352390c02146107b85780635342acb4146107d857600080fd5b80633206b4aa116102d25780633206b4aa146106ef578063395093511461070557806349bd5a5e146107255780634a74bb021461075957600080fd5b806328f0b2571461067c5780632d838119146106925780633121c7c0146106b2578063313ce567146106c857600080fd5b80630b285b1f116103865780631da1db5e116103555780631da1db5e146105f05780631de125161461061057806322976e0d1461062657806323b872dd1461063c578063269d1faa1461065c57600080fd5b80630b285b1f1461052f5780631694505e1461055f57806318160ddd146105ab5780631c3c4fec146105c057600080fd5b806304a66b48116103c257806304a66b481461047f57806306fdde031461049f57806309302dc6146104df578063095ea7b3146104ff57600080fd5b8062108683146103fe57806301ea01a514610420578063034c4897146104495780630445b6671461046957600080fd5b366103f957005b600080fd5b34801561040a57600080fd5b5061041e610419366004613019565b610d1d565b005b34801561042c57600080fd5b5061043660185481565b6040519081526020015b60405180910390f35b34801561045557600080fd5b5061041e61046436600461309f565b610de6565b34801561047557600080fd5b5061043660225481565b34801561048b57600080fd5b5061041e61049a3660046130d8565b610e34565b3480156104ab57600080fd5b506104d2604051806040016040528060078152602001660455448343030360cc1b81525081565b6040516104409190613113565b3480156104eb57600080fd5b5061041e6104fa366004613168565b610ec6565b34801561050b57600080fd5b5061051f61051a366004613196565b610f28565b6040519015158152602001610440565b34801561053b57600080fd5b5061051f61054a3660046131c2565b60046020526000908152604090205460ff1681565b34801561056b57600080fd5b506105937f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610440565b3480156105b757600080fd5b50610436610f3f565b3480156105cc57600080fd5b506105d5610f5c565b60408051938452602084019290925290820152606001610440565b3480156105fc57600080fd5b5061041e61060b366004613168565b610f7b565b34801561061c57600080fd5b50610436601d5481565b34801561063257600080fd5b5061043660105481565b34801561064857600080fd5b5061051f6106573660046131df565b610ff2565b34801561066857600080fd5b50601554610593906001600160a01b031681565b34801561068857600080fd5b5061043660135481565b34801561069e57600080fd5b506104366106ad366004613168565b6110c8565b3480156106be57600080fd5b5061043660245481565b3480156106d457600080fd5b506106dd600981565b60405160ff9091168152602001610440565b3480156106fb57600080fd5b50610436600d5481565b34801561071157600080fd5b5061051f610720366004613196565b61114c565b34801561073157600080fd5b506105937f000000000000000000000000d1d4b42fdc092a03ae5ecaa05f078b2853fa825b81565b34801561076557600080fd5b50601b5461051f90610100900460ff1681565b34801561078457600080fd5b5061041e610793366004613019565b611183565b3480156107a457600080fd5b506105936107b3366004613168565b61123d565b3480156107c457600080fd5b5061041e6107d33660046131c2565b611267565b3480156107e457600080fd5b5061051f6107f33660046131c2565b601f6020526000908152604090205460ff1681565b34801561081457600080fd5b5061043660095481565b34801561082a57600080fd5b5061043660255481565b34801561084057600080fd5b5061041e61084f366004613220565b6113ba565b34801561086057600080fd5b506108696113f7565b6040805196875260208701959095529385019290925260608401526080830152151560a082015260c001610440565b3480156108a457600080fd5b50600d54601654601354600954600b54601054600a54600c54604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001610440565b34801561090457600080fd5b506104366109133660046131c2565b60026020526000908152604090205481565b34801561093157600080fd5b5061043660165481565b34801561094757600080fd5b5061041e61095636600461323d565b611447565b34801561096757600080fd5b50610436600f5481565b34801561097d57600080fd5b5061043661098c3660046131c2565b61147f565b34801561099d57600080fd5b5061041e6114de565b3480156109b257600080fd5b5061051f6109c1366004613196565b611552565b3480156109d257600080fd5b50610436601c5481565b3480156109e857600080fd5b5060055461051f9060ff1681565b348015610a0257600080fd5b506000546001600160a01b0316610593565b348015610a2057600080fd5b5061041e610a2f366004613019565b611661565b348015610a4057600080fd5b5061041e610a4f366004613269565b6116fa565b348015610a6057600080fd5b50610436600b5481565b348015610a7657600080fd5b50601254610593906001600160a01b031681565b348015610a9657600080fd5b5061041e610aa53660046131c2565b611738565b348015610ab657600080fd5b5061051f610ac5366004613196565b6118ee565b348015610ad657600080fd5b5061041e610ae536600461329b565b6119a5565b348015610af657600080fd5b5061051f610b05366004613196565b6119fd565b348015610b1657600080fd5b5061051f610b253660046131c2565b60216020526000908152604090205460ff1681565b348015610b4657600080fd5b50610436600c5481565b348015610b5c57600080fd5b5061041e610b6b366004613168565b611a0a565b348015610b7c57600080fd5b50610436610b8b3660046131c2565b60016020526000908152604090205481565b348015610ba957600080fd5b5061051f610bb83660046131c2565b602080526000908152604090205460ff1681565b348015610bd857600080fd5b5061041e610be73660046132c9565b611a6c565b348015610bf857600080fd5b5060075461051f90610100900460ff1681565b348015610c1757600080fd5b50610436610c2636600461329b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610c5d57600080fd5b5061041e610c6c366004613019565b611ab4565b348015610c7d57600080fd5b5061041e610c8c3660046131c2565b611b4d565b348015610c9d57600080fd5b50610436600a5481565b348015610cb357600080fd5b50610436601a5481565b348015610cc957600080fd5b5061051f610cd83660046131c2565b60066020526000908152604090205460ff1681565b348015610cf957600080fd5b5061043660235481565b348015610d0f57600080fd5b5060075461051f9060ff1681565b6000546001600160a01b03163314610d505760405162461bcd60e51b8152600401610d47906132e7565b60405180910390fd5b6101f58210610d715760405162461bcd60e51b8152600401610d479061331c565b60005b82811015610de0578160216000868685818110610d9357610d93613361565b9050602002016020810190610da891906131c2565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610dd98161338d565b9050610d74565b50505050565b6000546001600160a01b03163314610e105760405162461bcd60e51b8152600401610d47906132e7565b6007805461ffff191692151561ff0019169290921761010091151591909102179055565b6000546001600160a01b03163314610e5e5760405162461bcd60e51b8152600401610d47906132e7565b6000818385610e6d888a6133a6565b610e7791906133a6565b610e8191906133a6565b610e8b91906133a6565b90506019610e9a6064836133be565b10610ea457600080fd5b601086905560168590556013849055600d83905560188290555b505050505050565b6000546001600160a01b03163314610ef05760405162461bcd60e51b8152600401610d47906132e7565b6103e881610f006009600a6134c4565b610f0e906305f5e1006134d3565b610f1891906134d3565b610f2291906133be565b601c5550565b6000610f35338484611c37565b5060015b92915050565b610f4b6009600a6134c4565b610f59906305f5e1006134d3565b81565b6000806000602254610f6d3061147f565b600f54925092509250909192565b6000546001600160a01b03163314610fa55760405162461bcd60e51b8152600401610d47906132e7565b60006064610fb347846134d3565b610fbd91906133be565b604051909150339082156108fc029083906000818181858888f19350505050158015610fed573d6000803e3d6000fd5b505050565b6000610fff848484611d5c565b6001600160a01b03841660009081526003602090815260408083203384529091529020548211156110835760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610d47565b6001600160a01b0384166000908152600360209081526040808320338085529252909120546110be9186916110b99086906134f2565b611c37565b5060019392505050565b600060085482111561112f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610d47565b6000611139612283565b905061114581846133be565b9392505050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610f359185906110b99086906133a6565b6000546001600160a01b031633146111ad5760405162461bcd60e51b8152600401610d47906132e7565b6101f582106111ce5760405162461bcd60e51b8152600401610d479061331c565b60005b82811015610de05781602060008686858181106111f0576111f0613361565b905060200201602081019061120591906131c2565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556112368161338d565b90506111d1565b601e818154811061124d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146112915760405162461bcd60e51b8152600401610d47906132e7565b6001600160a01b03811660009081526004602052604090205460ff16156112fa5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610d47565b6001600160a01b03811660009081526001602052604090205415611354576001600160a01b03811660009081526001602052604090205461133a906110c8565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600460205260408120805460ff19166001908117909155601e805491820181559091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500180546001600160a01b0319169091179055565b6000546001600160a01b031633146113e45760405162461bcd60e51b8152600401610d47906132e7565b6005805460ff1916911515919091179055565b600080600080600080601d54601c546009600a61141491906134c4565b611422906305f5e1006134d3565b60085461142d612283565b600754949b939a509198509650945060ff90911692509050565b6000546001600160a01b031633146114715760405162461bcd60e51b8152600401610d47906132e7565b602492909255602355602555565b6001600160a01b03811660009081526004602052604081205460ff16156114bc57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610f39906110c8565b6000546001600160a01b031633146115085760405162461bcd60e51b8152600401610d47906132e7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600080546001600160a01b0316331461157d5760405162461bcd60e51b8152600401610d47906132e7565b816000036115f0576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156115c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ed9190613509565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561163d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111459190613522565b6000546001600160a01b0316331461168b5760405162461bcd60e51b8152600401610d47906132e7565b60005b82811015610de05781600660008686858181106116ad576116ad613361565b90506020020160208101906116c291906131c2565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556116f38161338d565b905061168e565b6000546001600160a01b031633146117245760405162461bcd60e51b8152600401610d47906132e7565b600a93909355600991909155600b55600c55565b6000546001600160a01b031633146117625760405162461bcd60e51b8152600401610d47906132e7565b6001600160a01b03811660009081526004602052604090205460ff166117ca5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610d47565b60005b601e548110156118ea57816001600160a01b0316601e82815481106117f4576117f4613361565b6000918252602090912001546001600160a01b0316036118d857601e805461181e906001906134f2565b8154811061182e5761182e613361565b600091825260209091200154601e80546001600160a01b03909216918390811061185a5761185a613361565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600490925220805460ff19169055601e8054806118b2576118b261353f565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806118e28161338d565b9150506117cd565b5050565b3360009081526003602090815260408083206001600160a01b038616845290915281205482111561196f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d47565b3360008181526003602090815260408083206001600160a01b0388168452909152902054610f35919085906110b99086906134f2565b6000546001600160a01b031633146119cf5760405162461bcd60e51b8152600401610d47906132e7565b601280546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b6000610f35338484611d5c565b6000546001600160a01b03163314611a345760405162461bcd60e51b8152600401610d47906132e7565b6103e881611a446009600a6134c4565b611a52906305f5e1006134d3565b611a5c91906134d3565b611a6691906133be565b601d5550565b6000546001600160a01b03163314611a965760405162461bcd60e51b8152600401610d47906132e7565b601b80549215156101000261ff001990931692909217909155602255565b6000546001600160a01b03163314611ade5760405162461bcd60e51b8152600401610d47906132e7565b60005b82811015610de05781601f6000868685818110611b0057611b00613361565b9050602002016020810190611b1591906131c2565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611b468161338d565b9050611ae1565b6000546001600160a01b03163314611b775760405162461bcd60e51b8152600401610d47906132e7565b6001600160a01b038116611bdc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d47565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611c995760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d47565b6001600160a01b038216611cfa5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d47565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000546001600160a01b03848116911614801590611d8857506000546001600160a01b03838116911614155b15611e475760075460ff16611dd65760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610d47565b600754610100900460ff168015611e1e57507f000000000000000000000000d1d4b42fdc092a03ae5ecaa05f078b2853fa825b6001600160a01b0316836001600160a01b0316145b15611e47576001600160a01b0382166000908152600660205260409020805460ff191660011790555b60055460ff168015611e615750600754610100900460ff16155b15611ebd576001600160a01b03831660009081526006602052604090205460ff1615611ebd5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610d47565b601d5481111580611ee557506001600160a01b038316600090815260208052604090205460ff165b80611f0757506001600160a01b038216600090815260208052604090205460ff165b611f4b5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610d47565b6001600160a01b03831660009081526021602052604090205460ff16158015611f8d57506001600160a01b03821660009081526021602052604090205460ff16155b8015611fcb57507f000000000000000000000000d1d4b42fdc092a03ae5ecaa05f078b2853fa825b6001600160a01b0316826001600160a01b031614155b1561203557601c5481611fdd8461147f565b611fe791906133a6565b11156120355760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610d47565b60006120403061147f565b9050601d54811061205d576001601d5461205a91906134f2565b90505b602254811080159081906120745750601b5460ff16155b80156120b257507f000000000000000000000000d1d4b42fdc092a03ae5ecaa05f078b2853fa825b6001600160a01b0316856001600160a01b031614155b80156120c55750601b54610100900460ff165b156120d85760225491506120d8826122a6565b601b5460ff1615801561211d57507f000000000000000000000000d1d4b42fdc092a03ae5ecaa05f078b2853fa825b6001600160a01b0316856001600160a01b031614155b80156121305750601b54610100900460ff165b1561216f57600954601554600b5461215292916001600160a01b031690612335565b600a54601254600c5461216f92916001600160a01b031690612335565b50506001600160a01b0383166000908152601f602052604090205460019060ff16806121b357506001600160a01b0383166000908152601f602052604090205460ff165b156121c3575060006121c3612374565b60008060008060008060008060006121dc8b8d8f6123b4565b9850985098509850985098509850985098506121fc8d8d8d8c8a8d6125ce565b8660085461220a91906134f2565b600855600f5461221b9083906133a6565b600f55896122305761222b612754565b612274565b6012546122479086906001600160a01b031661277d565b612251843061277d565b6015546122689084906001600160a01b031661277d565b6122748161dead61277d565b50505050505050505050505050565b6000806000612290612866565b909250905061229f81836133be565b9250505090565b601b805460ff1916600117905560006122c06002836133be565b9050476122cc82612a49565b60006122d882476134f2565b90506122e48382612c01565b60408051858152602081018590529081018290527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601b805460ff191690555050565b8260000361234257505050565b601d5483111561235257601d5492505b61235b8261147f565b61236582856133a6565b11610fed57610fed8284612d07565b601054601155601654601755601354601455600d54600e556018546019556123b2600080808080601094909455601692909255601355600d55601855565b565b60008060008060008060008060008060255490507f000000000000000000000000d1d4b42fdc092a03ae5ecaa05f078b2853fa825b6001600160a01b03168c6001600160a01b03160361240a5750602354612448565b7f000000000000000000000000d1d4b42fdc092a03ae5ecaa05f078b2853fa825b6001600160a01b03168b6001600160a01b03160361244857506024545b601a546124569060646134d3565b816010548f61246591906134d3565b61246f91906134d3565b61247991906133be565b9550601a54606461248a91906134d3565b816016548f61249991906134d3565b6124a391906134d3565b6124ad91906133be565b9450601a5460646124be91906134d3565b816013548f6124cd91906134d3565b6124d791906134d3565b6124e191906133be565b9350601a5460646124f291906134d3565b81600d548f61250191906134d3565b61250b91906134d3565b61251591906133be565b9250601a54606461252691906134d3565b816018548f61253591906134d3565b61253f91906134d3565b61254991906133be565b9150818385612558888a6133a6565b61256291906133a6565b61256c91906133a6565b61257691906133a6565b612580908e6134f2565b965061258a612283565b61259490846134d3565b975061259e612283565b6125a8908e6134d3565b99506125b2612283565b6125bc90886134d3565b98505093979b92969a50939750939750565b6001600160a01b0386166000908152600160205260409020546125f29084906134f2565b6001600160a01b03871660009081526001602090815260408083209390935560049052205460ff161561265d576001600160a01b0386166000908152600260205260409020546126439085906134f2565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526004602052604090205460ff16156126bc576001600160a01b0385166000908152600260205260409020546126a29083906133a6565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b0385166000908152600160205260409020546126e09082906133a6565b6001600160a01b0386166000908152600160205260409020558115610ebe57846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161274491815260200190565b60405180910390a3505050505050565b6123b2601154601754601454600e54601954601094909455601692909255601355600d55601855565b6000612787612283565b61279190846134d3565b6001600160a01b0383166000908152600160205260409020549091506127b89082906133a6565b6001600160a01b03831660009081526001602090815260408083209390935560049052205460ff1615612823576001600160a01b0382166000908152600260205260409020546128099084906133a6565b6001600160a01b0383166000908152600260205260409020555b8215610fed576040518381526001600160a01b0383169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611d4f565b60085460009081908161287b6009600a6134c4565b612889906305f5e1006134d3565b905060005b601e548110156129ea578260016000601e84815481106128b0576128b0613361565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061291b57508160026000601e84815481106128f4576128f4613361565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156129485760085461292f6009600a6134c4565b61293d906305f5e1006134d3565b945094505050509091565b60016000601e838154811061295f5761295f613361565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461298e90846134f2565b925060026000601e83815481106129a7576129a7613361565b60009182526020808320909101546001600160a01b031683528201929092526040019020546129d690836134f2565b9150806129e28161338d565b91505061288e565b506129f76009600a6134c4565b612a05906305f5e1006134d3565b600854612a1291906133be565b821015612a4057600854612a286009600a6134c4565b612a36906305f5e1006134d3565b9350935050509091565b90939092509050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612a7e57612a7e613361565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b209190613555565b81600181518110612b3357612b33613361565b60200260200101906001600160a01b031690816001600160a01b031681525050612b7e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c37565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612bd39085906000908690309042906004016135b6565b600060405180830381600087803b158015612bed57600080fd5b505af1158015610ebe573d6000803e3d6000fd5b612c2c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c37565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719823085600080612c736000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612cdb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d0091906135f2565b5050505050565b601b805460ff191660011790556000612d1e612283565b612d2890836134d3565b6001600160a01b038416600090815260016020526040902054909150612d4f9082906134f2565b6001600160a01b03841660009081526001602090815260408083209390935560049052205460ff1615612dba576001600160a01b038316600090815260026020526040902054612da09083906134f2565b6001600160a01b0384166000908152600260205260409020555b30600090815260016020526040902054612dd59082906133a6565b30600081815260016020526040908190209290925590516001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612e269086815260200190565b60405180910390a3612e388284612e47565b5050601b805460ff1916905550565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e7c57612e7c613361565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1e9190613555565b81600181518110612f3157612f31613361565b60200260200101906001600160a01b031690816001600160a01b031681525050612f7c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d85611c37565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612fd19086906000908690889042906004016135b6565b600060405180830381600087803b158015612feb57600080fd5b505af1158015612fff573d6000803e3d6000fd5b50505050505050565b801515811461301657600080fd5b50565b60008060006040848603121561302e57600080fd5b833567ffffffffffffffff8082111561304657600080fd5b818601915086601f83011261305a57600080fd5b81358181111561306957600080fd5b8760208260051b850101111561307e57600080fd5b6020928301955093505084013561309481613008565b809150509250925092565b600080604083850312156130b257600080fd5b82356130bd81613008565b915060208301356130cd81613008565b809150509250929050565b600080600080600060a086880312156130f057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b8181101561314057858101830151858201604001528201613124565b81811115613152576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561317a57600080fd5b5035919050565b6001600160a01b038116811461301657600080fd5b600080604083850312156131a957600080fd5b82356131b481613181565b946020939093013593505050565b6000602082840312156131d457600080fd5b813561114581613181565b6000806000606084860312156131f457600080fd5b83356131ff81613181565b9250602084013561320f81613181565b929592945050506040919091013590565b60006020828403121561323257600080fd5b813561114581613008565b60008060006060848603121561325257600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561327f57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156132ae57600080fd5b82356132b981613181565b915060208301356130cd81613181565b600080604083850312156132dc57600080fd5b82356131b481613008565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161339f5761339f613377565b5060010190565b600082198211156133b9576133b9613377565b500190565b6000826133db57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561341b57816000190482111561340157613401613377565b8085161561340e57918102915b93841c93908002906133e5565b509250929050565b60008261343257506001610f39565b8161343f57506000610f39565b8160018114613455576002811461345f5761347b565b6001915050610f39565b60ff84111561347057613470613377565b50506001821b610f39565b5060208310610133831016604e8410600b841016171561349e575081810a610f39565b6134a883836133e0565b80600019048211156134bc576134bc613377565b029392505050565b600061114560ff841683613423565b60008160001904831182151516156134ed576134ed613377565b500290565b60008282101561350457613504613377565b500390565b60006020828403121561351b57600080fd5b5051919050565b60006020828403121561353457600080fd5b815161114581613008565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561356757600080fd5b815161114581613181565b600081518084526020808501945080840160005b838110156135ab5781516001600160a01b031687529582019590820190600101613586565b509495945050505050565b85815284602082015260a0604082015260006135d560a0830186613572565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561360757600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f6ccb4d95bde39c9ff4a8afa8390f33bd516d77935cba11cd8e004974d47cd7264736f6c634300080f0033
Deployed Bytecode Sourcemap
5996:19338:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14958:286;;;;;;;;;;-1:-1:-1;14958:286:0;;;;;:::i;:::-;;:::i;:::-;;7561:30;;;;;;;;;;;;;;;;;;;1038:25:1;;;1026:2;1011:18;7561:30:0;;;;;;;;13584:115;;;;;;;;;;-1:-1:-1;13584:115:0;;;;;:::i;:::-;;:::i;8254:58::-;;;;;;;;;;;;;;;;19850:361;;;;;;;;;;-1:-1:-1;19850:361:0;;;;;:::i;:::-;;:::i;6699:39::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6699:39:0;;;;;;;;;;;;:::i;13863:158::-;;;;;;;;;;-1:-1:-1;13863:158:0;;;;;:::i;:::-;;:::i;10351:146::-;;;;;;;;;;-1:-1:-1;10351:146:0;;;;;:::i;:::-;;:::i;:::-;;;3322:14:1;;3315:22;3297:41;;3285:2;3270:18;10351:146:0;3157:187:1;6269:44:0;;;;;;;;;;-1:-1:-1;6269:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7770:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3791:32:1;;;3773:51;;3761:2;3746:18;7770:51:0;3601:229:1;6562:62:0;;;;;;;;;;;;;:::i;11692:230::-;;;;;;;;;;;;;:::i;:::-;;;;4037:25:1;;;4093:2;4078:18;;4071:34;;;;4121:18;;;4114:34;4025:2;4010:18;11692:230:0;3835:319:1;15252:200:0;;;;;;;;;;-1:-1:-1;15252:200:0;;;;;:::i;:::-;;:::i;7991:49::-;;;;;;;;;;;;;;;;7177:33;;;;;;;;;;;;;;;;10502:346;;;;;;;;;;-1:-1:-1;10502:346:0;;;;;:::i;:::-;;:::i;7415:38::-;;;;;;;;;;-1:-1:-1;7415:38:0;;;;-1:-1:-1;;;;;7415:38:0;;;7321:32;;;;;;;;;;;;;;;;12624:238;;;;;;;;;;-1:-1:-1;12624:238:0;;;;;:::i;:::-;;:::i;8358:34::-;;;;;;;;;;;;;;;;6524;;;;;;;;;;;;6557:1;6524:34;;;;;5016:4:1;5004:17;;;4986:36;;4974:2;4959:18;6524:34:0;4844:184:1;7024:35:0;;;;;;;;;;;;;;;;10853:202;;;;;;;;;;-1:-1:-1;10853:202:0;;;;;:::i;:::-;;:::i;7825:38::-;;;;;;;;;;;;;;;7892:40;;;;;;;;;;-1:-1:-1;7892:40:0;;;;;;;;;;;14674:279;;;;;;;;;;-1:-1:-1;14674:279:0;;;;;:::i;:::-;;:::i;8046:26::-;;;;;;;;;;-1:-1:-1;8046:26:0;;;;;:::i;:::-;;:::i;12867:315::-;;;;;;;;;;-1:-1:-1;12867:315:0;;;;;:::i;:::-;;:::i;8076:50::-;;;;;;;;;;-1:-1:-1;8076:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6790:64;;;;;;;;;;;;;;;;8396:39;;;;;;;;;;;;;;;;14182:92;;;;;;;;;;-1:-1:-1;14182:92:0;;;;;:::i;:::-;;:::i;11385:302::-;;;;;;;;;;;;;:::i;:::-;;;;5768:25:1;;;5824:2;5809:18;;5802:34;;;;5852:18;;;5845:34;;;;5910:2;5895:18;;5888:34;5953:3;5938:19;;5931:35;6010:14;6003:22;5997:3;5982:19;;5975:51;5755:3;5740:19;11385:302:0;5487:545:1;11927:505:0;;;;;;;;;;-1:-1:-1;12255:14:0;;12271:13;;12290:12;;12303:28;;12332:21;;12359:13;;12373:29;;12404:22;;11927:505;;;6380:25:1;;;6436:2;6421:18;;6414:34;;;;6464:18;;;6457:34;;;;6522:2;6507:18;;6500:34;;;;6565:3;6550:19;;6543:35;6609:3;6594:19;;6587:35;6653:3;6638:19;;6631:35;6697:3;6682:19;;6675:35;6367:3;6352:19;11927:505:0;6037:679:1;6140:49:0;;;;;;;;;;-1:-1:-1;6140:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;7461:34;;;;;;;;;;;;;;;;19248:177;;;;;;;;;;-1:-1:-1;19248:177:0;;;;;:::i;:::-;;:::i;7125:44::-;;;;;;;;;;;;;;;;9852:198;;;;;;;;;;-1:-1:-1;9852:198:0;;;;;:::i;:::-;;:::i;5103:148::-;;;;;;;;;;;;;:::i;15457:258::-;;;;;;;;;;-1:-1:-1;15457:258:0;;;;;:::i;:::-;;:::i;7943:44::-;;;;;;;;;;;;;;;;6320:32;;;;;;;;;;-1:-1:-1;6320:32:0;;;;;;;;4678:78;;;;;;;;;;-1:-1:-1;4724:7:0;4745:6;-1:-1:-1;;;;;4745:6:0;4678:78;;14279:188;;;;;;;;;;-1:-1:-1;14279:188:0;;;;;:::i;:::-;;:::i;19430:413::-;;;;;;;;;;-1:-1:-1;19430:413:0;;;;;:::i;:::-;;:::i;6931:40::-;;;;;;;;;;;;;;;;7274:39;;;;;;;;;;-1:-1:-1;7274:39:0;;;;-1:-1:-1;;;;;7274:39:0;;;13187:392;;;;;;;;;;-1:-1:-1;13187:392:0;;;;;:::i;:::-;;:::i;11060:320::-;;;;;;;;;;-1:-1:-1;11060:320:0;;;;;:::i;:::-;;:::i;12437:182::-;;;;;;;;;;-1:-1:-1;12437:182:0;;;;;:::i;:::-;;:::i;10055:152::-;;;;;;;;;;-1:-1:-1;10055:152:0;;;;;:::i;:::-;;:::i;8189:58::-;;;;;;;;;;-1:-1:-1;8189:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6975:41;;;;;;;;;;;;;;;;13704:153;;;;;;;;;;-1:-1:-1;13704:153:0;;;;;:::i;:::-;;:::i;6084:52::-;;;;;;;;;;-1:-1:-1;6084:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;8130:55;;;;;;;;;;-1:-1:-1;8130:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14027:150;;;;;;;;;;-1:-1:-1;14027:150:0;;;;;:::i;:::-;;:::i;6443:26::-;;;;;;;;;;-1:-1:-1;6443:26:0;;;;;;;;;;;10212:134;;;;;;;;;;-1:-1:-1;10212:134:0;;;;;:::i;:::-;-1:-1:-1;;;;;10314:18:0;;;10293:7;10314:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10212:134;14472:197;;;;;;;;;;-1:-1:-1;14472:197:0;;;;;:::i;:::-;;:::i;4872:223::-;;;;;;;;;;-1:-1:-1;4872:223:0;;;;;:::i;:::-;;:::i;6858:65::-;;;;;;;;;;;;;;;;7725:39;;;;;;;;;;;;;;;;6356:46;;;;;;;;;;-1:-1:-1;6356:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8319:35;;;;;;;;;;;;;;;;6408:31;;;;;;;;;;-1:-1:-1;6408:31:0;;;;;;;;14958:286;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;;;;;;;;;15086:3:::1;15067:22:::0;::::1;15059:71;;;;-1:-1:-1::0;;;15059:71:0::1;;;;;;;:::i;:::-;15140:9;15135:105;15153:20:::0;;::::1;15135:105;;;15228:6;15186:25;:39;15212:9;;15222:1;15212:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15186:39:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15186:39:0;:48;;-1:-1:-1;;15186:48:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15175:3:::1;::::0;::::1;:::i;:::-;;;15135:105;;;;14958:286:::0;;;:::o;13584:115::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;13655:11:::1;:21:::0;;-1:-1:-1;;13681:13:0;13655:21;::::1;;-1:-1:-1::0;;13681:13:0;;;;;13655:21:::1;13681:13:::0;::::1;;::::0;;;::::1;;::::0;;13584:115::o;19850:361::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;19997:17:::1;20079:8:::0;20063:13;20049:11;20018:27:::1;20033:12:::0;20018;:27:::1;:::i;:::-;:42;;;;:::i;:::-;:58;;;;:::i;:::-;:69;;;;:::i;:::-;19997:90:::0;-1:-1:-1;20120:2:0::1;20104:13;20114:3;19997:90:::0;20104:13:::1;:::i;:::-;:18;20096:27;;;::::0;::::1;;19086:13:::0;:28;;;19119:13;:28;;;19152:12;:26;;;19183:14;:30;;;19218:9;:20;;;20128:78:::1;19992:219;19850:361:::0;;;;;:::o;13863:158::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;14012:4:::1;13985:22:::0;6612:12:::1;6557:1;6612:2;:12;:::i;:::-;6600:24;::::0;:9:::1;:24;:::i;:::-;13971:36;;;;:::i;:::-;13970:46;;;;:::i;:::-;13957:10;:59:::0;-1:-1:-1;13863:158:0:o;10351:146::-;10426:4;10437:39;1237:10;10460:7;10469:6;10437:8;:39::i;:::-;-1:-1:-1;10488:4:0;10351:146;;;;;:::o;6562:62::-;6612:12;6557:1;6612:2;:12;:::i;:::-;6600:24;;:9;:24;:::i;:::-;6562:62;:::o;11692:230::-;11740:21;11766:28;11799:32;11850:13;;11865:24;11883:4;11865:9;:24::i;:::-;11891:25;;11842:75;;;;;;11692:230;;;:::o;15252:200::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;15329:21:::1;15396:3;15353:40;15372:21;15353:16:::0;:40:::1;:::i;:::-;:46;;;;:::i;:::-;15404:43;::::0;15329:70;;-1:-1:-1;15412:10:0::1;::::0;15404:43;::::1;;;::::0;15329:70;;15404:43:::1;::::0;;;15329:70;15412:10;15404:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15324:128;15252:200:::0;:::o;10502:346::-;10600:4;10611:36;10621:6;10629:9;10640:6;10611:9;:36::i;:::-;-1:-1:-1;;;;;10661:19:0;;;;;;:11;:19;;;;;;;;1237:10;10661:33;;;;;;;;:43;-1:-1:-1;10661:43:0;10652:96;;;;-1:-1:-1;;;10652:96:0;;11423:2:1;10652:96:0;;;11405:21:1;11462:2;11442:18;;;11435:30;11501:34;11481:18;;;11474:62;-1:-1:-1;;;11552:18:1;;;11545:38;11600:19;;10652:96:0;11221:404:1;10652:96:0;-1:-1:-1;;;;;10785:19:0;;;;;;:11;:19;;;;;;;;1237:10;10785:33;;;;;;;;;10753:74;;10762:6;;10785:40;;10819:6;;10785:40;:::i;:::-;10753:8;:74::i;:::-;-1:-1:-1;10839:4:0;10502:346;;;;;:::o;12624:238::-;12690:7;12723:14;;12712:7;:25;;12704:80;;;;-1:-1:-1;;;12704:80:0;;11962:2:1;12704:80:0;;;11944:21:1;12001:2;11981:18;;;11974:30;12040:34;12020:18;;;12013:62;-1:-1:-1;;;12091:18:1;;;12084:40;12141:19;;12704:80:0;11760:406:1;12704:80:0;12789:19;12812:10;:8;:10::i;:::-;12789:33;-1:-1:-1;12835:21:0;12789:33;12835:7;:21;:::i;:::-;12827:30;12624:238;-1:-1:-1;;;12624:238:0:o;10853:202::-;1237:10;10941:4;10985:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10985:34:0;;;;;;;;;;10941:4;;10952:82;;10975:7;;10985:47;;11022:10;;10985:47;:::i;14674:279::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;14798:3:::1;14779:22:::0;::::1;14771:71;;;;-1:-1:-1::0;;;14771:71:0::1;;;;;;;:::i;:::-;14852:9;14847:102;14865:20:::0;;::::1;14847:102;;;14937:6;14898:22;:36;14921:9;;14931:1;14921:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14898:36:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14898:36:0;:45;;-1:-1:-1;;14898:45:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14887:3:::1;::::0;::::1;:::i;:::-;;;14847:102;;8046:26:::0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8046:26:0;;-1:-1:-1;8046:26:0;:::o;12867:315::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12944:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;12943:21;12935:61;;;::::0;-1:-1:-1;;;12935:61:0;;12373:2:1;12935:61:0::1;::::0;::::1;12355:21:1::0;12412:2;12392:18;;;12385:30;12451:29;12431:18;;;12424:57;12498:18;;12935:61:0::1;12171:351:1::0;12935:61:0::1;-1:-1:-1::0;;;;;13004:25:0;::::1;13032:1;13004:25:::0;;;:16:::1;:25;::::0;;;;;:29;13001:117:::1;;-1:-1:-1::0;;;;;13086:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;13066:46:::1;::::0;:19:::1;:46::i;:::-;-1:-1:-1::0;;;;;13041:22:0;::::1;;::::0;;;:13:::1;:22;::::0;;;;:71;13001:117:::1;-1:-1:-1::0;;;;;13122:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;13122:27:0::1;13145:4;13122:27:::0;;::::1;::::0;;;13154:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;13154:23:0::1;::::0;;::::1;::::0;;12867:315::o;14182:92::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;14246:13:::1;:23:::0;;-1:-1:-1;;14246:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14182:92::o;11385:302::-;11434:19;11458:22;11485:19;11509:24;11538:23;11566:16;11601:13;;11616:10;;6557:1;6612:2;:12;;;;:::i;:::-;6600:24;;:9;:24;:::i;:::-;11641:14;;11657:10;:8;:10::i;:::-;11669:11;;11593:89;;;;-1:-1:-1;11593:89:0;;-1:-1:-1;11593:89:0;-1:-1:-1;11593:89:0;-1:-1:-1;11669:11:0;;;;;-1:-1:-1;11385:302:0;-1:-1:-1;11385:302:0:o;19248:177::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;19341:13:::1;:20:::0;;;;19366:14:::1;:22:::0;19393:18:::1;:27:::0;19248:177::o;9852:198::-;-1:-1:-1;;;;;9936:20:0;;9918:7;9936:20;;;:11;:20;;;;;;;;9932:55;;;-1:-1:-1;;;;;;9965:22:0;;;;;:13;:22;;;;;;;9852:198::o;9932:55::-;-1:-1:-1;;;;;10019:25:0;;;;;;:16;:25;;;;;;9999:46;;:19;:46::i;5103:148::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;5210:1:::1;5194:6:::0;;5173:40:::1;::::0;-1:-1:-1;;;;;5194:6:0;;::::1;::::0;5173:40:::1;::::0;5210:1;;5173:40:::1;5241:1;5224:19:::0;;-1:-1:-1;;;;;;5224:19:0::1;::::0;;5103:148::o;15457:258::-;15548:12;4745:6;;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;15572:6:::1;15582:1;15572:11:::0;15569:81:::1;;15599:45;::::0;-1:-1:-1;;;15599:45:0;;15638:4:::1;15599:45;::::0;::::1;3773:51:1::0;-1:-1:-1;;;;;15599:30:0;::::1;::::0;::::1;::::0;3746:18:1;;15599:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15590:54;;15569:81;15661:49;::::0;-1:-1:-1;;;15661:49:0;;15691:10:::1;15661:49;::::0;::::1;12890:51:1::0;12957:18;;;12950:34;;;-1:-1:-1;;;;;15661:29:0;::::1;::::0;::::1;::::0;12863:18:1;;15661:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14279:188::-:0;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;14377:9:::1;14372:91;14388:20:::0;;::::1;14372:91;;;14451:6;14421:13;:27;14435:9;;14445:1;14435:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14421:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14421:27:0;:36;;-1:-1:-1;;14421:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14410:3:::1;::::0;::::1;:::i;:::-;;;14372:91;;19430:413:::0;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;19615:29:::1;:60:::0;;;;19680:28:::1;:58:::0;;;;19743:21:::1;:44:::0;19792:22:::1;:46:::0;19430:413::o;13187:392::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13269:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;13261:60;;;::::0;-1:-1:-1;;;13261:60:0;;13447:2:1;13261:60:0::1;::::0;::::1;13429:21:1::0;13486:2;13466:18;;;13459:30;13525:29;13505:18;;;13498:57;13572:18;;13261:60:0::1;13245:351:1::0;13261:60:0::1;13331:9;13326:249;13350:9;:16:::0;13346:20;::::1;13326:249;;;13399:7;-1:-1:-1::0;;;;;13383:23:0::1;:9;13393:1;13383:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;13383:12:0::1;:23:::0;13379:191:::1;;13430:9;13440:16:::0;;:20:::1;::::0;13459:1:::1;::::0;13440:20:::1;:::i;:::-;13430:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;13415:9:::1;:12:::0;;-1:-1:-1;;;;;13430:31:0;;::::1;::::0;13425:1;;13415:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;13415:46:0::1;-1:-1:-1::0;;;;;13415:46:0;;::::1;;::::0;;13468:22;;::::1;::::0;;:13:::1;:22:::0;;;;;;:26;;;13501:11:::1;:20:::0;;;;:28;;-1:-1:-1;;13501:28:0::1;::::0;;13536:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;13536:15:0;;;;;-1:-1:-1;;;;;;13536:15:0::1;::::0;;;;;13326:249:::1;13187:392:::0;:::o;13379:191::-:1;13368:3:::0;::::1;::::0;::::1;:::i;:::-;;;;13326:249;;;;13187:392:::0;:::o;11060:320::-;1237:10;11153:4;11173:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11173:34:0;;;;;;;;;;:53;-1:-1:-1;11173:53:0;11164:103;;;;-1:-1:-1;;;11164:103:0;;13935:2:1;11164:103:0;;;13917:21:1;13974:2;13954:18;;;13947:30;14013:34;13993:18;;;13986:62;-1:-1:-1;;;14064:18:1;;;14057:35;14109:19;;11164:103:0;13733:401:1;11164:103:0;1237:10;11305:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11305:34:0;;;;;;;;;;11272:87;;1237:10;11295:7;;11305:52;;11342:15;;11305:52;:::i;12437:182::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;12529:16:::1;:41:::0;;-1:-1:-1;;;;;12529:41:0;;::::1;-1:-1:-1::0;;;;;;12529:41:0;;::::1;;::::0;;;12575:15:::1;:39:::0;;;;;::::1;::::0;::::1;;::::0;;12437:182::o;10055:152::-;10133:4;10144:42;1237:10;10168:9;10179:6;10144:9;:42::i;13704:153::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;13848:4:::1;13823:20:::0;6612:12:::1;6557:1;6612:2;:12;:::i;:::-;6600:24;::::0;:9:::1;:24;:::i;:::-;13809:34;;;;:::i;:::-;13808:44;;;;:::i;:::-;13792:13;:60:::0;-1:-1:-1;13704:153:0:o;14027:150::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;14110:21:::1;:31:::0;;;::::1;;;;-1:-1:-1::0;;14110:31:0;;::::1;::::0;;;::::1;::::0;;;14146:13:::1;:26:::0;14027:150::o;14472:197::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;14575:9:::1;14570:95;14586:20:::0;;::::1;14570:95;;;14653:6;14619:17;:31;14637:9;;14647:1;14637:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14619:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14619:31:0;:40;;-1:-1:-1;;14619:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14608:3:::1;::::0;::::1;:::i;:::-;;;14570:95;;4872:223:::0;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4955:22:0;::::1;4947:73;;;::::0;-1:-1:-1;;;4947:73:0;;14341:2:1;4947:73:0::1;::::0;::::1;14323:21:1::0;14380:2;14360:18;;;14353:30;14419:34;14399:18;;;14392:62;-1:-1:-1;;;14470:18:1;;;14463:36;14516:19;;4947:73:0::1;14139:402:1::0;4947:73:0::1;5051:6;::::0;;5030:38:::1;::::0;-1:-1:-1;;;;;5030:38:0;;::::1;::::0;5051:6;::::1;::::0;5030:38:::1;::::0;::::1;5073:6;:17:::0;;-1:-1:-1;;;;;;5073:17:0::1;-1:-1:-1::0;;;;;5073:17:0;;;::::1;::::0;;;::::1;::::0;;4872:223::o;22122:310::-;-1:-1:-1;;;;;22209:19:0;;22201:68;;;;-1:-1:-1;;;22201:68:0;;14748:2:1;22201:68:0;;;14730:21:1;14787:2;14767:18;;;14760:30;14826:34;14806:18;;;14799:62;-1:-1:-1;;;14877:18:1;;;14870:34;14921:19;;22201:68:0;14546:400:1;22201:68:0;-1:-1:-1;;;;;22282:21:0;;22274:68;;;;-1:-1:-1;;;22274:68:0;;15153:2:1;22274:68:0;;;15135:21:1;15192:2;15172:18;;;15165:30;15231:34;15211:18;;;15204:62;-1:-1:-1;;;15282:18:1;;;15275:32;15324:19;;22274:68:0;14951:398:1;22274:68:0;-1:-1:-1;;;;;22349:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22395:32;;1038:25:1;;;22395:32:0;;1011:18:1;22395:32:0;;;;;;;;22122:310;;;:::o;22437:2273::-;4724:7;4745:6;-1:-1:-1;;;;;22516:15:0;;;4745:6;;22516:15;;;;:32;;-1:-1:-1;4724:7:0;4745:6;-1:-1:-1;;;;;22535:13:0;;;4745:6;;22535:13;;22516:32;22513:172;;;22563:11;;;;22555:43;;;;-1:-1:-1;;;22555:43:0;;15556:2:1;22555:43:0;;;15538:21:1;15595:2;15575:18;;;15568:30;-1:-1:-1;;;15614:18:1;;;15607:50;15674:18;;22555:43:0;15354:344:1;22555:43:0;22609:7;;;;;;;:32;;;;;22628:13;-1:-1:-1;;;;;22620:21:0;:4;-1:-1:-1;;;;;22620:21:0;;22609:32;22606:74;;;-1:-1:-1;;;;;22649:17:0;;;;;;:13;:17;;;;;:24;;-1:-1:-1;;22649:24:0;22669:4;22649:24;;;22606:74;22694:13;;;;:25;;;;-1:-1:-1;22712:7:0;;;;;;;22711:8;22694:25;22691:84;;;-1:-1:-1;;;;;22735:19:0;;;;;;:13;:19;;;;;;;;22734:20;22726:43;;;;-1:-1:-1;;;22726:43:0;;15905:2:1;22726:43:0;;;15887:21:1;15944:2;15924:18;;;15917:30;-1:-1:-1;;;15963:18:1;;;15956:41;16014:18;;22726:43:0;15703:335:1;22726:43:0;22802:13;;22792:6;:23;;22791:57;;;-1:-1:-1;;;;;;22820:28:0;;;;;;:22;:28;;;;;;;;22791:57;:87;;;-1:-1:-1;;;;;;22852:26:0;;;;;;:22;:26;;;;;;;;22791:87;22783:121;;;;-1:-1:-1;;;22783:121:0;;16245:2:1;22783:121:0;;;16227:21:1;16284:2;16264:18;;;16257:30;-1:-1:-1;;;16303:18:1;;;16296:51;16364:18;;22783:121:0;16043:345:1;22783:121:0;-1:-1:-1;;;;;22916:31:0;;;;;;:25;:31;;;;;;;;22915:32;:66;;;;-1:-1:-1;;;;;;22952:29:0;;;;;;:25;:29;;;;;;;;22951:30;22915:66;:89;;;;;22991:13;-1:-1:-1;;;;;22985:19:0;:2;-1:-1:-1;;;;;22985:19:0;;;22915:89;22911:184;;;23051:10;;23040:6;23024:13;23034:2;23024:9;:13::i;:::-;:22;;;;:::i;:::-;23023:38;;23015:74;;;;-1:-1:-1;;;23015:74:0;;16595:2:1;23015:74:0;;;16577:21:1;16634:2;16614:18;;;16607:30;16673:26;16653:18;;;16646:54;16717:18;;23015:74:0;16393:348:1;23015:74:0;23112:28;23143:24;23161:4;23143:9;:24::i;:::-;23112:55;;23207:13;;23183:20;:37;23180:105;;23274:1;23258:13;;:17;;;;:::i;:::-;23235:40;;23180:105;23348:13;;23324:37;;;;;;;23374:51;;-1:-1:-1;23409:16:0;;;;23408:17;23374:51;:87;;;;;23448:13;-1:-1:-1;;;;;23440:21:0;:4;-1:-1:-1;;;;;23440:21:0;;;23374:87;:123;;;;-1:-1:-1;23476:21:0;;;;;;;23374:123;23370:245;;;23543:13;;23520:36;;23569;23584:20;23569:14;:36::i;:::-;23629:16;;;;23628:17;:42;;;;;23657:13;-1:-1:-1;;;;;23649:21:0;:4;-1:-1:-1;;;;;23649:21:0;;;23628:42;:67;;;;-1:-1:-1;23674:21:0;;;;;;;23628:67;23625:272;;;23722:28;;23751:15;;23768:21;;23709:81;;23722:28;-1:-1:-1;;;;;23751:15:0;;23709:12;:81::i;:::-;23816:29;;23846:16;;23864:22;;23803:84;;23816:29;-1:-1:-1;;;;;23846:16:0;;23803:12;:84::i;:::-;-1:-1:-1;;;;;;;23941:23:0;;23914:12;23941:23;;;:17;:23;;;;;;23929:4;;23941:23;;;:48;;-1:-1:-1;;;;;;23968:21:0;;;;;;:17;:21;;;;;;;;23941:48;23938:105;;;-1:-1:-1;24009:5:0;24023:14;:12;:14::i;:::-;24052:15;24069:23;24094:19;24115:23;24140:18;24160;24180:17;24200:19;24221:14;24239:28;24250:6;24258:2;24262:4;24239:10;:28::i;:::-;24051:216;;;;;;;;;;;;;;;;;;24274:78;24292:4;24298:2;24302:6;24310:7;24319:15;24336;24274:17;:78::i;:::-;24393:11;24376:14;;:28;;;;:::i;:::-;24359:14;:45;24437:25;;:39;;24465:11;;24437:39;:::i;:::-;24409:25;:67;24487:7;24483:221;;24504:15;:13;:15::i;:::-;24483:221;;;24559:16;;24539:37;;24548:10;;-1:-1:-1;;;;;24559:16:0;24539:8;:37::i;:::-;24585:34;24594:10;24613:4;24585:8;:34::i;:::-;24647:15;;24628:35;;24637:9;;-1:-1:-1;;;;;24647:15:0;24628:8;:35::i;:::-;24669:29;24678:6;7675:42;24669:8;:29::i;:::-;22506:2204;;;;;;;;;;22437:2273;;;:::o;15723:145::-;15764:7;15779:15;15796;15815:19;:17;:19::i;:::-;15778:56;;-1:-1:-1;15778:56:0;-1:-1:-1;15846:17:0;15778:56;;15846:17;:::i;:::-;15839:24;;;;15723:145;:::o;20620:381::-;8646:16;:23;;-1:-1:-1;;8646:23:0;8665:4;8646:23;;;:16;20716::::1;20731:1;20716:12:::0;:16:::1;:::i;:::-;20695:37:::0;-1:-1:-1;20766:21:0::1;20794:28;20695:37:::0;20794:16:::1;:28::i;:::-;20827:18;20848:42;20872:18:::0;20848:21:::1;:42;:::i;:::-;20827:63;;20895:35;20908:10;20919;20895:12;:35::i;:::-;20942:52;::::0;;4037:25:1;;;4093:2;4078:18;;4071:34;;;4121:18;;;4114:34;;;20942:52:0::1;::::0;4025:2:1;4010:18;20942:52:0::1;;;;;;;-1:-1:-1::0;;8680:16:0;:24;;-1:-1:-1;;8680:24:0;;;-1:-1:-1;;20620:381:0:o;18133:373::-;18251:15;18270:1;18251:20;18248:42;;18133:373;;;:::o;18248:42::-;18317:13;;18299:15;:31;18296:78;;;18355:13;;18337:31;;18296:78;18422:20;18432:9;18422;:20::i;:::-;18384:32;18400:16;18384:15;:32;:::i;:::-;18383:59;18380:122;;18449:47;18470:9;18480:15;18449:20;:47::i;20216:247::-;20273:13;;20253:17;:33;20310:13;;20291:16;:32;20347:12;;20328:16;:31;20385:14;;20364:18;:35;20420:9;;20404:13;:25;20436:22;-1:-1:-1;;;;;19086:13:0;:28;;;;19119:13;:28;;;;19152:12;:26;19183:14;:30;19218:9;:20;18946:297;20436:22;20216:247::o;16434:1131::-;16532:15;16549:23;16574:19;16598:23;16623:18;16643;16663:17;16682:19;16703:14;16726:18;16747;;16726:39;;16788:13;-1:-1:-1;;;;;16775:26:0;:9;-1:-1:-1;;;;;16775:26:0;;16772:142;;-1:-1:-1;16822:14:0;;16772:142;;;16861:13;-1:-1:-1;;;;;16851:23:0;:6;-1:-1:-1;;;;;16851:23:0;;16848:66;;-1:-1:-1;16895:13:0;;16848:66;16977:16;;:22;;16996:3;16977:22;:::i;:::-;16963:10;16945:13;;16935:7;:23;;;;:::i;:::-;16933:40;;;;:::i;:::-;:67;;;;:::i;:::-;16920:80;;17062:16;;17081:3;17062:22;;;;:::i;:::-;17048:10;17030:13;;17020:7;:23;;;;:::i;:::-;17018:40;;;;:::i;:::-;:67;;;;:::i;:::-;17005:80;;17146:16;;17165:3;17146:22;;;;:::i;:::-;17132:10;17114:12;;17104:7;:22;;;;:::i;:::-;17102:40;;;;:::i;:::-;:67;;;;:::i;:::-;17090:79;;17234:16;;17253:3;17234:22;;;;:::i;:::-;17219:10;17200:14;;17190:7;:24;;;;:::i;:::-;17188:41;;;;:::i;:::-;:69;;;;:::i;:::-;17174:83;;17310:16;;17329:3;17310:22;;;;:::i;:::-;17295:10;17282:9;;17272:7;:19;;;;:::i;:::-;17271:34;;;;:::i;:::-;:62;;;;:::i;:::-;17262:71;-1:-1:-1;17262:71:0;17410:11;17398:9;17372:23;17385:10;17372;:23;:::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;:58;;;;:::i;:::-;17360:71;;:7;:71;:::i;:::-;17342:89;;17464:10;:8;:10::i;:::-;17450:24;;:11;:24;:::i;:::-;17436:38;;17499:10;:8;:10::i;:::-;17489:20;;:7;:20;:::i;:::-;17479:30;;17550:10;:8;:10::i;:::-;17532:28;;:15;:28;:::i;:::-;17514:46;;16719:846;16434:1131;;;;;;;;;;;;;:::o;24715:582::-;-1:-1:-1;;;;;24893:22:0;;;;;;:16;:22;;;;;;:33;;24919:7;;24893:33;:::i;:::-;-1:-1:-1;;;;;24865:22:0;;;;;;:16;:22;;;;;;;;:61;;;;24937:11;:17;;;;;;24933:96;;;-1:-1:-1;;;;;24989:19:0;;;;;;:13;:19;;;;;;:34;;25016:7;;24989:34;:::i;:::-;-1:-1:-1;;;;;24964:19:0;;;;;;:13;:19;;;;;:59;24933:96;-1:-1:-1;;;;;25039:15:0;;;;;;:11;:15;;;;;;;;25035:102;;;-1:-1:-1;;;;;25089:17:0;;;;;;:13;:17;;;;;;:42;;25116:15;;25089:42;:::i;:::-;-1:-1:-1;;;;;25064:17:0;;;;;;:13;:17;;;;;:67;25035:102;-1:-1:-1;;;;;25169:20:0;;;;;;:16;:20;;;;;;:41;;25195:15;;25169:41;:::i;:::-;-1:-1:-1;;;;;25141:20:0;;;;;;:16;:20;;;;;:69;25220:19;;25217:76;;25266:2;-1:-1:-1;;;;;25251:35:0;25260:4;-1:-1:-1;;;;;25251:35:0;;25270:15;25251:35;;;;1038:25:1;;1026:2;1011:18;;892:177;25251:35:0;;;;;;;;24715:582;;;;;;:::o;20469:144::-;20507:101;20519:17;;20538:16;;20556;;20574:18;;20594:13;;19086;:28;;;;19119:13;:28;;;;19152:12;:26;19183:14;:30;19218:9;:20;18946:297;18511:430;18585:26;18626:10;:8;:10::i;:::-;18614:22;;:9;:22;:::i;:::-;-1:-1:-1;;;;;18676:32:0;;;;;;:16;:32;;;;;;18585:51;;-1:-1:-1;18676:53:0;;18585:51;;18676:53;:::i;:::-;-1:-1:-1;;;;;18641:32:0;;;;;;:16;:32;;;;;;;;:88;;;;18739:11;:27;;;;;;18736:116;;;-1:-1:-1;;;;;18805:29:0;;;;;;:13;:29;;;;;;:41;;18837:9;;18805:41;:::i;:::-;-1:-1:-1;;;;;18773:29:0;;;;;;:13;:29;;;;;:73;18736:116;18859:13;;18856:81;;18884:47;;1038:25:1;;;-1:-1:-1;;;;;18884:47:0;;;18893:10;;18884:47;;1026:2:1;1011:18;18884:47:0;892:177:1;15873:554:0;15964:14;;15923:7;;;;;6612:12;6557:1;6612:2;:12;:::i;:::-;6600:24;;:9;:24;:::i;:::-;15983:29;;16022:9;16017:291;16041:9;:16;16037:20;;16017:291;;;16107:7;16074:16;:30;16091:9;16101:1;16091:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16091:12:0;16074:30;;;;;;;;;;;;;:40;;:81;;;16148:7;16118:13;:27;16132:9;16142:1;16132:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16132:12:0;16118:27;;;;;;;;;;;;;:37;16074:81;16070:123;;;16165:14;;6612:12;6557:1;6612:2;:12;:::i;:::-;6600:24;;:9;:24;:::i;:::-;16157:36;;;;;;;15873:554;;:::o;16070:123::-;16219:16;:30;16236:9;16246:1;16236:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16236:12:0;16219:30;;;;;;;;;;;;;16209:40;;:7;:40;:::i;:::-;16199:50;;16275:13;:27;16289:9;16299:1;16289:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16289:12:0;16275:27;;;;;;;;;;;;;16265:37;;:7;:37;:::i;:::-;16255:47;-1:-1:-1;16059:3:0;;;;:::i;:::-;;;;16017:291;;;-1:-1:-1;6612:12:0;6557:1;6612:2;:12;:::i;:::-;6600:24;;:9;:24;:::i;:::-;16327:14;;:26;;;;:::i;:::-;16316:7;:38;16312:80;;;16364:14;;6612:12;6557:1;6612:2;:12;:::i;:::-;6600:24;;:9;:24;:::i;:::-;16356:36;;;;;;15873:554;;:::o;16312:80::-;16405:7;;16414;;-1:-1:-1;15873:554:0;-1:-1:-1;15873:554:0:o;21006:387::-;21090:16;;;21104:1;21090:16;;;;;;;;21066:21;;21090:16;;;;;;;;;;-1:-1:-1;21090:16:0;21066:40;;21129:4;21111;21116:1;21111:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21111:23:0;;;-1:-1:-1;;;;;21111:23:0;;;;;21149:15;-1:-1:-1;;;;;21149:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21139:4;21144:1;21139:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;21139:32:0;;;-1:-1:-1;;;;;21139:32:0;;;;;21176:62;21193:4;21208:15;21226:11;21176:8;:62::i;:::-;21243:145;;-1:-1:-1;;;21243:145:0;;-1:-1:-1;;;;;21243:15:0;:66;;;;:145;;21315:11;;21332:1;;21339:4;;21357;;21368:15;;21243:145;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21830:285;21905:62;21922:4;21937:15;21955:11;21905:8;:62::i;:::-;21972:15;-1:-1:-1;;;;;21972:31:0;;22011:9;22035:4;22046:11;22063:1;22070;22077:7;4724;4745:6;-1:-1:-1;;;;;4745:6:0;;4678:78;22077:7;21972:138;;;;;;-1:-1:-1;;;;;;21972:138:0;;;-1:-1:-1;;;;;18546:15:1;;;21972:138:0;;;18528:34:1;18578:18;;;18571:34;;;;18621:18;;;18614:34;;;;18664:18;;;18657:34;18728:15;;;18707:19;;;18700:44;22090:15:0;18760:19:1;;;18753:35;18462:19;;21972:138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21830:285;;:::o;17572:556::-;8646:16;:23;;-1:-1:-1;;8646:23:0;8665:4;8646:23;;;:16;17724:10:::1;:8;:10::i;:::-;17706:28;::::0;:15;:28:::1;:::i;:::-;-1:-1:-1::0;;;;;17766:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;;17679:55;;-1:-1:-1;17766:43:0::1;::::0;17679:55;;17766:43:::1;:::i;:::-;-1:-1:-1::0;;;;;17739:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;;;;:70;;;;17822:11:::1;:19:::0;;;;::::1;;17818:99;;;-1:-1:-1::0;;;;;17872:21:0;::::1;;::::0;;;:13:::1;:21;::::0;;;;;:39:::1;::::0;17896:15;;17872:39:::1;:::i;:::-;-1:-1:-1::0;;;;;17848:21:0;::::1;;::::0;;;:13:::1;:21;::::0;;;;:63;17818:99:::1;17982:4;17957:31;::::0;;;:16:::1;:31;::::0;;;;;:50:::1;::::0;17991:16;;17957:50:::1;:::i;:::-;17948:4;17923:31;::::0;;;:16:::1;:31;::::0;;;;;;:84;;;;18019:48;;-1:-1:-1;;;;;18019:48:0;::::1;::::0;::::1;::::0;::::1;::::0;18051:15;1038:25:1;;1026:2;1011:18;;892:177;18019:48:0::1;;;;;;;;18074:47;18098:15;18114:6;18074:23;:47::i;:::-;-1:-1:-1::0;;8680:16:0;:24;;-1:-1:-1;;8680:24:0;;;-1:-1:-1;17572:556:0:o;21398:427::-;21521:16;;;21535:1;21521:16;;;;;;;;21497:21;;21521:16;;;;;;;;;;-1:-1:-1;21521:16:0;21497:40;;21560:4;21542;21547:1;21542:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21542:23:0;;;-1:-1:-1;;;;;21542:23:0;;;;;21580:15;-1:-1:-1;;;;;21580:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21570:4;21575:1;21570:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;21570:32:0;;;-1:-1:-1;;;;;21570:32:0;;;;;21607:62;21624:4;21639:15;21657:11;21607:8;:62::i;:::-;21674:146;;-1:-1:-1;;;21674:146:0;;-1:-1:-1;;;;;21674:15:0;:66;;;;:146;;21746:11;;21763:1;;21770:4;;21780:14;;21800:15;;21674:146;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21492:333;21398:427;;:::o;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;66:60;14:118;:::o;137:750::-;229:6;237;245;298:2;286:9;277:7;273:23;269:32;266:52;;;314:1;311;304:12;266:52;354:9;341:23;383:18;424:2;416:6;413:14;410:34;;;440:1;437;430:12;410:34;478:6;467:9;463:22;453:32;;523:7;516:4;512:2;508:13;504:27;494:55;;545:1;542;535:12;494:55;585:2;572:16;611:2;603:6;600:14;597:34;;;627:1;624;617:12;597:34;682:7;675:4;665:6;662:1;658:14;654:2;650:23;646:34;643:47;640:67;;;703:1;700;693:12;640:67;734:4;726:13;;;;-1:-1:-1;758:6:1;-1:-1:-1;;799:20:1;;786:34;829:28;786:34;829:28;:::i;:::-;876:5;866:15;;;137:750;;;;;:::o;1074:376::-;1136:6;1144;1197:2;1185:9;1176:7;1172:23;1168:32;1165:52;;;1213:1;1210;1203:12;1165:52;1252:9;1239:23;1271:28;1293:5;1271:28;:::i;:::-;1318:5;-1:-1:-1;1375:2:1;1360:18;;1347:32;1388:30;1347:32;1388:30;:::i;:::-;1437:7;1427:17;;;1074:376;;;;;:::o;1455:454::-;1550:6;1558;1566;1574;1582;1635:3;1623:9;1614:7;1610:23;1606:33;1603:53;;;1652:1;1649;1642:12;1603:53;-1:-1:-1;;1675:23:1;;;1745:2;1730:18;;1717:32;;-1:-1:-1;1796:2:1;1781:18;;1768:32;;1847:2;1832:18;;1819:32;;-1:-1:-1;1898:3:1;1883:19;1870:33;;-1:-1:-1;1455:454:1;-1:-1:-1;1455:454:1:o;1914:597::-;2026:4;2055:2;2084;2073:9;2066:21;2116:6;2110:13;2159:6;2154:2;2143:9;2139:18;2132:34;2184:1;2194:140;2208:6;2205:1;2202:13;2194:140;;;2303:14;;;2299:23;;2293:30;2269:17;;;2288:2;2265:26;2258:66;2223:10;;2194:140;;;2352:6;2349:1;2346:13;2343:91;;;2422:1;2417:2;2408:6;2397:9;2393:22;2389:31;2382:42;2343:91;-1:-1:-1;2495:2:1;2474:15;-1:-1:-1;;2470:29:1;2455:45;;;;2502:2;2451:54;;1914:597;-1:-1:-1;;;1914:597:1:o;2516:180::-;2575:6;2628:2;2616:9;2607:7;2603:23;2599:32;2596:52;;;2644:1;2641;2634:12;2596:52;-1:-1:-1;2667:23:1;;2516:180;-1:-1:-1;2516:180:1:o;2701:131::-;-1:-1:-1;;;;;2776:31:1;;2766:42;;2756:70;;2822:1;2819;2812:12;2837:315;2905:6;2913;2966:2;2954:9;2945:7;2941:23;2937:32;2934:52;;;2982:1;2979;2972:12;2934:52;3021:9;3008:23;3040:31;3065:5;3040:31;:::i;:::-;3090:5;3142:2;3127:18;;;;3114:32;;-1:-1:-1;;;2837:315:1:o;3349:247::-;3408:6;3461:2;3449:9;3440:7;3436:23;3432:32;3429:52;;;3477:1;3474;3467:12;3429:52;3516:9;3503:23;3535:31;3560:5;3535:31;:::i;4159:456::-;4236:6;4244;4252;4305:2;4293:9;4284:7;4280:23;4276:32;4273:52;;;4321:1;4318;4311:12;4273:52;4360:9;4347:23;4379:31;4404:5;4379:31;:::i;:::-;4429:5;-1:-1:-1;4486:2:1;4471:18;;4458:32;4499:33;4458:32;4499:33;:::i;:::-;4159:456;;4551:7;;-1:-1:-1;;;4605:2:1;4590:18;;;;4577:32;;4159:456::o;5241:241::-;5297:6;5350:2;5338:9;5329:7;5325:23;5321:32;5318:52;;;5366:1;5363;5356:12;5318:52;5405:9;5392:23;5424:28;5446:5;5424:28;:::i;6721:316::-;6798:6;6806;6814;6867:2;6855:9;6846:7;6842:23;6838:32;6835:52;;;6883:1;6880;6873:12;6835:52;-1:-1:-1;;6906:23:1;;;6976:2;6961:18;;6948:32;;-1:-1:-1;7027:2:1;7012:18;;;6999:32;;6721:316;-1:-1:-1;6721:316:1:o;7042:385::-;7128:6;7136;7144;7152;7205:3;7193:9;7184:7;7180:23;7176:33;7173:53;;;7222:1;7219;7212:12;7173:53;-1:-1:-1;;7245:23:1;;;7315:2;7300:18;;7287:32;;-1:-1:-1;7366:2:1;7351:18;;7338:32;;7417:2;7402:18;7389:32;;-1:-1:-1;7042:385:1;-1:-1:-1;7042:385:1:o;7432:388::-;7500:6;7508;7561:2;7549:9;7540:7;7536:23;7532:32;7529:52;;;7577:1;7574;7567:12;7529:52;7616:9;7603:23;7635:31;7660:5;7635:31;:::i;:::-;7685:5;-1:-1:-1;7742:2:1;7727:18;;7714:32;7755:33;7714:32;7755:33;:::i;7825:309::-;7890:6;7898;7951:2;7939:9;7930:7;7926:23;7922:32;7919:52;;;7967:1;7964;7957:12;7919:52;8006:9;7993:23;8025:28;8047:5;8025:28;:::i;8139:356::-;8341:2;8323:21;;;8360:18;;;8353:30;8419:34;8414:2;8399:18;;8392:62;8486:2;8471:18;;8139:356::o;8500:401::-;8702:2;8684:21;;;8741:2;8721:18;;;8714:30;8780:34;8775:2;8760:18;;8753:62;-1:-1:-1;;;8846:2:1;8831:18;;8824:35;8891:3;8876:19;;8500:401::o;8906:127::-;8967:10;8962:3;8958:20;8955:1;8948:31;8998:4;8995:1;8988:15;9022:4;9019:1;9012:15;9038:127;9099:10;9094:3;9090:20;9087:1;9080:31;9130:4;9127:1;9120:15;9154:4;9151:1;9144:15;9170:135;9209:3;9230:17;;;9227:43;;9250:18;;:::i;:::-;-1:-1:-1;9297:1:1;9286:13;;9170:135::o;9310:128::-;9350:3;9381:1;9377:6;9374:1;9371:13;9368:39;;;9387:18;;:::i;:::-;-1:-1:-1;9423:9:1;;9310:128::o;9443:217::-;9483:1;9509;9499:132;;9553:10;9548:3;9544:20;9541:1;9534:31;9588:4;9585:1;9578:15;9616:4;9613:1;9606:15;9499:132;-1:-1:-1;9645:9:1;;9443:217::o;9665:422::-;9754:1;9797:5;9754:1;9811:270;9832:7;9822:8;9819:21;9811:270;;;9891:4;9887:1;9883:6;9879:17;9873:4;9870:27;9867:53;;;9900:18;;:::i;:::-;9950:7;9940:8;9936:22;9933:55;;;9970:16;;;;9933:55;10049:22;;;;10009:15;;;;9811:270;;;9815:3;9665:422;;;;;:::o;10092:806::-;10141:5;10171:8;10161:80;;-1:-1:-1;10212:1:1;10226:5;;10161:80;10260:4;10250:76;;-1:-1:-1;10297:1:1;10311:5;;10250:76;10342:4;10360:1;10355:59;;;;10428:1;10423:130;;;;10335:218;;10355:59;10385:1;10376:10;;10399:5;;;10423:130;10460:3;10450:8;10447:17;10444:43;;;10467:18;;:::i;:::-;-1:-1:-1;;10523:1:1;10509:16;;10538:5;;10335:218;;10637:2;10627:8;10624:16;10618:3;10612:4;10609:13;10605:36;10599:2;10589:8;10586:16;10581:2;10575:4;10572:12;10568:35;10565:77;10562:159;;;-1:-1:-1;10674:19:1;;;10706:5;;10562:159;10753:34;10778:8;10772:4;10753:34;:::i;:::-;10823:6;10819:1;10815:6;10811:19;10802:7;10799:32;10796:58;;;10834:18;;:::i;:::-;10872:20;;10092:806;-1:-1:-1;;;10092:806:1:o;10903:140::-;10961:5;10990:47;11031:4;11021:8;11017:19;11011:4;10990:47;:::i;11048:168::-;11088:7;11154:1;11150;11146:6;11142:14;11139:1;11136:21;11131:1;11124:9;11117:17;11113:45;11110:71;;;11161:18;;:::i;:::-;-1:-1:-1;11201:9:1;;11048:168::o;11630:125::-;11670:4;11698:1;11695;11692:8;11689:34;;;11703:18;;:::i;:::-;-1:-1:-1;11740:9:1;;11630:125::o;12527:184::-;12597:6;12650:2;12638:9;12629:7;12625:23;12621:32;12618:52;;;12666:1;12663;12656:12;12618:52;-1:-1:-1;12689:16:1;;12527:184;-1:-1:-1;12527:184:1:o;12995:245::-;13062:6;13115:2;13103:9;13094:7;13090:23;13086:32;13083:52;;;13131:1;13128;13121:12;13083:52;13163:9;13157:16;13182:28;13204:5;13182:28;:::i;13601:127::-;13662:10;13657:3;13653:20;13650:1;13643:31;13693:4;13690:1;13683:15;13717:4;13714:1;13707:15;16878:251;16948:6;17001:2;16989:9;16980:7;16976:23;16972:32;16969:52;;;17017:1;17014;17007:12;16969:52;17049:9;17043:16;17068:31;17093:5;17068:31;:::i;17134:461::-;17187:3;17225:5;17219:12;17252:6;17247:3;17240:19;17278:4;17307:2;17302:3;17298:12;17291:19;;17344:2;17337:5;17333:14;17365:1;17375:195;17389:6;17386:1;17383:13;17375:195;;;17454:13;;-1:-1:-1;;;;;17450:39:1;17438:52;;17510:12;;;;17545:15;;;;17486:1;17404:9;17375:195;;;-1:-1:-1;17586:3:1;;17134:461;-1:-1:-1;;;;;17134:461:1:o;17600:582::-;17899:6;17888:9;17881:25;17942:6;17937:2;17926:9;17922:18;17915:34;17985:3;17980:2;17969:9;17965:18;17958:31;17862:4;18006:57;18058:3;18047:9;18043:19;18035:6;18006:57;:::i;:::-;-1:-1:-1;;;;;18099:32:1;;;;18094:2;18079:18;;18072:60;-1:-1:-1;18163:3:1;18148:19;18141:35;17998:65;17600:582;-1:-1:-1;;;17600:582:1:o;18799:306::-;18887:6;18895;18903;18956:2;18944:9;18935:7;18931:23;18927:32;18924:52;;;18972:1;18969;18962:12;18924:52;19001:9;18995:16;18985:26;;19051:2;19040:9;19036:18;19030:25;19020:35;;19095:2;19084:9;19080:18;19074:25;19064:35;;18799:306;;;;;:::o
Swarm Source
ipfs://f6ccb4d95bde39c9ff4a8afa8390f33bd516d77935cba11cd8e004974d47cd72
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.