ERC-20
Overview
Max Total Supply
7,000,000,000 A23
Holders
40
Market
Price
$0.00 @ 0.000000 FTM
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.856048896 A23Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
A23
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2021-12-30 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IRouter { 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); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } //"ETH" symb is used for better uniswap-core integration //uniswap is use due to their better repo management contract A23 is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; mapping (address => bool) private _isBot; address[] private _excluded; bool public tradingEnabled; bool public swapEnabled; bool public buyBackEnabled = false; bool private swapping; IRouter public router; address public pair; uint8 private constant _decimals = 9; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 7000000000 * 10**_decimals; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 public maxBuyAmount = _tTotal.mul(2).div(100); uint256 public maxSellAmount = _tTotal.mul(1).div(100); uint256 public swapTokensAtAmount = 350000 * 10**_decimals; uint256 public _maxWalletSize = 210000000 * 10**_decimals; uint256 public buyBackUpperLimit = 1 * 10**18; address public marketingAddress = 0x9Ca6BaAe306773f3eBffCE18c567610455e2EcaF; address public operationsAddress = 0x35eDDE73971Bf2B49c57296766bec782372B01FD; address public constant deadAddress = 0x000000000000000000000000000000000000dEaD; string private constant _name = "A23"; string private constant _symbol = "A23"; struct feeRatesStruct { uint256 rfi; uint256 operations; uint256 marketing; uint256 liquidity; uint256 buyback; } feeRatesStruct public feeRates = feeRatesStruct( {rfi: 30, operations: 10, marketing: 20, liquidity: 20, buyback: 20 }); feeRatesStruct public sellFeeRates = feeRatesStruct( {rfi: 30, operations: 10, marketing: 20, liquidity: 20, buyback: 20 }); struct TotFeesPaidStruct{ uint256 rfi; uint256 operations; uint256 marketing; uint256 liquidity; uint256 buyBack; } TotFeesPaidStruct public totFeesPaid; struct valuesFromGetValues{ uint256 rAmount; uint256 rTransferAmount; uint256 rRfi; uint256 rOperations; uint256 rMarketing; uint256 rLiquidity; uint256 rBuyback; uint256 tTransferAmount; uint256 tRfi; uint256 tOperations; uint256 tMarketing; uint256 tLiquidity; uint256 tBuyback; } event FeesChanged(); event TradingEnabled(uint256 startDate); event UpdatedRouter(address oldRouter, address newRouter); modifier lockTheSwap { swapping = true; _; swapping = false; } constructor (address routerAddress) { IRouter _router = IRouter(routerAddress); address _pair = IFactory(_router.factory()) .createPair(address(this), _router.WETH()); router = _router; pair = _pair; _rOwned[owner()] = _rTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[marketingAddress]=true; _isExcludedFromFee[operationsAddress] = true; emit Transfer(address(0), owner(), _tTotal); } //std ERC20: function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } //override ERC20: function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender]+addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); valuesFromGetValues memory s = _getValues(tAmount, true, false); _rOwned[sender] = _rOwned[sender].sub(s.rAmount); _rTotal = _rTotal.sub(s.rAmount); totFeesPaid.rfi += tAmount; } function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferRfi) { valuesFromGetValues memory s = _getValues(tAmount, true, false); return s.rAmount; } else { valuesFromGetValues memory s = _getValues(tAmount, true, false); return s.rTransferAmount; } } function startTrading(bool _enabled) external onlyOwner{ tradingEnabled = _enabled; swapEnabled = _enabled; emit TradingEnabled(block.timestamp); } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount/currentRate; } //@dev kept original RFI naming -> "reward" as in reflection function excludeFromReward(address account) public onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is not excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() { _maxWalletSize = _tTotal.mul(maxWallPercent).div( 10**2 ); } function setFeeRates(uint256 _rfi, uint256 _operations, uint256 _marketing, uint256 _liquidity, uint256 _buyback) external onlyOwner { feeRates.rfi = _rfi; feeRates.operations = _operations; feeRates.marketing = _marketing; feeRates.liquidity = _liquidity; feeRates.buyback = _buyback; emit FeesChanged(); } function setSellFeeRates(uint256 _rfi, uint256 _operations, uint256 _marketing, uint256 _liquidity, uint256 _buyback) external onlyOwner{ sellFeeRates.rfi = _rfi; sellFeeRates.operations = _operations; sellFeeRates.marketing = _marketing; sellFeeRates.liquidity = _liquidity; sellFeeRates.buyback = _buyback; emit FeesChanged(); } function _reflectRfi(uint256 rRfi, uint256 tRfi) private { _rTotal -=rRfi; totFeesPaid.rfi +=tRfi; } function _takeOperations(uint256 rOperations, uint256 tOperations) private { totFeesPaid.operations +=tOperations; if(_isExcluded[address(this)]){ _tOwned[address(this)]+=tOperations; } _rOwned[address(this)] +=rOperations; } function _takeBuyback(uint256 rBuyback, uint256 tBuyback) private { totFeesPaid.buyBack +=tBuyback; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tBuyback; } _rOwned[address(this)] +=rBuyback; } function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private { totFeesPaid.liquidity +=tLiquidity; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tLiquidity; } _rOwned[address(this)] +=rLiquidity; } function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private { totFeesPaid.marketing +=tMarketing; if(_isExcluded[marketingAddress]) { _tOwned[marketingAddress]+=tMarketing; } _rOwned[marketingAddress] +=rMarketing; } function _getValues(uint256 tAmount, bool takeFee, bool isSale) private view returns (valuesFromGetValues memory to_return) { to_return = _getTValues(tAmount, takeFee, isSale); (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi,to_return.rOperations, to_return.rMarketing, to_return.rLiquidity, to_return.rBuyback) = _getRValues(to_return, tAmount, takeFee, _getRate()); return to_return; } function _getTValues(uint256 tAmount, bool takeFee, bool isSale) private view returns (valuesFromGetValues memory s) { if(!takeFee) { s.tTransferAmount = tAmount; return s; } if(isSale){ s.tRfi = tAmount*sellFeeRates.rfi/1000; s.tOperations = tAmount*sellFeeRates.operations/1000; s.tMarketing = tAmount*sellFeeRates.marketing/1000; s.tLiquidity = tAmount*sellFeeRates.liquidity/1000; s.tBuyback = tAmount*sellFeeRates.buyback/1000; s.tTransferAmount = tAmount-s.tRfi-s.tOperations-s.tMarketing-s.tLiquidity-s.tBuyback; } else{ s.tRfi = tAmount*feeRates.rfi/1000; s.tOperations = tAmount*feeRates.operations/1000; s.tMarketing = tAmount*feeRates.marketing/1000; s.tLiquidity = tAmount*feeRates.liquidity/1000; s.tBuyback = tAmount*feeRates.buyback/1000; s.tTransferAmount = tAmount-s.tRfi-s.tOperations-s.tMarketing-s.tLiquidity-s.tBuyback; } return s; } function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rOperations,uint256 rMarketing, uint256 rLiquidity, uint256 rBuyback) { rAmount = tAmount*currentRate; if(!takeFee) { return(rAmount, rAmount, 0,0,0,0,0); } rRfi = s.tRfi*currentRate; rOperations = s.tOperations*currentRate; rMarketing = s.tMarketing*currentRate; rLiquidity = s.tLiquidity*currentRate; rBuyback = s.tBuyback*currentRate; rTransferAmount = rAmount-rRfi-rOperations-rMarketing-rLiquidity-rBuyback; return (rAmount, rTransferAmount, rRfi,rOperations,rMarketing,rLiquidity, rBuyback); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply/tSupply; } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply-_rOwned[_excluded[i]]; tSupply = tSupply-_tOwned[_excluded[i]]; } if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(amount <= balanceOf(from),"You are trying to transfer more than your balance"); require(!_isBot[from] && !_isBot[to], "Fuck you Bots"); if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ require(tradingEnabled, "Trading is not enabled yet"); } if( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && from == pair){ require(amount <= maxBuyAmount, "you are exceeding maxBuyAmount"); uint256 walletCurrentBalance = balanceOf(to); require(walletCurrentBalance + amount <= _maxWalletSize, "Exceeds maximum wallet token amount"); } if( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && from == pair){ require(amount <= maxSellAmount, "Amount is exceeding maxSellAmount"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if(!swapping && swapEnabled && canSwap && from != pair){ uint256 balance = address(this).balance; if (buyBackEnabled && balance > uint256(1 * 10**18) && to == pair) { if (balance > buyBackUpperLimit) balance = buyBackUpperLimit; buyBackTokens(balance.div(100)); } swapAndLiquify(swapTokensAtAmount); } bool isSale; if(to == pair) isSale = true; _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to]), isSale); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSale) private { valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSale); if (_isExcluded[sender] ) { //from excluded _tOwned[sender] = _tOwned[sender]-tAmount; } if (_isExcluded[recipient]) { //to excluded _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount; } _rOwned[sender] = _rOwned[sender]-s.rAmount; _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount; _reflectRfi(s.rRfi, s.tRfi); _takeOperations(s.rOperations,s.tOperations); _takeLiquidity(s.rLiquidity,s.tLiquidity); _takeMarketing(s.rMarketing, s.tMarketing); _takeBuyback(s.rBuyback, s.tBuyback); emit Transfer(sender, recipient, s.tTransferAmount); emit Transfer(sender, address(this), s.tLiquidity + s.tOperations + s.tBuyback); emit Transfer(sender, marketingAddress, s.tMarketing); } function buyBackTokens(uint256 amount) private lockTheSwap{ if (amount > 0) { swapETHForTokens(amount); } } function swapETHForTokens(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(this); // make the swap router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, // accept any amount of Tokens path, deadAddress, // Burn address block.timestamp.add(300) ); } function swapAndLiquify(uint256 tokens) private lockTheSwap{ // Split the contract balance into halves uint256 denominator= (feeRates.liquidity + feeRates.buyback + feeRates.operations) * 2; uint256 tokensToAddLiquidityWith = tokens * feeRates.liquidity / denominator; uint256 toSwap = tokens - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForFTM(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance= deltaBalance / (denominator - feeRates.liquidity); uint256 ftmToAddLiquidityWith = unitBalance * feeRates.liquidity; if(ftmToAddLiquidityWith > 0){ // Add liquidity to pancake addLiquidity(tokensToAddLiquidityWith, ftmToAddLiquidityWith); } // Send FTM to operationsWallet uint256 operationsAmt = unitBalance * 2 * feeRates.operations; if(operationsAmt > 0){ payable(operationsAddress).transfer(operationsAmt); } } function addLiquidity(uint256 tokenAmount, uint256 ftmAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{value: ftmAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function swapTokensForFTM(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function updateMarketingWallet(address newWallet) external onlyOwner{ require(marketingAddress != newWallet ,'Wallet already set'); marketingAddress = newWallet; _isExcludedFromFee[marketingAddress]; } function updateOperationsWallet(address newWallet) external onlyOwner{ require(operationsAddress != newWallet ,'Wallet already set'); operationsAddress = newWallet; _isExcludedFromFee[operationsAddress]; } function setMaxBuyAndSellAmount(uint256 _maxBuyamount, uint256 _maxSellAmount) external onlyOwner{ maxBuyAmount = _maxBuyamount * 10**9; maxSellAmount = _maxSellAmount * 10**9; } function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{ swapTokensAtAmount = amount * 10**_decimals; } function updateSwapEnabled(bool _enabled) external onlyOwner{ swapEnabled = _enabled; } function updateBuybackEnabled(bool _enabled) external onlyOwner{ buyBackEnabled = _enabled; } function setAntibot(address account, bool _bot) external onlyOwner{ require(_isBot[account] != _bot, 'Value already set'); _isBot[account] = _bot; } function setBuybackUpperLimit(uint256 buyBackLimit) external onlyOwner() { buyBackUpperLimit = buyBackLimit * 10**15; } function isBot(address account) public view returns(bool){ return _isBot[account]; } receive() external payable{ } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"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":[],"name":"FeesChanged","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":"startDate","type":"uint256"}],"name":"TradingEnabled","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":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackUpperLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"operations","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFeeRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"operations","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"_bot","type":"bool"}],"name":"setAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyBackLimit","type":"uint256"}],"name":"setBuybackUpperLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_operations","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"}],"name":"setFeeRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxBuyamount","type":"uint256"},{"internalType":"uint256","name":"_maxSellAmount","type":"uint256"}],"name":"setMaxBuyAndSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_operations","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"}],"name":"setSellFeeRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"operations","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyBack","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateBuybackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateOperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526008805462ff0000191690556200001e6009600a6200061c565b6200002f906401a13b86006200062d565b600a819055620000429060001962000665565b62000050906000196200067c565b600b556200008a6064620000766002600a546200049460201b6200171c1790919060201c565b620004ab60201b620017281790919060201c565b600c55620000b06064620000766001600a546200049460201b6200171c1790919060201c565b600d55620000c16009600a6200061c565b620000d090620557306200062d565b600e55620000e16009600a6200061c565b620000f190630c8458806200062d565b600f55670de0b6b3a7640000601055601180546001600160a01b0319908116739ca6baae306773f3ebffce18c567610455e2ecaf17909155601280549091167335edde73971bf2b49c57296766bec782372b01fd1790556040805160a08082018352601e808352600a6020808501829052601485870181905260608087018290526080968701829052601385905583825560158290556016829055601782905587519586018852848652918501839052958401869052830185905291909201839052601891909155601955601a819055601b819055601c55348015620001d657600080fd5b5060405162003a2e38038062003a2e833981016040819052620001f99162000696565b6200020433620004b9565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000270919062000696565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e4919062000696565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000332573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000358919062000696565b60088054600160201b600160c01b0319166401000000006001600160a01b038681169190910291909117909155600980546001600160a01b031916838316179055600b54600080549092168252600160208190526040832091909155919250600490620003cd6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556011548216815260049093528183208054851660019081179091556012549091168352912080549092161790556200043b6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040516200048391815260200190565b60405180910390a3505050620006df565b6000620004a282846200062d565b90505b92915050565b6000620004a28284620006c8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200056057816000190482111562000544576200054462000509565b808516156200055257918102915b93841c939080029062000524565b509250929050565b6000826200057957506001620004a5565b816200058857506000620004a5565b8160018114620005a15760028114620005ac57620005cc565b6001915050620004a5565b60ff841115620005c057620005c062000509565b50506001821b620004a5565b5060208310610133831016604e8410600b8410161715620005f1575081810a620004a5565b620005fd83836200051f565b806000190482111562000614576200061462000509565b029392505050565b6000620004a260ff84168362000568565b60008160001904831182151516156200064a576200064a62000509565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826200067757620006776200064f565b500690565b60008282101562000691576200069162000509565b500390565b600060208284031215620006a957600080fd5b81516001600160a01b0381168114620006c157600080fd5b9392505050565b600082620006da57620006da6200064f565b500490565b61333f80620006ef6000396000f3fe6080604052600436106103035760003560e01c80637688c58411610190578063a9059cbb116100dc578063e116554511610095578063ea4cfe121161006f578063ea4cfe121461098d578063f2fde38b146109ad578063f887ea40146109cd578063f9e08969146109f557600080fd5b8063e116554514610937578063e2f4560514610957578063ea2f0b371461096d57600080fd5b8063a9059cbb14610851578063aacebbe314610871578063abeef10214610891578063cdebfea3146108b1578063d257b34f146108d1578063dd62ed3e146108f157600080fd5b80638f9a55c0116101495780639ba5e4d5116101235780639ba5e4d5146107ca578063a457c2d7146107f1578063a5ece94114610811578063a8aa1b311461083157600080fd5b80638f9a55c014610794578063924de9b7146107aa57806395d89b411461030f57600080fd5b80637688c584146106c057806382bf293c146106e757806382d2a4bb1461070757806388e765ff1461072757806388f820201461073d5780638da5cb5b1461077657600080fd5b8063437823ec1161024f57806360e65bb8116102085780636ddd1713116101e25780636ddd17131461065657806370a082311461067557806370e5024114610695578063715018a6146106ab57600080fd5b806360e65bb81461060057806366d602ae1461062057806368ca61451461063657600080fd5b8063437823ec1461052d5780634549b0391461054d5780634ada218b1461056d57806352390c02146105875780635342acb4146105a75780636053a0e3146105e057600080fd5b80632d838119116102bc5780633685d419116102965780633685d4191461049457806339509351146104b45780633bbac579146104d45780633bd5d1731461050d57600080fd5b80632d8381191461043657806330d5d18d14610456578063313ce5671461047857600080fd5b806306fdde031461030f578063095ea7b31461034a57806318160ddd1461037a57806318a90c441461039957806323b872dd146103e857806327c8f8351461040857600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b50604080518082018252600381526241323360e81b602082015290516103419190612d9c565b60405180910390f35b34801561035657600080fd5b5061036a610365366004612e06565b610a15565b6040519015158152602001610341565b34801561038657600080fd5b50600a545b604051908152602001610341565b3480156103a557600080fd5b50601854601954601a54601b54601c546103c0949392919085565b604080519586526020860194909452928401919091526060830152608082015260a001610341565b3480156103f457600080fd5b5061036a610403366004612e32565b610a2c565b34801561041457600080fd5b5061041e61dead81565b6040516001600160a01b039091168152602001610341565b34801561044257600080fd5b5061038b610451366004612e73565b610a96565b34801561046257600080fd5b50610476610471366004612e8c565b610b18565b005b34801561048457600080fd5b5060405160098152602001610341565b3480156104a057600080fd5b506104766104af366004612e8c565b610bbe565b3480156104c057600080fd5b5061036a6104cf366004612e06565b610d75565b3480156104e057600080fd5b5061036a6104ef366004612e8c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561051957600080fd5b50610476610528366004612e73565b610dac565b34801561053957600080fd5b50610476610548366004612e8c565b610ea1565b34801561055957600080fd5b5061038b610568366004612ebe565b610eef565b34801561057957600080fd5b5060085461036a9060ff1681565b34801561059357600080fd5b506104766105a2366004612e8c565b610f7d565b3480156105b357600080fd5b5061036a6105c2366004612e8c565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105ec57600080fd5b5060085461036a9062010000900460ff1681565b34801561060c57600080fd5b5061047661061b366004612eea565b6110d0565b34801561062c57600080fd5b5061038b600d5481565b34801561064257600080fd5b50610476610651366004612f05565b611150565b34801561066257600080fd5b5060085461036a90610100900460ff1681565b34801561068157600080fd5b5061038b610690366004612e8c565b6111c3565b3480156106a157600080fd5b5061038b60105481565b3480156106b757600080fd5b50610476611222565b3480156106cc57600080fd5b506013546014546015546016546017546103c0949392919085565b3480156106f357600080fd5b50610476610702366004612e73565b611258565b34801561071357600080fd5b50610476610722366004612e73565b6112a8565b34801561073357600080fd5b5061038b600c5481565b34801561074957600080fd5b5061036a610758366004612e8c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561078257600080fd5b506000546001600160a01b031661041e565b3480156107a057600080fd5b5061038b600f5481565b3480156107b657600080fd5b506104766107c5366004612eea565b6112e9565b3480156107d657600080fd5b50601d54601e54601f546020546021546103c0949392919085565b3480156107fd57600080fd5b5061036a61080c366004612e06565b61132d565b34801561081d57600080fd5b5060115461041e906001600160a01b031681565b34801561083d57600080fd5b5060095461041e906001600160a01b031681565b34801561085d57600080fd5b5061036a61086c366004612e06565b61137c565b34801561087d57600080fd5b5061047661088c366004612e8c565b611389565b34801561089d57600080fd5b506104766108ac366004612f05565b61142f565b3480156108bd57600080fd5b506104766108cc366004612f40565b6114a2565b3480156108dd57600080fd5b506104766108ec366004612e73565b6114f2565b3480156108fd57600080fd5b5061038b61090c366004612f62565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561094357600080fd5b50610476610952366004612f9b565b611538565b34801561096357600080fd5b5061038b600e5481565b34801561097957600080fd5b50610476610988366004612e8c565b6115f0565b34801561099957600080fd5b5060125461041e906001600160a01b031681565b3480156109b957600080fd5b506104766109c8366004612e8c565b61163b565b3480156109d957600080fd5b5060085461041e9064010000000090046001600160a01b031681565b348015610a0157600080fd5b50610476610a10366004612eea565b6116d6565b6000610a22338484611734565b5060015b92915050565b6000610a39848484611858565b610a8b8433610a86856040518060600160405280602881526020016132bd602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611e59565b611734565b5060015b9392505050565b6000600b54821115610b025760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084015b60405180910390fd5b6000610b0c611e85565b9050610a8f8184612fdd565b6000546001600160a01b03163314610b425760405162461bcd60e51b8152600401610af990612fff565b6012546001600160a01b0382811691161415610b955760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610af9565b601280546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b03163314610be85760405162461bcd60e51b8152600401610af990612fff565b6001600160a01b03811660009081526005602052604090205460ff16610c505760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610af9565b60005b600754811015610d7157816001600160a01b031660078281548110610c7a57610c7a613034565b6000918252602090912001546001600160a01b03161415610d5f5760078054610ca59060019061304a565b81548110610cb557610cb5613034565b600091825260209091200154600780546001600160a01b039092169183908110610ce157610ce1613034565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610d3957610d39613061565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d6981613077565b915050610c53565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a22918590610a86908690613092565b3360008181526005602052604090205460ff1615610e215760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610af9565b6000610e308360016000611ea8565b80516001600160a01b038416600090815260016020526040902054919250610e589190611ef7565b6001600160a01b0383166000908152600160205260409020558051600b54610e7f91611ef7565b600b55601d8054849190600090610e97908490613092565b9091555050505050565b6000546001600160a01b03163314610ecb5760405162461bcd60e51b8152600401610af990612fff565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600a54831115610f435760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610af9565b81610f61576000610f578460016000611ea8565b519150610a269050565b6000610f708460016000611ea8565b602001519150610a269050565b6000546001600160a01b03163314610fa75760405162461bcd60e51b8152600401610af990612fff565b6001600160a01b03811660009081526005602052604090205460ff16156110105760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610af9565b6001600160a01b0381166000908152600160205260409020541561106a576001600160a01b03811660009081526001602052604090205461105090610a96565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146110fa5760405162461bcd60e51b8152600401610af990612fff565b6008805461ffff191661ff0019831515908116919091176101009091021790556040514281527fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e9239060200160405180910390a150565b6000546001600160a01b0316331461117a5760405162461bcd60e51b8152600401610af990612fff565b601385905560148490556015839055601682905560178190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6001600160a01b03811660009081526005602052604081205460ff161561120057506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610a2690610a96565b6000546001600160a01b0316331461124c5760405162461bcd60e51b8152600401610af990612fff565b6112566000611f03565b565b6000546001600160a01b031633146112825760405162461bcd60e51b8152600401610af990612fff565b6112a2606461129c83600a5461171c90919063ffffffff16565b90611728565b600f5550565b6000546001600160a01b031633146112d25760405162461bcd60e51b8152600401610af990612fff565b6112e38166038d7ea4c680006130aa565b60105550565b6000546001600160a01b031633146113135760405162461bcd60e51b8152600401610af990612fff565b600880549115156101000261ff0019909216919091179055565b6000610a223384610a86856040518060600160405280602581526020016132e5602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611e59565b6000610a22338484611858565b6000546001600160a01b031633146113b35760405162461bcd60e51b8152600401610af990612fff565b6011546001600160a01b03828116911614156114065760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610af9565b601180546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b031633146114595760405162461bcd60e51b8152600401610af990612fff565b60188590556019849055601a839055601b829055601c8190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b031633146114cc5760405162461bcd60e51b8152600401610af990612fff565b6114da82633b9aca006130aa565b600c556114eb81633b9aca006130aa565b600d555050565b6000546001600160a01b0316331461151c5760405162461bcd60e51b8152600401610af990612fff565b6115286009600a6131ad565b61153290826130aa565b600e5550565b6000546001600160a01b031633146115625760405162461bcd60e51b8152600401610af990612fff565b6001600160a01b03821660009081526006602052604090205460ff16151581151514156115c55760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610af9565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461161a5760405162461bcd60e51b8152600401610af990612fff565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146116655760405162461bcd60e51b8152600401610af990612fff565b6001600160a01b0381166116ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af9565b6116d381611f03565b50565b6000546001600160a01b031633146117005760405162461bcd60e51b8152600401610af990612fff565b60088054911515620100000262ff000019909216919091179055565b6000610a8f82846130aa565b6000610a8f8284612fdd565b6001600160a01b0383166117965760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610af9565b6001600160a01b0382166117f75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610af9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610af9565b6001600160a01b03821661191e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610af9565b600081116119805760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610af9565b611989836111c3565b8111156119f25760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610af9565b6001600160a01b03831660009081526006602052604090205460ff16158015611a3457506001600160a01b03821660009081526006602052604090205460ff16155b611a705760405162461bcd60e51b815260206004820152600d60248201526c4675636b20796f7520426f747360981b6044820152606401610af9565b6001600160a01b03831660009081526004602052604090205460ff16158015611ab257506001600160a01b03821660009081526004602052604090205460ff16155b15611b095760085460ff16611b095760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610af9565b6000546001600160a01b03848116911614801590611b3557506000546001600160a01b03838116911614155b8015611b4957506001600160a01b03821615155b8015611b6057506001600160a01b03821661dead14155b8015611b7957506009546001600160a01b038481169116145b15611c4757600c54811115611bd05760405162461bcd60e51b815260206004820152601e60248201527f796f752061726520657863656564696e67206d6178427579416d6f756e7400006044820152606401610af9565b6000611bdb836111c3565b600f54909150611beb8383613092565b1115611c455760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b6064820152608401610af9565b505b6000546001600160a01b03848116911614801590611c7357506000546001600160a01b03838116911614155b8015611c8757506001600160a01b03821615155b8015611c9e57506001600160a01b03821661dead14155b8015611cb757506009546001600160a01b038481169116145b15611d1857600d54811115611d185760405162461bcd60e51b815260206004820152602160248201527f416d6f756e7420697320657863656564696e67206d617853656c6c416d6f756e6044820152601d60fa1b6064820152608401610af9565b6000611d23306111c3565b600e54600854919250821015906301000000900460ff16158015611d4e5750600854610100900460ff165b8015611d575750805b8015611d7157506009546001600160a01b03868116911614155b15611de457600854479062010000900460ff168015611d975750670de0b6b3a764000081115b8015611db057506009546001600160a01b038681169116145b15611dd757601054811115611dc457506010545b611dd7611dd2826064611728565b611f53565b611de2600e54611f85565b505b6009546000906001600160a01b0386811691161415611e01575060015b6001600160a01b038616600090815260046020526040902054611e519087908790879060ff1680611e4a57506001600160a01b03891660009081526004602052604090205460ff165b15856120c2565b505050505050565b60008184841115611e7d5760405162461bcd60e51b8152600401610af99190612d9c565b505050900390565b6000806000611e9261237d565b9092509050611ea18183612fdd565b9250505090565b611eb0612d34565b611ebb848484612500565b9050611ed0818585611ecb611e85565b612717565b60c088015260a0870152608086015260608501526040840152602083015281529392505050565b6000610a8f828461304a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805463ff000000191663010000001790558015611f7557611f75816127ed565b506008805463ff00000019169055565b6008805463ff0000001916630100000017905560145460175460165460009291611fae91613092565b611fb89190613092565b611fc39060026130aa565b905060008160136003015484611fd991906130aa565b611fe39190612fdd565b90506000611ff1828561304a565b905047611ffd8261295b565b6000612009824761304a565b60165490915060009061201c908761304a565b6120269083612fdd565b60165490915060009061203990836130aa565b9050801561204b5761204b8682612ad6565b60145460009061205c8460026130aa565b61206691906130aa565b905080156120aa576012546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156120a8573d6000803e3d6000fd5b505b50506008805463ff0000001916905550505050505050565b60006120cf848484611ea8565b6001600160a01b03871660009081526005602052604090205490915060ff1615612131576001600160a01b03861660009081526002602052604090205461211790859061304a565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156121945760e08101516001600160a01b03861660009081526002602052604090205461217a9190613092565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b0387166000908152600160205260409020546121b9919061304a565b6001600160a01b03808816600090815260016020908152604080832094909455840151918816815291909120546121f09190613092565b6001600160a01b03861660009081526001602052604090819020919091558101516101008201516122219190612bbc565b6122348160600151826101200151612bf1565b6122478160a00151826101600151612c67565b61225a8160800151826101400151612c7c565b61226d8160c00151826101800151612d13565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e001516040516122b691815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610180015184610120015185610160015161230f9190613092565b6123199190613092565b60405190815260200160405180910390a36011546101408201516040519081526001600160a01b03918216918816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b600b54600a546000918291825b6007548110156124cf578260016000600784815481106123ac576123ac613034565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061241757508160026000600784815481106123f0576123f0613034565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561242d57600b54600a54945094505050509091565b600160006007838154811061244457612444613034565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612473908461304a565b9250600260006007838154811061248c5761248c613034565b60009182526020808320909101546001600160a01b031683528201929092526040019020546124bb908361304a565b9150806124c781613077565b91505061238a565b50600a54600b546124e09190612fdd565b8210156124f757600b54600a549350935050509091565b90939092509050565b612508612d34565b826125195760e08101849052610a8f565b811561261a576018546103e89061253090866130aa565b61253a9190612fdd565b6101008201526019546103e89061255190866130aa565b61255b9190612fdd565b610120820152601a546103e89061257290866130aa565b61257c9190612fdd565b610140820152601b546103e89061259390866130aa565b61259d9190612fdd565b610160820152601c546103e8906125b490866130aa565b6125be9190612fdd565b61018082018190526101608201516101408301516101208401516101008501516125e8908961304a565b6125f2919061304a565b6125fc919061304a565b612606919061304a565b612610919061304a565b60e0820152610a8f565b6013546103e89061262b90866130aa565b6126359190612fdd565b6101008201526014546103e89061264c90866130aa565b6126569190612fdd565b6101208201526015546103e89061266d90866130aa565b6126779190612fdd565b6101408201526016546103e89061268e90866130aa565b6126989190612fdd565b6101608201526017546103e8906126af90866130aa565b6126b99190612fdd565b61018082018190526101608201516101408301516101208401516101008501516126e3908961304a565b6126ed919061304a565b6126f7919061304a565b612701919061304a565b61270b919061304a565b60e08201529392505050565b6000808080808080612729888b6130aa565b965088612747575085945060009350839250829150819050806127df565b878b610100015161275891906130aa565b9450878b610120015161276b91906130aa565b9350878b610140015161277e91906130aa565b9250878b610160015161279191906130aa565b9150878b61018001516127a491906130aa565b9050808284866127b4898c61304a565b6127be919061304a565b6127c8919061304a565b6127d2919061304a565b6127dc919061304a565b95505b949950949992975094509450565b604080516002808252606082018352600092602083019080368337019050509050600860049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612861573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288591906131bc565b8160008151811061289857612898613034565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106128cc576128cc613034565b6001600160a01b03928316602091820292909201015260085464010000000090041663b6f9de958360008461dead6129064261012c612d28565b6040518663ffffffff1660e01b8152600401612925949392919061321d565b6000604051808303818588803b15801561293e57600080fd5b505af1158015612952573d6000803e3d6000fd5b50505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061299057612990613034565b60200260200101906001600160a01b031690816001600160a01b031681525050600860049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2791906131bc565b81600181518110612a3a57612a3a613034565b6001600160a01b039283166020918202929092010152600854612a6891309164010000000090041684611734565b60085460405163791ac94760e01b81526401000000009091046001600160a01b03169063791ac94790612aa8908590600090869030904290600401613252565b600060405180830381600087803b158015612ac257600080fd5b505af1158015611e51573d6000803e3d6000fd5b600854612af690309064010000000090046001600160a01b031684611734565b6008546001600160a01b036401000000009091041663f305d719823085600080612b286000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612b90573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612bb5919061328e565b5050505050565b81600b6000828254612bce919061304a565b9091555050601d8054829190600090612be8908490613092565b90915550505050565b80601d6001016000828254612c069190613092565b90915550503060009081526005602052604090205460ff1615612c48573060009081526002602052604081208054839290612c42908490613092565b90915550505b3060009081526001602052604081208054849290612be8908490613092565b80601d6003016000828254612c069190613092565b80601d6002016000828254612c919190613092565b90915550506011546001600160a01b031660009081526005602052604090205460ff1615612ce9576011546001600160a01b031660009081526002602052604081208054839290612ce3908490613092565b90915550505b6011546001600160a01b031660009081526001602052604081208054849290612be8908490613092565b80601d6004016000828254612c069190613092565b6000610a8f8284613092565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b81811015612dc957858101830151858201604001528201612dad565b81811115612ddb576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146116d357600080fd5b60008060408385031215612e1957600080fd5b8235612e2481612df1565b946020939093013593505050565b600080600060608486031215612e4757600080fd5b8335612e5281612df1565b92506020840135612e6281612df1565b929592945050506040919091013590565b600060208284031215612e8557600080fd5b5035919050565b600060208284031215612e9e57600080fd5b8135610a8f81612df1565b80358015158114612eb957600080fd5b919050565b60008060408385031215612ed157600080fd5b82359150612ee160208401612ea9565b90509250929050565b600060208284031215612efc57600080fd5b610a8f82612ea9565b600080600080600060a08688031215612f1d57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612f5357600080fd5b50508035926020909101359150565b60008060408385031215612f7557600080fd5b8235612f8081612df1565b91506020830135612f9081612df1565b809150509250929050565b60008060408385031215612fae57600080fd5b8235612fb981612df1565b9150612ee160208401612ea9565b634e487b7160e01b600052601160045260246000fd5b600082612ffa57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008282101561305c5761305c612fc7565b500390565b634e487b7160e01b600052603160045260246000fd5b600060001982141561308b5761308b612fc7565b5060010190565b600082198211156130a5576130a5612fc7565b500190565b60008160001904831182151516156130c4576130c4612fc7565b500290565b600181815b808511156131045781600019048211156130ea576130ea612fc7565b808516156130f757918102915b93841c93908002906130ce565b509250929050565b60008261311b57506001610a26565b8161312857506000610a26565b816001811461313e576002811461314857613164565b6001915050610a26565b60ff84111561315957613159612fc7565b50506001821b610a26565b5060208310610133831016604e8410600b8410161715613187575081810a610a26565b61319183836130c9565b80600019048211156131a5576131a5612fc7565b029392505050565b6000610a8f60ff84168361310c565b6000602082840312156131ce57600080fd5b8151610a8f81612df1565b600081518084526020808501945080840160005b838110156132125781516001600160a01b0316875295820195908201906001016131ed565b509495945050505050565b84815260806020820152600061323660808301866131d9565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a06040820152600061327160a08301866131d9565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156132a357600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207c2e17842595824d73b9f1bda43abda5666094f943e322736e4a2c1420d63d9464736f6c634300080b0033000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c29
Deployed Bytecode
0x6080604052600436106103035760003560e01c80637688c58411610190578063a9059cbb116100dc578063e116554511610095578063ea4cfe121161006f578063ea4cfe121461098d578063f2fde38b146109ad578063f887ea40146109cd578063f9e08969146109f557600080fd5b8063e116554514610937578063e2f4560514610957578063ea2f0b371461096d57600080fd5b8063a9059cbb14610851578063aacebbe314610871578063abeef10214610891578063cdebfea3146108b1578063d257b34f146108d1578063dd62ed3e146108f157600080fd5b80638f9a55c0116101495780639ba5e4d5116101235780639ba5e4d5146107ca578063a457c2d7146107f1578063a5ece94114610811578063a8aa1b311461083157600080fd5b80638f9a55c014610794578063924de9b7146107aa57806395d89b411461030f57600080fd5b80637688c584146106c057806382bf293c146106e757806382d2a4bb1461070757806388e765ff1461072757806388f820201461073d5780638da5cb5b1461077657600080fd5b8063437823ec1161024f57806360e65bb8116102085780636ddd1713116101e25780636ddd17131461065657806370a082311461067557806370e5024114610695578063715018a6146106ab57600080fd5b806360e65bb81461060057806366d602ae1461062057806368ca61451461063657600080fd5b8063437823ec1461052d5780634549b0391461054d5780634ada218b1461056d57806352390c02146105875780635342acb4146105a75780636053a0e3146105e057600080fd5b80632d838119116102bc5780633685d419116102965780633685d4191461049457806339509351146104b45780633bbac579146104d45780633bd5d1731461050d57600080fd5b80632d8381191461043657806330d5d18d14610456578063313ce5671461047857600080fd5b806306fdde031461030f578063095ea7b31461034a57806318160ddd1461037a57806318a90c441461039957806323b872dd146103e857806327c8f8351461040857600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b50604080518082018252600381526241323360e81b602082015290516103419190612d9c565b60405180910390f35b34801561035657600080fd5b5061036a610365366004612e06565b610a15565b6040519015158152602001610341565b34801561038657600080fd5b50600a545b604051908152602001610341565b3480156103a557600080fd5b50601854601954601a54601b54601c546103c0949392919085565b604080519586526020860194909452928401919091526060830152608082015260a001610341565b3480156103f457600080fd5b5061036a610403366004612e32565b610a2c565b34801561041457600080fd5b5061041e61dead81565b6040516001600160a01b039091168152602001610341565b34801561044257600080fd5b5061038b610451366004612e73565b610a96565b34801561046257600080fd5b50610476610471366004612e8c565b610b18565b005b34801561048457600080fd5b5060405160098152602001610341565b3480156104a057600080fd5b506104766104af366004612e8c565b610bbe565b3480156104c057600080fd5b5061036a6104cf366004612e06565b610d75565b3480156104e057600080fd5b5061036a6104ef366004612e8c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561051957600080fd5b50610476610528366004612e73565b610dac565b34801561053957600080fd5b50610476610548366004612e8c565b610ea1565b34801561055957600080fd5b5061038b610568366004612ebe565b610eef565b34801561057957600080fd5b5060085461036a9060ff1681565b34801561059357600080fd5b506104766105a2366004612e8c565b610f7d565b3480156105b357600080fd5b5061036a6105c2366004612e8c565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105ec57600080fd5b5060085461036a9062010000900460ff1681565b34801561060c57600080fd5b5061047661061b366004612eea565b6110d0565b34801561062c57600080fd5b5061038b600d5481565b34801561064257600080fd5b50610476610651366004612f05565b611150565b34801561066257600080fd5b5060085461036a90610100900460ff1681565b34801561068157600080fd5b5061038b610690366004612e8c565b6111c3565b3480156106a157600080fd5b5061038b60105481565b3480156106b757600080fd5b50610476611222565b3480156106cc57600080fd5b506013546014546015546016546017546103c0949392919085565b3480156106f357600080fd5b50610476610702366004612e73565b611258565b34801561071357600080fd5b50610476610722366004612e73565b6112a8565b34801561073357600080fd5b5061038b600c5481565b34801561074957600080fd5b5061036a610758366004612e8c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561078257600080fd5b506000546001600160a01b031661041e565b3480156107a057600080fd5b5061038b600f5481565b3480156107b657600080fd5b506104766107c5366004612eea565b6112e9565b3480156107d657600080fd5b50601d54601e54601f546020546021546103c0949392919085565b3480156107fd57600080fd5b5061036a61080c366004612e06565b61132d565b34801561081d57600080fd5b5060115461041e906001600160a01b031681565b34801561083d57600080fd5b5060095461041e906001600160a01b031681565b34801561085d57600080fd5b5061036a61086c366004612e06565b61137c565b34801561087d57600080fd5b5061047661088c366004612e8c565b611389565b34801561089d57600080fd5b506104766108ac366004612f05565b61142f565b3480156108bd57600080fd5b506104766108cc366004612f40565b6114a2565b3480156108dd57600080fd5b506104766108ec366004612e73565b6114f2565b3480156108fd57600080fd5b5061038b61090c366004612f62565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561094357600080fd5b50610476610952366004612f9b565b611538565b34801561096357600080fd5b5061038b600e5481565b34801561097957600080fd5b50610476610988366004612e8c565b6115f0565b34801561099957600080fd5b5060125461041e906001600160a01b031681565b3480156109b957600080fd5b506104766109c8366004612e8c565b61163b565b3480156109d957600080fd5b5060085461041e9064010000000090046001600160a01b031681565b348015610a0157600080fd5b50610476610a10366004612eea565b6116d6565b6000610a22338484611734565b5060015b92915050565b6000610a39848484611858565b610a8b8433610a86856040518060600160405280602881526020016132bd602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611e59565b611734565b5060015b9392505050565b6000600b54821115610b025760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084015b60405180910390fd5b6000610b0c611e85565b9050610a8f8184612fdd565b6000546001600160a01b03163314610b425760405162461bcd60e51b8152600401610af990612fff565b6012546001600160a01b0382811691161415610b955760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610af9565b601280546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b03163314610be85760405162461bcd60e51b8152600401610af990612fff565b6001600160a01b03811660009081526005602052604090205460ff16610c505760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610af9565b60005b600754811015610d7157816001600160a01b031660078281548110610c7a57610c7a613034565b6000918252602090912001546001600160a01b03161415610d5f5760078054610ca59060019061304a565b81548110610cb557610cb5613034565b600091825260209091200154600780546001600160a01b039092169183908110610ce157610ce1613034565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610d3957610d39613061565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d6981613077565b915050610c53565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a22918590610a86908690613092565b3360008181526005602052604090205460ff1615610e215760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610af9565b6000610e308360016000611ea8565b80516001600160a01b038416600090815260016020526040902054919250610e589190611ef7565b6001600160a01b0383166000908152600160205260409020558051600b54610e7f91611ef7565b600b55601d8054849190600090610e97908490613092565b9091555050505050565b6000546001600160a01b03163314610ecb5760405162461bcd60e51b8152600401610af990612fff565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600a54831115610f435760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610af9565b81610f61576000610f578460016000611ea8565b519150610a269050565b6000610f708460016000611ea8565b602001519150610a269050565b6000546001600160a01b03163314610fa75760405162461bcd60e51b8152600401610af990612fff565b6001600160a01b03811660009081526005602052604090205460ff16156110105760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610af9565b6001600160a01b0381166000908152600160205260409020541561106a576001600160a01b03811660009081526001602052604090205461105090610a96565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146110fa5760405162461bcd60e51b8152600401610af990612fff565b6008805461ffff191661ff0019831515908116919091176101009091021790556040514281527fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e9239060200160405180910390a150565b6000546001600160a01b0316331461117a5760405162461bcd60e51b8152600401610af990612fff565b601385905560148490556015839055601682905560178190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6001600160a01b03811660009081526005602052604081205460ff161561120057506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610a2690610a96565b6000546001600160a01b0316331461124c5760405162461bcd60e51b8152600401610af990612fff565b6112566000611f03565b565b6000546001600160a01b031633146112825760405162461bcd60e51b8152600401610af990612fff565b6112a2606461129c83600a5461171c90919063ffffffff16565b90611728565b600f5550565b6000546001600160a01b031633146112d25760405162461bcd60e51b8152600401610af990612fff565b6112e38166038d7ea4c680006130aa565b60105550565b6000546001600160a01b031633146113135760405162461bcd60e51b8152600401610af990612fff565b600880549115156101000261ff0019909216919091179055565b6000610a223384610a86856040518060600160405280602581526020016132e5602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611e59565b6000610a22338484611858565b6000546001600160a01b031633146113b35760405162461bcd60e51b8152600401610af990612fff565b6011546001600160a01b03828116911614156114065760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610af9565b601180546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b031633146114595760405162461bcd60e51b8152600401610af990612fff565b60188590556019849055601a839055601b829055601c8190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b031633146114cc5760405162461bcd60e51b8152600401610af990612fff565b6114da82633b9aca006130aa565b600c556114eb81633b9aca006130aa565b600d555050565b6000546001600160a01b0316331461151c5760405162461bcd60e51b8152600401610af990612fff565b6115286009600a6131ad565b61153290826130aa565b600e5550565b6000546001600160a01b031633146115625760405162461bcd60e51b8152600401610af990612fff565b6001600160a01b03821660009081526006602052604090205460ff16151581151514156115c55760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610af9565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461161a5760405162461bcd60e51b8152600401610af990612fff565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146116655760405162461bcd60e51b8152600401610af990612fff565b6001600160a01b0381166116ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af9565b6116d381611f03565b50565b6000546001600160a01b031633146117005760405162461bcd60e51b8152600401610af990612fff565b60088054911515620100000262ff000019909216919091179055565b6000610a8f82846130aa565b6000610a8f8284612fdd565b6001600160a01b0383166117965760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610af9565b6001600160a01b0382166117f75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610af9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610af9565b6001600160a01b03821661191e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610af9565b600081116119805760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610af9565b611989836111c3565b8111156119f25760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610af9565b6001600160a01b03831660009081526006602052604090205460ff16158015611a3457506001600160a01b03821660009081526006602052604090205460ff16155b611a705760405162461bcd60e51b815260206004820152600d60248201526c4675636b20796f7520426f747360981b6044820152606401610af9565b6001600160a01b03831660009081526004602052604090205460ff16158015611ab257506001600160a01b03821660009081526004602052604090205460ff16155b15611b095760085460ff16611b095760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610af9565b6000546001600160a01b03848116911614801590611b3557506000546001600160a01b03838116911614155b8015611b4957506001600160a01b03821615155b8015611b6057506001600160a01b03821661dead14155b8015611b7957506009546001600160a01b038481169116145b15611c4757600c54811115611bd05760405162461bcd60e51b815260206004820152601e60248201527f796f752061726520657863656564696e67206d6178427579416d6f756e7400006044820152606401610af9565b6000611bdb836111c3565b600f54909150611beb8383613092565b1115611c455760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b6064820152608401610af9565b505b6000546001600160a01b03848116911614801590611c7357506000546001600160a01b03838116911614155b8015611c8757506001600160a01b03821615155b8015611c9e57506001600160a01b03821661dead14155b8015611cb757506009546001600160a01b038481169116145b15611d1857600d54811115611d185760405162461bcd60e51b815260206004820152602160248201527f416d6f756e7420697320657863656564696e67206d617853656c6c416d6f756e6044820152601d60fa1b6064820152608401610af9565b6000611d23306111c3565b600e54600854919250821015906301000000900460ff16158015611d4e5750600854610100900460ff165b8015611d575750805b8015611d7157506009546001600160a01b03868116911614155b15611de457600854479062010000900460ff168015611d975750670de0b6b3a764000081115b8015611db057506009546001600160a01b038681169116145b15611dd757601054811115611dc457506010545b611dd7611dd2826064611728565b611f53565b611de2600e54611f85565b505b6009546000906001600160a01b0386811691161415611e01575060015b6001600160a01b038616600090815260046020526040902054611e519087908790879060ff1680611e4a57506001600160a01b03891660009081526004602052604090205460ff165b15856120c2565b505050505050565b60008184841115611e7d5760405162461bcd60e51b8152600401610af99190612d9c565b505050900390565b6000806000611e9261237d565b9092509050611ea18183612fdd565b9250505090565b611eb0612d34565b611ebb848484612500565b9050611ed0818585611ecb611e85565b612717565b60c088015260a0870152608086015260608501526040840152602083015281529392505050565b6000610a8f828461304a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805463ff000000191663010000001790558015611f7557611f75816127ed565b506008805463ff00000019169055565b6008805463ff0000001916630100000017905560145460175460165460009291611fae91613092565b611fb89190613092565b611fc39060026130aa565b905060008160136003015484611fd991906130aa565b611fe39190612fdd565b90506000611ff1828561304a565b905047611ffd8261295b565b6000612009824761304a565b60165490915060009061201c908761304a565b6120269083612fdd565b60165490915060009061203990836130aa565b9050801561204b5761204b8682612ad6565b60145460009061205c8460026130aa565b61206691906130aa565b905080156120aa576012546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156120a8573d6000803e3d6000fd5b505b50506008805463ff0000001916905550505050505050565b60006120cf848484611ea8565b6001600160a01b03871660009081526005602052604090205490915060ff1615612131576001600160a01b03861660009081526002602052604090205461211790859061304a565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156121945760e08101516001600160a01b03861660009081526002602052604090205461217a9190613092565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b0387166000908152600160205260409020546121b9919061304a565b6001600160a01b03808816600090815260016020908152604080832094909455840151918816815291909120546121f09190613092565b6001600160a01b03861660009081526001602052604090819020919091558101516101008201516122219190612bbc565b6122348160600151826101200151612bf1565b6122478160a00151826101600151612c67565b61225a8160800151826101400151612c7c565b61226d8160c00151826101800151612d13565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e001516040516122b691815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610180015184610120015185610160015161230f9190613092565b6123199190613092565b60405190815260200160405180910390a36011546101408201516040519081526001600160a01b03918216918816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b600b54600a546000918291825b6007548110156124cf578260016000600784815481106123ac576123ac613034565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061241757508160026000600784815481106123f0576123f0613034565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561242d57600b54600a54945094505050509091565b600160006007838154811061244457612444613034565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612473908461304a565b9250600260006007838154811061248c5761248c613034565b60009182526020808320909101546001600160a01b031683528201929092526040019020546124bb908361304a565b9150806124c781613077565b91505061238a565b50600a54600b546124e09190612fdd565b8210156124f757600b54600a549350935050509091565b90939092509050565b612508612d34565b826125195760e08101849052610a8f565b811561261a576018546103e89061253090866130aa565b61253a9190612fdd565b6101008201526019546103e89061255190866130aa565b61255b9190612fdd565b610120820152601a546103e89061257290866130aa565b61257c9190612fdd565b610140820152601b546103e89061259390866130aa565b61259d9190612fdd565b610160820152601c546103e8906125b490866130aa565b6125be9190612fdd565b61018082018190526101608201516101408301516101208401516101008501516125e8908961304a565b6125f2919061304a565b6125fc919061304a565b612606919061304a565b612610919061304a565b60e0820152610a8f565b6013546103e89061262b90866130aa565b6126359190612fdd565b6101008201526014546103e89061264c90866130aa565b6126569190612fdd565b6101208201526015546103e89061266d90866130aa565b6126779190612fdd565b6101408201526016546103e89061268e90866130aa565b6126989190612fdd565b6101608201526017546103e8906126af90866130aa565b6126b99190612fdd565b61018082018190526101608201516101408301516101208401516101008501516126e3908961304a565b6126ed919061304a565b6126f7919061304a565b612701919061304a565b61270b919061304a565b60e08201529392505050565b6000808080808080612729888b6130aa565b965088612747575085945060009350839250829150819050806127df565b878b610100015161275891906130aa565b9450878b610120015161276b91906130aa565b9350878b610140015161277e91906130aa565b9250878b610160015161279191906130aa565b9150878b61018001516127a491906130aa565b9050808284866127b4898c61304a565b6127be919061304a565b6127c8919061304a565b6127d2919061304a565b6127dc919061304a565b95505b949950949992975094509450565b604080516002808252606082018352600092602083019080368337019050509050600860049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612861573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288591906131bc565b8160008151811061289857612898613034565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106128cc576128cc613034565b6001600160a01b03928316602091820292909201015260085464010000000090041663b6f9de958360008461dead6129064261012c612d28565b6040518663ffffffff1660e01b8152600401612925949392919061321d565b6000604051808303818588803b15801561293e57600080fd5b505af1158015612952573d6000803e3d6000fd5b50505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061299057612990613034565b60200260200101906001600160a01b031690816001600160a01b031681525050600860049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2791906131bc565b81600181518110612a3a57612a3a613034565b6001600160a01b039283166020918202929092010152600854612a6891309164010000000090041684611734565b60085460405163791ac94760e01b81526401000000009091046001600160a01b03169063791ac94790612aa8908590600090869030904290600401613252565b600060405180830381600087803b158015612ac257600080fd5b505af1158015611e51573d6000803e3d6000fd5b600854612af690309064010000000090046001600160a01b031684611734565b6008546001600160a01b036401000000009091041663f305d719823085600080612b286000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612b90573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612bb5919061328e565b5050505050565b81600b6000828254612bce919061304a565b9091555050601d8054829190600090612be8908490613092565b90915550505050565b80601d6001016000828254612c069190613092565b90915550503060009081526005602052604090205460ff1615612c48573060009081526002602052604081208054839290612c42908490613092565b90915550505b3060009081526001602052604081208054849290612be8908490613092565b80601d6003016000828254612c069190613092565b80601d6002016000828254612c919190613092565b90915550506011546001600160a01b031660009081526005602052604090205460ff1615612ce9576011546001600160a01b031660009081526002602052604081208054839290612ce3908490613092565b90915550505b6011546001600160a01b031660009081526001602052604081208054849290612be8908490613092565b80601d6004016000828254612c069190613092565b6000610a8f8284613092565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b81811015612dc957858101830151858201604001528201612dad565b81811115612ddb576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146116d357600080fd5b60008060408385031215612e1957600080fd5b8235612e2481612df1565b946020939093013593505050565b600080600060608486031215612e4757600080fd5b8335612e5281612df1565b92506020840135612e6281612df1565b929592945050506040919091013590565b600060208284031215612e8557600080fd5b5035919050565b600060208284031215612e9e57600080fd5b8135610a8f81612df1565b80358015158114612eb957600080fd5b919050565b60008060408385031215612ed157600080fd5b82359150612ee160208401612ea9565b90509250929050565b600060208284031215612efc57600080fd5b610a8f82612ea9565b600080600080600060a08688031215612f1d57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612f5357600080fd5b50508035926020909101359150565b60008060408385031215612f7557600080fd5b8235612f8081612df1565b91506020830135612f9081612df1565b809150509250929050565b60008060408385031215612fae57600080fd5b8235612fb981612df1565b9150612ee160208401612ea9565b634e487b7160e01b600052601160045260246000fd5b600082612ffa57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008282101561305c5761305c612fc7565b500390565b634e487b7160e01b600052603160045260246000fd5b600060001982141561308b5761308b612fc7565b5060010190565b600082198211156130a5576130a5612fc7565b500190565b60008160001904831182151516156130c4576130c4612fc7565b500290565b600181815b808511156131045781600019048211156130ea576130ea612fc7565b808516156130f757918102915b93841c93908002906130ce565b509250929050565b60008261311b57506001610a26565b8161312857506000610a26565b816001811461313e576002811461314857613164565b6001915050610a26565b60ff84111561315957613159612fc7565b50506001821b610a26565b5060208310610133831016604e8410600b8410161715613187575081810a610a26565b61319183836130c9565b80600019048211156131a5576131a5612fc7565b029392505050565b6000610a8f60ff84168361310c565b6000602082840312156131ce57600080fd5b8151610a8f81612df1565b600081518084526020808501945080840160005b838110156132125781516001600160a01b0316875295820195908201906001016131ed565b509495945050505050565b84815260806020820152600061323660808301866131d9565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a06040820152600061327160a08301866131d9565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156132a357600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207c2e17842595824d73b9f1bda43abda5666094f943e322736e4a2c1420d63d9464736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c29
-----Decoded View---------------
Arg [0] : routerAddress (address): 0xF491e7B69E4244ad4002BC14e878a34207E38c29
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c29
Deployed Bytecode Sourcemap
9211:21222:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12630:83;;;;;;;;;;-1:-1:-1;12700:5:0;;;;;;;;;;;-1:-1:-1;;;12700:5:0;;;;12630:83;;;;12700:5;12630:83;:::i;:::-;;;;;;;;13561:161;;;;;;;;;;-1:-1:-1;13561:161:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;13561:161:0;1072:187:1;12926:95:0;;;;;;;;;;-1:-1:-1;13006:7:0;;12926:95;;;1410:25:1;;;1398:2;1383:18;12926:95:0;1264:177:1;11092:157:0;;;;;;;;;;-1:-1:-1;11092:157:0;;;;;;;;;;;;;;;;;;;;;;1705:25:1;;;1761:2;1746:18;;1739:34;;;;1789:18;;;1782:34;;;;1847:2;1832:18;;1825:34;1890:3;1875:19;;1868:35;1692:3;1677:19;11092:157:0;1446:463:1;13730:313:0;;;;;;;;;;-1:-1:-1;13730:313:0;;;;;:::i;:::-;;:::i;10579:80::-;;;;;;;;;;;;10617:42;10579:80;;;;;-1:-1:-1;;;;;2539:32:1;;;2521:51;;2509:2;2494:18;10579:80:0;2375:203:1;15748:248:0;;;;;;;;;;-1:-1:-1;15748:248:0;;;;;:::i;:::-;;:::i;29149:237::-;;;;;;;;;;-1:-1:-1;29149:237:0;;;;;:::i;:::-;;:::i;:::-;;12812:83;;;;;;;;;;-1:-1:-1;12812:83:0;;9931:1;3162:36:1;;3150:2;3135:18;12812:83:0;3020:184:1;16411:475:0;;;;;;;;;;-1:-1:-1;16411:475:0;;;;;:::i;:::-;;:::i;14051:213::-;;;;;;;;;;-1:-1:-1;14051:213:0;;;;;:::i;:::-;;:::i;30285:98::-;;;;;;;;;;-1:-1:-1;30285:98:0;;;;;:::i;:::-;-1:-1:-1;;;;;30360:15:0;30337:4;30360:15;;;:6;:15;;;;;;;;;30285:98;14677:390;;;;;;;;;;-1:-1:-1;14677:390:0;;;;;:::i;:::-;;:::i;16894:111::-;;;;;;;;;;-1:-1:-1;16894:111:0;;;;;:::i;:::-;;:::i;15081:470::-;;;;;;;;;;-1:-1:-1;15081:470:0;;;;;:::i;:::-;;:::i;9706:26::-;;;;;;;;;;-1:-1:-1;9706:26:0;;;;;;;;16070:333;;;;;;;;;;-1:-1:-1;16070:333:0;;;;;:::i;:::-;;:::i;17133:123::-;;;;;;;;;;-1:-1:-1;17133:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;17221:27:0;17197:4;17221:27;;;:18;:27;;;;;;;;;17133:123;9769:34;;;;;;;;;;-1:-1:-1;9769:34:0;;;;;;;;;;;15559:179;;;;;;;;;;-1:-1:-1;15559:179:0;;;;;:::i;:::-;;:::i;10167:54::-;;;;;;;;;;;;;;;;17448:366;;;;;;;;;;-1:-1:-1;17448:366:0;;;;;:::i;:::-;;:::i;9739:23::-;;;;;;;;;;-1:-1:-1;9739:23:0;;;;;;;;;;;13029:198;;;;;;;;;;-1:-1:-1;13029:198:0;;;;;:::i;:::-;;:::i;10358:45::-;;;;;;;;;;;;;;;;7577:94;;;;;;;;;;;;;:::i;10925:158::-;;;;;;;;;;-1:-1:-1;10925:158:0;;;;;;;;;;;;;;;;;;17263:171;;;;;;;;;;-1:-1:-1;17263:171:0;;;;;:::i;:::-;;:::i;30144:133::-;;;;;;;;;;-1:-1:-1;30144:133:0;;;;;:::i;:::-;;:::i;10107:53::-;;;;;;;;;;;;;;;;14549:120;;;;;;;;;;-1:-1:-1;14549:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;14641:20:0;14617:4;14641:20;;;:11;:20;;;;;;;;;14549:120;7354:87;;;;;;;;;;-1:-1:-1;7400:7:0;7427:6;-1:-1:-1;;;;;7427:6:0;7354:87;;10293:57;;;;;;;;;;;;;;;;29741:101;;;;;;;;;;-1:-1:-1;29741:101:0;;;;;:::i;:::-;;:::i;11429:36::-;;;;;;;;;;-1:-1:-1;11429:36:0;;;;;;;;;;;;;;;;;;14272:269;;;;;;;;;;-1:-1:-1;14272:269:0;;;;;:::i;:::-;;:::i;10412:76::-;;;;;;;;;;-1:-1:-1;10412:76:0;;;;-1:-1:-1;;;;;10412:76:0;;;9868:19;;;;;;;;;;-1:-1:-1;9868:19:0;;;;-1:-1:-1;;;;;9868:19:0;;;13235:167;;;;;;;;;;-1:-1:-1;13235:167:0;;;;;:::i;:::-;;:::i;28908:233::-;;;;;;;;;;-1:-1:-1;28908:233:0;;;;;:::i;:::-;;:::i;17822:389::-;;;;;;;;;;-1:-1:-1;17822:389:0;;;;;:::i;:::-;;:::i;29394:201::-;;;;;;;;;;-1:-1:-1;29394:201:0;;;;;:::i;:::-;;:::i;29603:130::-;;;;;;;;;;-1:-1:-1;29603:130:0;;;;;:::i;:::-;;:::i;13410:143::-;;;;;;;;;;-1:-1:-1;13410:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;13518:18:0;;;13491:7;13518:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13410:143;29965:171;;;;;;;;;;-1:-1:-1;29965:171:0;;;;;:::i;:::-;;:::i;10228:58::-;;;;;;;;;;;;;;;;17013:110;;;;;;;;;;-1:-1:-1;17013:110:0;;;;;:::i;:::-;;:::i;10495:77::-;;;;;;;;;;-1:-1:-1;10495:77:0;;;;-1:-1:-1;;;;;10495:77:0;;;7679:192;;;;;;;;;;-1:-1:-1;7679:192:0;;;;;:::i;:::-;;:::i;9840:21::-;;;;;;;;;;-1:-1:-1;9840:21:0;;;;;;;-1:-1:-1;;;;;9840:21:0;;;29850:107;;;;;;;;;;-1:-1:-1;29850:107:0;;;;;:::i;:::-;;:::i;13561:161::-;13636:4;13653:39;3311:10;13676:7;13685:6;13653:8;:39::i;:::-;-1:-1:-1;13710:4:0;13561:161;;;;;:::o;13730:313::-;13828:4;13845:36;13855:6;13863:9;13874:6;13845:9;:36::i;:::-;13892:121;13901:6;3311:10;13923:89;13961:6;13923:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13923:19:0;;;;;;:11;:19;;;;;;;;3311:10;13923:33;;;;;;;;;;:37;:89::i;:::-;13892:8;:121::i;:::-;-1:-1:-1;14031:4:0;13730:313;;;;;;:::o;15748:248::-;15814:7;15853;;15842;:18;;15834:73;;;;-1:-1:-1;;;15834:73:0;;5662:2:1;15834:73:0;;;5644:21:1;5701:2;5681:18;;;5674:30;5740:34;5720:18;;;5713:62;-1:-1:-1;;;5791:18:1;;;5784:40;5841:19;;15834:73:0;;;;;;;;;15918:19;15941:10;:8;:10::i;:::-;15918:33;-1:-1:-1;15969:19:0;15918:33;15969:7;:19;:::i;29149:237::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;29237:17:::1;::::0;-1:-1:-1;;;;;29237:30:0;;::::1;:17:::0;::::1;:30;;29229:61;;;::::0;-1:-1:-1;;;29229:61:0;;6788:2:1;29229:61:0::1;::::0;::::1;6770:21:1::0;6827:2;6807:18;;;6800:30;-1:-1:-1;;;6846:18:1;;;6839:48;6904:18;;29229:61:0::1;6586:342:1::0;29229:61:0::1;29301:17;:29:::0;;-1:-1:-1;;;;;29301:29:0;;::::1;-1:-1:-1::0;;;;;;29301:29:0;;::::1;::::0;::::1;::::0;;:17:::1;29341:37:::0;:18:::1;:37;::::0;29149:237::o;16411:475::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16493:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16485:56;;;::::0;-1:-1:-1;;;16485:56:0;;7135:2:1;16485:56:0::1;::::0;::::1;7117:21:1::0;7174:2;7154:18;;;7147:30;7213:25;7193:18;;;7186:53;7256:18;;16485:56:0::1;6933:347:1::0;16485:56:0::1;16557:9;16552:327;16576:9;:16:::0;16572:20;::::1;16552:327;;;16634:7;-1:-1:-1::0;;;;;16618:23:0::1;:9;16628:1;16618:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;16618:12:0::1;:23;16614:254;;;16677:9;16687:16:::0;;:20:::1;::::0;16706:1:::1;::::0;16687:20:::1;:::i;:::-;16677:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;16662:9:::1;:12:::0;;-1:-1:-1;;;;;16677:31:0;;::::1;::::0;16672:1;;16662:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;16662:46:0::1;-1:-1:-1::0;;;;;16662:46:0;;::::1;;::::0;;16727:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;16766:11:::1;:20:::0;;;;:28;;-1:-1:-1;;16766:28:0::1;::::0;;16813:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;16813:15:0;;;;;-1:-1:-1;;;;;;16813:15:0::1;::::0;;;;;16552:327:::1;16411:475:::0;:::o;16614:254::-:1;16594:3:::0;::::1;::::0;::::1;:::i;:::-;;;;16552:327;;;;16411:475:::0;:::o;14051:213::-;3311:10;14139:4;14188:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14188:34:0;;;;;;;;;;14139:4;;14156:78;;14179:7;;14188:45;;14223:10;;14188:45;:::i;14677:390::-;3311:10;14729:14;14778:19;;;:11;:19;;;;;;;;14777:20;14769:77;;;;-1:-1:-1;;;14769:77:0;;8154:2:1;14769:77:0;;;8136:21:1;8193:2;8173:18;;;8166:30;8232:34;8212:18;;;8205:62;-1:-1:-1;;;8283:18:1;;;8276:42;8335:19;;14769:77:0;7952:408:1;14769:77:0;14857:28;14888:32;14899:7;14908:4;14914:5;14888:10;:32::i;:::-;14969:9;;-1:-1:-1;;;;;14949:15:0;;14969:9;14949:15;;;:7;:15;;;;;;14857:63;;-1:-1:-1;14949:30:0;;:15;:19;:30::i;:::-;-1:-1:-1;;;;;14931:15:0;;;;;;:7;:15;;;;;:48;15012:9;;15000:7;;:22;;:11;:22::i;:::-;14990:7;:32;15033:11;:26;;15052:7;;15033:11;:15;;:26;;15052:7;;15033:26;:::i;:::-;;;;-1:-1:-1;;;;;14677:390:0:o;16894:111::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16963:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;16963:34:0::1;16993:4;16963:34;::::0;;16894:111::o;15081:470::-;15171:7;15210;;15199;:18;;15191:62;;;;-1:-1:-1;;;15191:62:0;;8567:2:1;15191:62:0;;;8549:21:1;8606:2;8586:18;;;8579:30;8645:33;8625:18;;;8618:61;8696:18;;15191:62:0;8365:355:1;15191:62:0;15269:17;15264:280;;15303:28;15334:32;15345:7;15354:4;15360:5;15334:10;:32::i;:::-;15388:9;;-1:-1:-1;15381:16:0;;-1:-1:-1;15381:16:0;15264:280;15430:28;15461:32;15472:7;15481:4;15487:5;15461:10;:32::i;:::-;15515:17;;;;-1:-1:-1;15508:24:0;;-1:-1:-1;15508:24:0;16070:333;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16153:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16152:21;16144:61;;;::::0;-1:-1:-1;;;16144:61:0;;8927:2:1;16144:61:0::1;::::0;::::1;8909:21:1::0;8966:2;8946:18;;;8939:30;9005:29;8985:18;;;8978:57;9052:18;;16144:61:0::1;8725:351:1::0;16144:61:0::1;-1:-1:-1::0;;;;;16219:16:0;::::1;16238:1;16219:16:::0;;;:7:::1;:16;::::0;;;;;:20;16216:108:::1;;-1:-1:-1::0;;;;;16295:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;16275:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;16256:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;16216:108:::1;-1:-1:-1::0;;;;;16334:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;16334:27:0::1;16357:4;16334:27:::0;;::::1;::::0;;;16372:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;16372:23:0::1;::::0;;::::1;::::0;;16070:333::o;15559:179::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;15625:14:::1;:25:::0;;-1:-1:-1;;15661:22:0;-1:-1:-1;;15625:25:0;::::1;;15661:22:::0;;;;;;;15625:25:::1;15661:22:::0;;::::1;;::::0;;15699:31:::1;::::0;15714:15:::1;1410:25:1::0;;15699:31:0::1;::::0;1398:2:1;1383:18;15699:31:0::1;;;;;;;15559:179:::0;:::o;17448:366::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;17592:8:::1;:19:::0;;;17622;:33;;;17666:18;:31;;;17708:18;:31;;;17750:16;:27;;;17793:13:::1;::::0;::::1;::::0;17592:12:::1;::::0;17793:13:::1;17448:366:::0;;;;;:::o;13029:198::-;-1:-1:-1;;;;;13119:20:0;;13095:7;13119:20;;;:11;:20;;;;;;;;13115:49;;;-1:-1:-1;;;;;;13148:16:0;;;;;:7;:16;;;;;;;13029:198::o;13115:49::-;-1:-1:-1;;;;;13202:16:0;;;;;;:7;:16;;;;;;13182:37;;:19;:37::i;7577:94::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;7642:21:::1;7660:1;7642:9;:21::i;:::-;7577:94::o:0;17263:171::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;17365:62:::1;17411:5;17365:27;17377:14;17365:7;;:11;;:27;;;;:::i;:::-;:31:::0;::::1;:62::i;:::-;17348:14;:79:::0;-1:-1:-1;17263:171:0:o;30144:133::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;30248:21:::1;:12:::0;30263:6:::1;30248:21;:::i;:::-;30228:17;:41:::0;-1:-1:-1;30144:133:0:o;29741:101::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;29812:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;29812:22:0;;::::1;::::0;;;::::1;::::0;;29741:101::o;14272:269::-;14365:4;14382:129;3311:10;14405:7;14414:96;14453:15;14414:96;;;;;;;;;;;;;;;;;3311:10;14414:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14414:34:0;;;;;;;;;;;;:38;:96::i;13235:167::-;13313:4;13330:42;3311:10;13354:9;13365:6;13330:9;:42::i;28908:233::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;28995:16:::1;::::0;-1:-1:-1;;;;;28995:29:0;;::::1;:16:::0;::::1;:29;;28987:60;;;::::0;-1:-1:-1;;;28987:60:0;;6788:2:1;28987:60:0::1;::::0;::::1;6770:21:1::0;6827:2;6807:18;;;6800:30;-1:-1:-1;;;6846:18:1;;;6839:48;6904:18;;28987:60:0::1;6586:342:1::0;28987:60:0::1;29058:16;:28:::0;;-1:-1:-1;;;;;29058:28:0;;::::1;-1:-1:-1::0;;;;;;29058:28:0;;::::1;::::0;::::1;::::0;;:16:::1;29097:36:::0;:18:::1;:36;::::0;28908:233::o;17822:389::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;17969:12:::1;:23:::0;;;18003;:37;;;18051:22;:35;;;18097:22;:35;;;18143:20;:31;;;18190:13:::1;::::0;::::1;::::0;17969:16:::1;::::0;18190:13:::1;17822:389:::0;;;;;:::o;29394:201::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;29517:21:::1;:13:::0;29533:5:::1;29517:21;:::i;:::-;29502:12;:36:::0;29565:22:::1;:14:::0;29582:5:::1;29565:22;:::i;:::-;29549:13;:38:::0;-1:-1:-1;;29394:201:0:o;29603:130::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;29712:13:::1;9931:1;29712:2;:13;:::i;:::-;29703:22;::::0;:6;:22:::1;:::i;:::-;29682:18;:43:::0;-1:-1:-1;29603:130:0:o;29965:171::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30050:15:0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;::::1;;:23;;::::0;::::1;;;;30042:53;;;::::0;-1:-1:-1;;;30042:53:0;;10839:2:1;30042:53:0::1;::::0;::::1;10821:21:1::0;10878:2;10858:18;;;10851:30;-1:-1:-1;;;10897:18:1;;;10890:47;10954:18;;30042:53:0::1;10637:341:1::0;30042:53:0::1;-1:-1:-1::0;;;;;30106:15:0;;;::::1;;::::0;;;:6:::1;:15;::::0;;;;:22;;-1:-1:-1;;30106:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29965:171::o;17013:110::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17080:27:0::1;17110:5;17080:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;17080:35:0::1;::::0;;17013:110::o;7679:192::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7768:22:0;::::1;7760:73;;;::::0;-1:-1:-1;;;7760:73:0;;11185:2:1;7760:73:0::1;::::0;::::1;11167:21:1::0;11224:2;11204:18;;;11197:30;11263:34;11243:18;;;11236:62;-1:-1:-1;;;11314:18:1;;;11307:36;11360:19;;7760:73:0::1;10983:402:1::0;7760:73:0::1;7844:19;7854:8;7844:9;:19::i;:::-;7679:192:::0;:::o;29850:107::-;7400:7;7427:6;-1:-1:-1;;;;;7427:6:0;3311:10;7489:23;7481:68;;;;-1:-1:-1;;;7481:68:0;;;;;;;:::i;:::-;29924:14:::1;:25:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;29924:25:0;;::::1;::::0;;;::::1;::::0;;29850:107::o;2139:98::-;2197:7;2224:5;2228:1;2224;:5;:::i;2245:98::-;2303:7;2330:5;2334:1;2330;:5;:::i;22587:335::-;-1:-1:-1;;;;;22680:19:0;;22672:68;;;;-1:-1:-1;;;22672:68:0;;11592:2:1;22672:68:0;;;11574:21:1;11631:2;11611:18;;;11604:30;11670:34;11650:18;;;11643:62;-1:-1:-1;;;11721:18:1;;;11714:34;11765:19;;22672:68:0;11390:400:1;22672:68:0;-1:-1:-1;;;;;22759:21:0;;22751:68;;;;-1:-1:-1;;;22751:68:0;;11997:2:1;22751:68:0;;;11979:21:1;12036:2;12016:18;;;12009:30;12075:34;12055:18;;;12048:62;-1:-1:-1;;;12126:18:1;;;12119:32;12168:19;;22751:68:0;11795:398:1;22751:68:0;-1:-1:-1;;;;;22830:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22882:32;;1410:25:1;;;22882:32:0;;1383:18:1;22882:32:0;;;;;;;22587:335;;;:::o;22930:2017::-;-1:-1:-1;;;;;23026:18:0;;23018:68;;;;-1:-1:-1;;;23018:68:0;;12400:2:1;23018:68:0;;;12382:21:1;12439:2;12419:18;;;12412:30;12478:34;12458:18;;;12451:62;-1:-1:-1;;;12529:18:1;;;12522:35;12574:19;;23018:68:0;12198:401:1;23018:68:0;-1:-1:-1;;;;;23105:16:0;;23097:64;;;;-1:-1:-1;;;23097:64:0;;12806:2:1;23097:64:0;;;12788:21:1;12845:2;12825:18;;;12818:30;12884:34;12864:18;;;12857:62;-1:-1:-1;;;12935:18:1;;;12928:33;12978:19;;23097:64:0;12604:399:1;23097:64:0;23189:1;23180:6;:10;23172:64;;;;-1:-1:-1;;;23172:64:0;;13210:2:1;23172:64:0;;;13192:21:1;13249:2;13229:18;;;13222:30;13288:34;13268:18;;;13261:62;-1:-1:-1;;;13339:18:1;;;13332:39;13388:19;;23172:64:0;13008:405:1;23172:64:0;23265:15;23275:4;23265:9;:15::i;:::-;23255:6;:25;;23247:86;;;;-1:-1:-1;;;23247:86:0;;13620:2:1;23247:86:0;;;13602:21:1;13659:2;13639:18;;;13632:30;13698:34;13678:18;;;13671:62;-1:-1:-1;;;13749:18:1;;;13742:47;13806:19;;23247:86:0;13418:413:1;23247:86:0;-1:-1:-1;;;;;23353:12:0;;;;;;:6;:12;;;;;;;;23352:13;:28;;;;-1:-1:-1;;;;;;23370:10:0;;;;;;:6;:10;;;;;;;;23369:11;23352:28;23344:54;;;;-1:-1:-1;;;23344:54:0;;14038:2:1;23344:54:0;;;14020:21:1;14077:2;14057:18;;;14050:30;-1:-1:-1;;;14096:18:1;;;14089:43;14149:18;;23344:54:0;13836:337:1;23344:54:0;-1:-1:-1;;;;;23415:24:0;;;;;;:18;:24;;;;;;;;23414:25;:52;;;;-1:-1:-1;;;;;;23444:22:0;;;;;;:18;:22;;;;;;;;23443:23;23414:52;23411:136;;;23490:14;;;;23482:53;;;;-1:-1:-1;;;23482:53:0;;14380:2:1;23482:53:0;;;14362:21:1;14419:2;14399:18;;;14392:30;14458:28;14438:18;;;14431:56;14504:18;;23482:53:0;14178:350:1;23482:53:0;7400:7;7427:6;-1:-1:-1;;;;;23563:15:0;;;7427:6;;23563:15;;;;:45;;-1:-1:-1;7400:7:0;7427:6;-1:-1:-1;;;;;23595:13:0;;;7427:6;;23595:13;;23563:45;:78;;;;-1:-1:-1;;;;;;23625:16:0;;;;23563:78;:116;;;;-1:-1:-1;;;;;;23658:21:0;;23672:6;23658:21;;23563:116;:145;;;;-1:-1:-1;23704:4:0;;-1:-1:-1;;;;;23696:12:0;;;23704:4;;23696:12;23563:145;23559:410;;;23742:12;;23732:6;:22;;23724:65;;;;-1:-1:-1;;;23724:65:0;;14735:2:1;23724:65:0;;;14717:21:1;14774:2;14754:18;;;14747:30;14813:32;14793:18;;;14786:60;14863:18;;23724:65:0;14533:354:1;23724:65:0;23803:28;23834:13;23844:2;23834:9;:13::i;:::-;23903:14;;23803:44;;-1:-1:-1;23870:29:0;23893:6;23803:44;23870:29;:::i;:::-;:47;;23862:95;;;;-1:-1:-1;;;23862:95:0;;15094:2:1;23862:95:0;;;15076:21:1;15133:2;15113:18;;;15106:30;15172:34;15152:18;;;15145:62;-1:-1:-1;;;15223:18:1;;;15216:33;15266:19;;23862:95:0;14892:399:1;23862:95:0;23709:260;23559:410;7400:7;7427:6;-1:-1:-1;;;;;23985:15:0;;;7427:6;;23985:15;;;;:45;;-1:-1:-1;7400:7:0;7427:6;-1:-1:-1;;;;;24017:13:0;;;7427:6;;24017:13;;23985:45;:78;;;;-1:-1:-1;;;;;;24047:16:0;;;;23985:78;:116;;;;-1:-1:-1;;;;;;24080:21:0;;24094:6;24080:21;;23985:116;:145;;;;-1:-1:-1;24126:4:0;;-1:-1:-1;;;;;24118:12:0;;;24126:4;;24118:12;23985:145;23981:246;;;24164:13;;24154:6;:23;;24146:69;;;;-1:-1:-1;;;24146:69:0;;15498:2:1;24146:69:0;;;15480:21:1;15537:2;15517:18;;;15510:30;15576:34;15556:18;;;15549:62;-1:-1:-1;;;15627:18:1;;;15620:31;15668:19;;24146:69:0;15296:397:1;24146:69:0;24239:28;24270:24;24288:4;24270:9;:24::i;:::-;24344:18;;24377:8;;24239:55;;-1:-1:-1;24320:42:0;;;;24377:8;;;;;24376:9;:24;;;;-1:-1:-1;24389:11:0;;;;;;;24376:24;:35;;;;;24404:7;24376:35;:51;;;;-1:-1:-1;24423:4:0;;-1:-1:-1;;;;;24415:12:0;;;24423:4;;24415:12;;24376:51;24373:398;;;24501:14;;24461:21;;24501:14;;;;;:47;;;;;24537:10;24519:7;:29;24501:47;:61;;;;-1:-1:-1;24558:4:0;;-1:-1:-1;;;;;24552:10:0;;;24558:4;;24552:10;24501:61;24497:212;;;24597:17;;24587:7;:27;24583:60;;;-1:-1:-1;24626:17:0;;24583:60;24662:31;24676:16;:7;24688:3;24676:11;:16::i;:::-;24662:13;:31::i;:::-;24725:34;24740:18;;24725:14;:34::i;:::-;24428:343;24373:398;24812:4;;24781:11;;-1:-1:-1;;;;;24806:10:0;;;24812:4;;24806:10;24803:28;;;-1:-1:-1;24827:4:0;24803:28;-1:-1:-1;;;;;24879:24:0;;;;;;:18;:24;;;;;;24844:95;;24859:4;;24865:2;;24869:6;;24879:24;;;:50;;-1:-1:-1;;;;;;24907:22:0;;;;;;:18;:22;;;;;;;;24879:50;24877:53;24932:6;24844:14;:95::i;:::-;22999:1948;;;22930:2017;;;:::o;2457:240::-;2577:7;2638:12;2630:6;;;;2622:29;;;;-1:-1:-1;;;2622:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2673:5:0;;;2457:240::o;21873:158::-;21914:7;21935:15;21952;21971:19;:17;:19::i;:::-;21934:56;;-1:-1:-1;21934:56:0;-1:-1:-1;22008:15:0;21934:56;;22008:15;:::i;:::-;22001:22;;;;21873:158;:::o;19513:433::-;19599:36;;:::i;:::-;19660:37;19672:7;19681;19690:6;19660:11;:37::i;:::-;19648:49;;19859:52;19871:9;19882:7;19891;19900:10;:8;:10::i;:::-;19859:11;:52::i;:::-;19837:18;;;19708:203;19815:20;;;19708:203;19793:20;;;19708:203;19770:21;;;19708:203;19755:14;;;19708:203;19728:25;;;19708:203;;;19513:433;;;;;:::o;2033:98::-;2091:7;2118:5;2122:1;2118;:5;:::i;7879:173::-;7935:16;7954:6;;-1:-1:-1;;;;;7971:17:0;;;-1:-1:-1;;;;;;7971:17:0;;;;;;8004:40;;7954:6;;;;;;;8004:40;;7935:16;8004:40;7924:128;7879:173;:::o;26089:134::-;12030:8;:15;;-1:-1:-1;;12030:15:0;;;;;26159:10;;26155:61:::1;;26183:24;26200:6;26183:16;:24::i;:::-;-1:-1:-1::0;12068:8:0;:16;;-1:-1:-1;;12068:16:0;;;26089:134::o;26744:1081::-;12030:8;:15;;-1:-1:-1;;12030:15:0;;;;;26928:19;;26909:16;;26888:18;;12030:15;;26928:19;26888:37:::1;::::0;::::1;:::i;:::-;:59;;;;:::i;:::-;26887:65;::::0;26951:1:::1;26887:65;:::i;:::-;26866:86;;26963:32;27028:11;27007:8;:18;;;26998:6;:27;;;;:::i;:::-;:41;;;;:::i;:::-;26963:76:::0;-1:-1:-1;27050:14:0::1;27067:33;26963:76:::0;27067:6;:33:::1;:::i;:::-;27050:50:::0;-1:-1:-1;27138:21:0::1;27172:24;27050:50:::0;27172:16:::1;:24::i;:::-;27209:20;27232:38;27256:14:::0;27232:21:::1;:38;:::i;:::-;27332:18:::0;;27209:61;;-1:-1:-1;27281:19:0::1;::::0;27318:32:::1;::::0;:11;:32:::1;:::i;:::-;27302:49;::::0;:12;:49:::1;:::i;:::-;27408:18:::0;;27281:70;;-1:-1:-1;27362:29:0::1;::::0;27394:32:::1;::::0;27281:70;27394:32:::1;:::i;:::-;27362:64:::0;-1:-1:-1;27442:25:0;;27439:158:::1;;27524:61;27537:24;27563:21;27524:12;:61::i;:::-;27692:19:::0;;27650:21:::1;::::0;27674:15:::1;:11:::0;27688:1:::1;27674:15;:::i;:::-;:37;;;;:::i;:::-;27650:61:::0;-1:-1:-1;27725:17:0;;27722:96:::1;;27764:17;::::0;27756:50:::1;::::0;-1:-1:-1;;;;;27764:17:0;;::::1;::::0;27756:50;::::1;;;::::0;27792:13;;27764:17:::1;27756:50:::0;27764:17;27756:50;27792:13;27764:17;27756:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27722:96;-1:-1:-1::0;;12068:8:0;:16;;-1:-1:-1;;12068:16:0;;;-1:-1:-1;;;;;;;26744:1081:0:o;25028:1053::-;25152:28;25183:36;25194:7;25203;25212:6;25183:10;:36::i;:::-;-1:-1:-1;;;;;25236:19:0;;;;;;:11;:19;;;;;;25152:67;;-1:-1:-1;25236:19:0;;25232:115;;;-1:-1:-1;;;;;25312:15:0;;;;;;:7;:15;;;;;;:23;;25328:7;;25312:23;:::i;:::-;-1:-1:-1;;;;;25294:15:0;;;;;;:7;:15;;;;;:41;25232:115;-1:-1:-1;;;;;25361:22:0;;;;;;:11;:22;;;;;;;;25357:130;;;25458:17;;;;-1:-1:-1;;;;;25439:18:0;;;;;;:7;:18;;;;;;:36;;25458:17;25439:36;:::i;:::-;-1:-1:-1;;;;;25418:18:0;;;;;;:7;:18;;;;;:57;25357:130;25533:9;;-1:-1:-1;;;;;25517:15:0;;25533:9;25517:15;;;:7;:15;;;;;;:25;;25533:9;25517:25;:::i;:::-;-1:-1:-1;;;;;25499:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;25593:17;;;25574:18;;;;;;;;;;:36;;25593:17;25574:36;:::i;:::-;-1:-1:-1;;;;;25553:18:0;;;;;;:7;:18;;;;;;;:57;;;;25633:6;;;25641;;;;25621:27;;25633:6;25621:11;:27::i;:::-;25659:44;25675:1;:13;;;25689:1;:13;;;25659:15;:44::i;:::-;25714:41;25729:1;:12;;;25742:1;:12;;;25714:14;:41::i;:::-;25766:42;25781:1;:12;;;25795:1;:12;;;25766:14;:42::i;:::-;25819:36;25832:1;:10;;;25844:1;:10;;;25819:12;:36::i;:::-;25888:9;-1:-1:-1;;;;;25871:46:0;25880:6;-1:-1:-1;;;;;25871:46:0;;25899:1;:17;;;25871:46;;;;1410:25:1;;1398:2;1383:18;;1264:177;25871:46:0;;;;;;;;25958:4;-1:-1:-1;;;;;25933:74:0;25942:6;-1:-1:-1;;;;;25933:74:0;;25996:1;:10;;;25980:1;:13;;;25965:1;:12;;;:28;;;;:::i;:::-;:41;;;;:::i;:::-;25933:74;;1410:25:1;;;1398:2;1383:18;25933:74:0;;;;;;;26040:16;;26058:12;;;;26023:48;;1410:25:1;;;-1:-1:-1;;;;;26040:16:0;;;;26023:48;;;;;1398:2:1;1383:18;26023:48:0;;;;;;;25139:942;25028:1053;;;;;:::o;22039:540::-;22136:7;;22172;;22089;;;;;22190:279;22214:9;:16;22210:20;;22190:279;;;22280:7;22256;:21;22264:9;22274:1;22264:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22264:12:0;22256:21;;;;;;;;;;;;;:31;;:66;;;22315:7;22291;:21;22299:9;22309:1;22299:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22299:12:0;22291:21;;;;;;;;;;;;;:31;22256:66;22252:97;;;22332:7;;22341;;22324:25;;;;;;;22039:540;;:::o;22252:97::-;22382:7;:21;22390:9;22400:1;22390:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22390:12:0;22382:21;;;;;;;;;;;;;22374:29;;:7;:29;:::i;:::-;22364:39;;22436:7;:21;22444:9;22454:1;22444:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22444:12:0;22436:21;;;;;;;;;;;;;22428:29;;:7;:29;:::i;:::-;22418:39;-1:-1:-1;22232:3:0;;;;:::i;:::-;;;;22190:279;;;;22501:7;;22493;;:15;;;;:::i;:::-;22483:7;:25;22479:56;;;22518:7;;22527;;22510:25;;;;;;22039:540;;:::o;22479:56::-;22554:7;;22563;;-1:-1:-1;22039:540:0;-1:-1:-1;22039:540:0:o;19954:1104::-;20041:28;;:::i;:::-;20088:7;20084:86;;20110:17;;;:27;;;20150:8;;20084:86;20185:6;20182:850;;;20224:12;:16;20241:4;;20216:24;;:7;:24;:::i;:::-;:29;;;;:::i;:::-;20207:6;;;:38;20284:23;;20308:4;;20276:31;;:7;:31;:::i;:::-;:36;;;;:::i;:::-;20260:13;;;:52;20350:22;;20373:4;;20342:30;;:7;:30;:::i;:::-;:35;;;;:::i;:::-;20327:12;;;:50;20415:22;;20438:4;;20407:30;;:7;:30;:::i;:::-;:35;;;;:::i;:::-;20392:12;;;:50;20478:20;;20499:4;;20470:28;;:7;:28;:::i;:::-;:33;;;;:::i;:::-;20457:10;;;:46;;;20580:12;;;;20567;;;;20553:13;;;;20546:6;;;;20538:14;;:7;:14;:::i;:::-;:28;;;;:::i;:::-;:41;;;;:::i;:::-;:54;;;;:::i;:::-;:65;;;;:::i;:::-;20518:17;;;:85;20182:850;;;20661:8;:12;20674:4;;20653:20;;:7;:20;:::i;:::-;:25;;;;:::i;:::-;20644:6;;;:34;20717:19;;20737:4;;20709:27;;:7;:27;:::i;:::-;:32;;;;:::i;:::-;20693:13;;;:48;20779:18;;20798:4;;20771:26;;:7;:26;:::i;:::-;:31;;;;:::i;:::-;20756:12;;;:46;20840:18;;20859:4;;20832:26;;:7;:26;:::i;:::-;:31;;;;:::i;:::-;20817:12;;;:46;20899:16;;20916:4;;20891:24;;:7;:24;:::i;:::-;:29;;;;:::i;:::-;20878:10;;;:42;;;20997:12;;;;20984;;;;20970:13;;;;20963:6;;;;20955:14;;:7;:14;:::i;:::-;:28;;;;:::i;:::-;:41;;;;:::i;:::-;:54;;;;:::i;:::-;:65;;;;:::i;:::-;20935:17;;;:85;19954:1104;;;;;:::o;21066:799::-;21191:15;;;;;;;21346:19;21354:11;21346:7;:19;:::i;:::-;21336:29;;21382:7;21378:73;;-1:-1:-1;21411:7:0;;-1:-1:-1;21429:1:0;;-1:-1:-1;21429:1:0;;-1:-1:-1;21429:1:0;;-1:-1:-1;21429:1:0;;-1:-1:-1;21429:1:0;21404:35;;21378:73;21477:11;21470:1;:6;;;:18;;;;:::i;:::-;21463:25;;21527:11;21513:1;:13;;;:25;;;;:::i;:::-;21499:39;;21575:11;21562:1;:12;;;:24;;;;:::i;:::-;21549:37;;21623:11;21610:1;:12;;;:24;;;;:::i;:::-;21597:37;;21667:11;21656:1;:10;;;:22;;;;:::i;:::-;21645:33;-1:-1:-1;21645:33:0;21744:10;21733;21721:11;21708:12;21716:4;21708:7;:12;:::i;:::-;:24;;;;:::i;:::-;:35;;;;:::i;:::-;:46;;;;:::i;:::-;:55;;;;:::i;:::-;21689:74;;21066:799;;;;;;;;;;;;;:::o;26231:505::-;26376:16;;;26390:1;26376:16;;;;;;;;26352:21;;26376:16;;;;;;;;;;-1:-1:-1;26376:16:0;26352:40;;26413:6;;;;;;;;;-1:-1:-1;;;;;26413:6:0;-1:-1:-1;;;;;26413:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26403:4;26408:1;26403:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;26403:23:0;;;-1:-1:-1;;;;;26403:23:0;;;;;26455:4;26437;26442:1;26437:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26437:23:0;;;:7;;;;;;;;;:23;26497:6;;;;;;:57;26562:6;26584:1;26631:4;10617:42;26692:24;:15;26712:3;26692:19;:24::i;:::-;26497:230;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26281:455;26231:505;:::o;28336:564::-;28486:16;;;28500:1;28486:16;;;;;;;;28462:21;;28486:16;;;;;;;;;;-1:-1:-1;28486:16:0;28462:40;;28531:4;28513;28518:1;28513:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;28513:23:0;;;-1:-1:-1;;;;;28513:23:0;;;;;28557:6;;;;;;;;;-1:-1:-1;;;;;28557:6:0;-1:-1:-1;;;;;28557:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28547:4;28552:1;28547:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28547:23:0;;;:7;;;;;;;;;:23;28615:6;;28583:53;;28600:4;;28615:6;;;;28624:11;28583:8;:53::i;:::-;28675:6;;:215;;-1:-1:-1;;;28675:215:0;;:6;;;;-1:-1:-1;;;;;28675:6:0;;:57;;:215;;28747:11;;28773:1;;28817:4;;28844;;28864:15;;28675:6;:215;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27833:495;28013:6;;27981:53;;27998:4;;28013:6;;;-1:-1:-1;;;;;28013:6:0;28022:11;27981:8;:53::i;:::-;28077:6;;-1:-1:-1;;;;;28077:6:0;;;;;:22;28107:9;28140:4;28160:11;28186:1;;28272:7;7400;7427:6;-1:-1:-1;;;;;7427:6:0;;7354:87;28272:7;28077:243;;;;;;-1:-1:-1;;;;;;28077:243:0;;;-1:-1:-1;;;;;18013:15:1;;;28077:243:0;;;17995:34:1;18045:18;;;18038:34;;;;18088:18;;;18081:34;;;;18131:18;;;18124:34;18195:15;;;18174:19;;;18167:44;28294:15:0;18227:19:1;;;18220:35;17929:19;;28077:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27833:495;;:::o;18219:123::-;18297:4;18287:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;18312:11:0;:22;;18330:4;;18312:11;:15;;:22;;18330:4;;18312:22;:::i;:::-;;;;-1:-1:-1;;;;18219:123:0:o;18350:282::-;18461:11;18436;:22;;;:36;;;;;;;:::i;:::-;;;;-1:-1:-1;;18506:4:0;18486:26;;;;:11;:26;;;;;;;;18483:93;;;18545:4;18529:22;;;;:7;:22;;;;;:35;;18553:11;;18529:22;:35;;18553:11;;18529:35;:::i;:::-;;;;-1:-1:-1;;18483:93:0;18602:4;18586:22;;;;:7;:22;;;;;:36;;18611:11;;18586:22;:36;;18611:11;;18586:36;:::i;18918:284::-;19025:10;19001:11;:21;;;:34;;;;;;;:::i;19210:293::-;19317:10;19293:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;19355:16:0;;-1:-1:-1;;;;;19355:16:0;19343:29;;;;:11;:29;;;;;;;;19340:107;;;19406:16;;-1:-1:-1;;;;;19406:16:0;19398:25;;;;:7;:25;;;;;:37;;19425:10;;19398:25;:37;;19425:10;;19398:37;:::i;:::-;;;;-1:-1:-1;;19340:107:0;19465:16;;-1:-1:-1;;;;;19465:16:0;19457:25;;;;:7;:25;;;;;:38;;19485:10;;19457:25;:38;;19485:10;;19457:38;:::i;18640:270::-;18739:8;18717:11;:19;;;:30;;;;;;;:::i;1927:98::-;1985:7;2012:5;2016:1;2012;:5;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1914:456::-;1991:6;1999;2007;2060:2;2048:9;2039:7;2035:23;2031:32;2028:52;;;2076:1;2073;2066:12;2028:52;2115:9;2102:23;2134:31;2159:5;2134:31;:::i;:::-;2184:5;-1:-1:-1;2241:2:1;2226:18;;2213:32;2254:33;2213:32;2254:33;:::i;:::-;1914:456;;2306:7;;-1:-1:-1;;;2360:2:1;2345:18;;;;2332:32;;1914:456::o;2583:180::-;2642:6;2695:2;2683:9;2674:7;2670:23;2666:32;2663:52;;;2711:1;2708;2701:12;2663:52;-1:-1:-1;2734:23:1;;2583:180;-1:-1:-1;2583:180:1:o;2768:247::-;2827:6;2880:2;2868:9;2859:7;2855:23;2851:32;2848:52;;;2896:1;2893;2886:12;2848:52;2935:9;2922:23;2954:31;2979:5;2954:31;:::i;3209:160::-;3274:20;;3330:13;;3323:21;3313:32;;3303:60;;3359:1;3356;3349:12;3303:60;3209:160;;;:::o;3374:248::-;3439:6;3447;3500:2;3488:9;3479:7;3475:23;3471:32;3468:52;;;3516:1;3513;3506:12;3468:52;3552:9;3539:23;3529:33;;3581:35;3612:2;3601:9;3597:18;3581:35;:::i;:::-;3571:45;;3374:248;;;;;:::o;3627:180::-;3683:6;3736:2;3724:9;3715:7;3711:23;3707:32;3704:52;;;3752:1;3749;3742:12;3704:52;3775:26;3791:9;3775:26;:::i;3812:454::-;3907:6;3915;3923;3931;3939;3992:3;3980:9;3971:7;3967:23;3963:33;3960:53;;;4009:1;4006;3999:12;3960:53;-1:-1:-1;;4032:23:1;;;4102:2;4087:18;;4074:32;;-1:-1:-1;4153:2:1;4138:18;;4125:32;;4204:2;4189:18;;4176:32;;-1:-1:-1;4255:3:1;4240:19;4227:33;;-1:-1:-1;3812:454:1;-1:-1:-1;3812:454:1:o;4271:248::-;4339:6;4347;4400:2;4388:9;4379:7;4375:23;4371:32;4368:52;;;4416:1;4413;4406:12;4368:52;-1:-1:-1;;4439:23:1;;;4509:2;4494:18;;;4481:32;;-1:-1:-1;4271:248:1:o;4524:388::-;4592:6;4600;4653:2;4641:9;4632:7;4628:23;4624:32;4621:52;;;4669:1;4666;4659:12;4621:52;4708:9;4695:23;4727:31;4752:5;4727:31;:::i;:::-;4777:5;-1:-1:-1;4834:2:1;4819:18;;4806:32;4847:33;4806:32;4847:33;:::i;:::-;4899:7;4889:17;;;4524:388;;;;;:::o;4917:315::-;4982:6;4990;5043:2;5031:9;5022:7;5018:23;5014:32;5011:52;;;5059:1;5056;5049:12;5011:52;5098:9;5085:23;5117:31;5142:5;5117:31;:::i;:::-;5167:5;-1:-1:-1;5191:35:1;5222:2;5207:18;;5191:35;:::i;5871:127::-;5932:10;5927:3;5923:20;5920:1;5913:31;5963:4;5960:1;5953:15;5987:4;5984:1;5977:15;6003:217;6043:1;6069;6059:132;;6113:10;6108:3;6104:20;6101:1;6094:31;6148:4;6145:1;6138:15;6176:4;6173:1;6166:15;6059:132;-1:-1:-1;6205:9:1;;6003:217::o;6225:356::-;6427:2;6409:21;;;6446:18;;;6439:30;6505:34;6500:2;6485:18;;6478:62;6572:2;6557:18;;6225:356::o;7285:127::-;7346:10;7341:3;7337:20;7334:1;7327:31;7377:4;7374:1;7367:15;7401:4;7398:1;7391:15;7417:125;7457:4;7485:1;7482;7479:8;7476:34;;;7490:18;;:::i;:::-;-1:-1:-1;7527:9:1;;7417:125::o;7547:127::-;7608:10;7603:3;7599:20;7596:1;7589:31;7639:4;7636:1;7629:15;7663:4;7660:1;7653:15;7679:135;7718:3;-1:-1:-1;;7739:17:1;;7736:43;;;7759:18;;:::i;:::-;-1:-1:-1;7806:1:1;7795:13;;7679:135::o;7819:128::-;7859:3;7890:1;7886:6;7883:1;7880:13;7877:39;;;7896:18;;:::i;:::-;-1:-1:-1;7932:9:1;;7819:128::o;9081:168::-;9121:7;9187:1;9183;9179:6;9175:14;9172:1;9169:21;9164:1;9157:9;9150:17;9146:45;9143:71;;;9194:18;;:::i;:::-;-1:-1:-1;9234:9:1;;9081:168::o;9254:422::-;9343:1;9386:5;9343:1;9400:270;9421:7;9411:8;9408:21;9400:270;;;9480:4;9476:1;9472:6;9468:17;9462:4;9459:27;9456:53;;;9489:18;;:::i;:::-;9539:7;9529:8;9525:22;9522:55;;;9559:16;;;;9522:55;9638:22;;;;9598:15;;;;9400:270;;;9404:3;9254:422;;;;;:::o;9681:806::-;9730:5;9760:8;9750:80;;-1:-1:-1;9801:1:1;9815:5;;9750:80;9849:4;9839:76;;-1:-1:-1;9886:1:1;9900:5;;9839:76;9931:4;9949:1;9944:59;;;;10017:1;10012:130;;;;9924:218;;9944:59;9974:1;9965:10;;9988:5;;;10012:130;10049:3;10039:8;10036:17;10033:43;;;10056:18;;:::i;:::-;-1:-1:-1;;10112:1:1;10098:16;;10127:5;;9924:218;;10226:2;10216:8;10213:16;10207:3;10201:4;10198:13;10194:36;10188:2;10178:8;10175:16;10170:2;10164:4;10161:12;10157:35;10154:77;10151:159;;;-1:-1:-1;10263:19:1;;;10295:5;;10151:159;10342:34;10367:8;10361:4;10342:34;:::i;:::-;10412:6;10408:1;10404:6;10400:19;10391:7;10388:32;10385:58;;;10423:18;;:::i;:::-;10461:20;;9681:806;-1:-1:-1;;;9681:806:1:o;10492:140::-;10550:5;10579:47;10620:4;10610:8;10606:19;10600:4;10579:47;:::i;15830:251::-;15900:6;15953:2;15941:9;15932:7;15928:23;15924:32;15921:52;;;15969:1;15966;15959:12;15921:52;16001:9;15995:16;16020:31;16045:5;16020:31;:::i;16086:461::-;16139:3;16177:5;16171:12;16204:6;16199:3;16192:19;16230:4;16259:2;16254:3;16250:12;16243:19;;16296:2;16289:5;16285:14;16317:1;16327:195;16341:6;16338:1;16335:13;16327:195;;;16406:13;;-1:-1:-1;;;;;16402:39:1;16390:52;;16462:12;;;;16497:15;;;;16438:1;16356:9;16327:195;;;-1:-1:-1;16538:3:1;;16086:461;-1:-1:-1;;;;;16086:461:1:o;16552:510::-;16823:6;16812:9;16805:25;16866:3;16861:2;16850:9;16846:18;16839:31;16786:4;16887:57;16939:3;16928:9;16924:19;16916:6;16887:57;:::i;:::-;-1:-1:-1;;;;;16980:32:1;;;;16975:2;16960:18;;16953:60;-1:-1:-1;17044:2:1;17029:18;17022:34;16879:65;16552:510;-1:-1:-1;;16552:510:1:o;17067:582::-;17366:6;17355:9;17348:25;17409:6;17404:2;17393:9;17389:18;17382:34;17452:3;17447:2;17436:9;17432:18;17425:31;17329:4;17473:57;17525:3;17514:9;17510:19;17502:6;17473:57;:::i;:::-;-1:-1:-1;;;;;17566:32:1;;;;17561:2;17546:18;;17539:60;-1:-1:-1;17630:3:1;17615:19;17608:35;17465:65;17067:582;-1:-1:-1;;;17067:582:1:o;18266:306::-;18354:6;18362;18370;18423:2;18411:9;18402:7;18398:23;18394:32;18391:52;;;18439:1;18436;18429:12;18391:52;18468:9;18462:16;18452:26;;18518:2;18507:9;18503:18;18497:25;18487:35;;18562:2;18551:9;18547:18;18541:25;18531:35;;18266:306;;;;;:::o
Swarm Source
ipfs://7c2e17842595824d73b9f1bda43abda5666094f943e322736e4a2c1420d63d94
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.