Overview
Max Total Supply
1,337,000 LEET
Holders
100
Market
Price
$15.74 @ 0.006539 ETH
Onchain Market Cap
$21,044,380.00
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
66,001.884295117307074454 LEETValue
$1,038,869.66 ( ~431.5930 ETH) [4.9366%]Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
LeetToken
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity =0.8.17; import "@leetswap/interfaces/ILiquidityManageable.sol"; import "@leetswap/dex/v2/interfaces/ILeetSwapV2Router01.sol"; import "@leetswap/dex/v2/interfaces/ILeetSwapV2Factory.sol"; import "@leetswap/dex/v2/interfaces/ILeetSwapV2Pair.sol"; import "@leetswap/tokens/interfaces/IFeeDiscountOracle.sol"; import {ERC20, IERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; contract LeetToken is ERC20, Ownable, ILiquidityManageable { address public constant DEAD = 0x000000000000000000000000000000000000dEaD; uint256 public constant FEE_DENOMINATOR = 1e4; uint256 public constant MAX_FEE = 1000; uint256 public burnBuyFee; uint256 public farmsBuyFee; uint256 public stakingBuyFee; uint256 public treasuryBuyFee; uint256 public totalBuyFee; uint256 public burnSellFee; uint256 public farmsSellFee; uint256 public stakingSellFee; uint256 public treasurySellFee; uint256 public totalSellFee; address public farmsFeeRecipient; address public stakingFeeRecipient; address public treasuryFeeRecipient; bool public tradingEnabled; uint256 public tradingEnabledTimestamp = 0; // 0 means trading is not active ILeetSwapV2Router01 public swapFeesRouter; IFeeDiscountOracle public feeDiscountOracle; address public swapPairToken; bool public swappingFeesEnabled; bool public isSwappingFees; uint256 public swapFeesAtAmount; uint256 public maxSwapFeesAmount; uint256 public maxWalletAmount; uint256 public sniperBuyBaseFee = 2000; uint256 public sniperBuyFeeDecayPeriod = 15 minutes; uint256 public sniperBuyFeeBurnShare = 2500; bool public sniperBuyFeeEnabled = true; uint256 public sniperSellBaseFee = 2000; uint256 public sniperSellFeeDecayPeriod = 24 hours; uint256 public sniperSellFeeBurnShare = 2500; bool public sniperSellFeeEnabled = true; bool public pairAutoDetectionEnabled; bool public indirectSwapFeeEnabled; bool public maxWalletEnabled; mapping(address => bool) public isExcludedFromFee; mapping(address => bool) public isLiquidityManager; mapping(address => bool) public isWhitelistedFactory; mapping(address => bool) public isBot; bool internal _isLiquidityManagementPhase; uint256 internal _currentCacheVersion; mapping(address => bool) internal _isLeetPair; mapping(uint256 => mapping(address => bool)) internal _isCachedAutodetectedLeetPair; mapping(address => bool) internal _isExcludedFromMaxWallet; event BuyFeeUpdated(uint256 _fee, uint256 _previousFee); event SellFeeUpdated(uint256 _fee, uint256 _previousFee); event LeetPairAdded(address _pair); event LeetPairRemoved(address _pair); event AddressExcludedFromFees(address _address); event AddressIncludedInFees(address _address); event WhitelistedFactoryAdded(address _factory); event WhitelistedFactoryRemoved(address _factory); error TradingNotEnabled(); error TradingAlreadyEnabled(); error SniperBotDetected(); error MaxWalletReached(); error TimestampIsInThePast(); error FeeTooHigh(); error InvalidFeeRecipient(); error NotLiquidityManager(); error TransferFailed(); error ArrayLengthMismatch(); constructor(address _router, address _swapPairToken) ERC20("Leet", "LEET") { ILeetSwapV2Router01 router = ILeetSwapV2Router01(_router); ILeetSwapV2Factory factory = ILeetSwapV2Factory(router.factory()); swapPairToken = _swapPairToken; isExcludedFromFee[owner()] = true; isExcludedFromFee[address(this)] = true; isExcludedFromFee[DEAD] = true; _isExcludedFromMaxWallet[owner()] = true; _isExcludedFromMaxWallet[address(this)] = true; _isExcludedFromMaxWallet[DEAD] = true; burnBuyFee = 0; farmsBuyFee = 75; stakingBuyFee = 25; treasuryBuyFee = 0; setBuyFees(burnBuyFee, farmsBuyFee, stakingBuyFee, treasuryBuyFee); burnSellFee = 0; farmsSellFee = 150; stakingSellFee = 100; treasurySellFee = 50; setSellFees(burnSellFee, farmsSellFee, stakingSellFee, treasurySellFee); farmsFeeRecipient = owner(); stakingFeeRecipient = owner(); treasuryFeeRecipient = owner(); isLiquidityManager[address(router)] = true; isWhitelistedFactory[address(factory)] = true; address pair = factory.createPair(address(this), swapPairToken); address feesVault = ILeetSwapV2Pair(pair).fees(); _isExcludedFromMaxWallet[feesVault] = true; isExcludedFromFee[feesVault] = true; _isLeetPair[pair] = true; maxWalletEnabled = true; // pairAutoDetectionEnabled = true; _mint(owner(), 1337000 * 10**decimals()); swapFeesRouter = router; swapFeesAtAmount = (totalSupply() * 3) / 1e5; maxSwapFeesAmount = (totalSupply() * 2) / 1e4; maxWalletAmount = (totalSupply() * 1) / 1e3; // 1.337% of the CIRCULATING supply } modifier onlyLiquidityManager() { if (!isLiquidityManager[msg.sender]) { revert NotLiquidityManager(); } _; } /************************************************************************/ function isLeetPair(address _pair) public returns (bool isPair) { if (_isLeetPair[_pair]) { return true; } if (!pairAutoDetectionEnabled) { return false; } if (_isCachedAutodetectedLeetPair[_currentCacheVersion][_pair]) { return true; } if (_pair.code.length == 0) { return false; } (bool success, bytes memory data) = _pair.staticcall( abi.encodeWithSignature("factory()") ); if (!success) return false; address factory = abi.decode(data, (address)); if (factory == address(0)) return false; bool isVerifiedPair = isWhitelistedFactory[factory] && ILeetSwapV2Factory(factory).isPair(_pair); (success, data) = _pair.staticcall(abi.encodeWithSignature("token0()")); if (!success) return false; address token0 = abi.decode(data, (address)); if (token0 == address(this)) { if (isVerifiedPair) { _isCachedAutodetectedLeetPair[_currentCacheVersion][ _pair ] = true; } return true; } (success, data) = _pair.staticcall(abi.encodeWithSignature("token1()")); if (!success) return false; address token1 = abi.decode(data, (address)); if (token1 == address(this)) { if (isVerifiedPair) { _isCachedAutodetectedLeetPair[_currentCacheVersion][ _pair ] = true; } return true; } return false; } function _shouldTakeTransferTax(address sender, address recipient) internal returns (bool) { if (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) { return false; } return !_isLiquidityManagementPhase && (isLeetPair(sender) || isLeetPair(recipient)); } function sniperBuyFee() public view returns (uint256) { if (!sniperBuyFeeEnabled) { return 0; } uint256 timeSinceLaunch = block.timestamp - tradingEnabledTimestamp; if (timeSinceLaunch >= sniperBuyFeeDecayPeriod) { return 0; } return sniperBuyBaseFee - (sniperBuyBaseFee * timeSinceLaunch) / sniperBuyFeeDecayPeriod; } function sniperSellFee() public view returns (uint256) { if (!sniperSellFeeEnabled) { return 0; } uint256 timeSinceLaunch = block.timestamp - tradingEnabledTimestamp; if (timeSinceLaunch >= sniperSellFeeDecayPeriod) { return 0; } return sniperSellBaseFee - (sniperSellBaseFee * timeSinceLaunch) / sniperSellFeeDecayPeriod; } /************************************************************************/ function buyFeeDiscountFor(address account, uint256 totalFeeAmount) public view returns (uint256) { if (address(feeDiscountOracle) == address(0)) return 0; return feeDiscountOracle.buyFeeDiscountFor(account, totalFeeAmount); } function sellFeeDiscountFor(address account, uint256 totalFeeAmount) public view returns (uint256) { if (address(feeDiscountOracle) == address(0)) return 0; return feeDiscountOracle.sellFeeDiscountFor(account, totalFeeAmount); } function _takeBuyFee( address sender, address user, uint256 amount ) internal returns (uint256) { if (totalBuyFee == 0) return 0; uint256 totalFeeAmount = (amount * totalBuyFee) / FEE_DENOMINATOR; uint256 feeDiscountAmount = buyFeeDiscountFor(user, totalFeeAmount); totalFeeAmount -= feeDiscountAmount; if (totalFeeAmount == 0) return 0; uint256 burnFeeAmount = (totalFeeAmount * burnBuyFee) / totalBuyFee; uint256 farmsFeeAmount = (totalFeeAmount * farmsBuyFee) / totalBuyFee; uint256 stakingFeeAmount = (totalFeeAmount * stakingBuyFee) / totalBuyFee; uint256 treasuryFeeAmount = totalFeeAmount - burnFeeAmount - farmsFeeAmount - stakingFeeAmount; if (burnFeeAmount > 0) super._transfer(sender, DEAD, burnFeeAmount); if (farmsFeeAmount > 0) super._transfer(sender, farmsFeeRecipient, farmsFeeAmount); if (stakingFeeAmount > 0) super._transfer(sender, stakingFeeRecipient, stakingFeeAmount); if (treasuryFeeAmount > 0) super._transfer(sender, address(this), treasuryFeeAmount); return totalFeeAmount; } function _takeSellFee( address sender, address user, uint256 amount ) internal returns (uint256) { if (totalSellFee == 0) return 0; uint256 totalFeeAmount = (amount * totalSellFee) / FEE_DENOMINATOR; uint256 feeDiscountAmount = sellFeeDiscountFor(user, totalFeeAmount); totalFeeAmount -= feeDiscountAmount; if (totalFeeAmount == 0) return 0; uint256 burnFeeAmount = (totalFeeAmount * burnSellFee) / totalSellFee; uint256 farmsFeeAmount = (totalFeeAmount * farmsSellFee) / totalSellFee; uint256 stakingFeeAmount = (totalFeeAmount * stakingSellFee) / totalSellFee; uint256 treasuryFeeAmount = totalFeeAmount - burnFeeAmount - farmsFeeAmount - stakingFeeAmount; if (burnFeeAmount > 0) super._transfer(sender, DEAD, burnFeeAmount); if (farmsFeeAmount > 0) super._transfer(sender, farmsFeeRecipient, farmsFeeAmount); if (stakingFeeAmount > 0) super._transfer(sender, stakingFeeRecipient, stakingFeeAmount); if (treasuryFeeAmount > 0) super._transfer(sender, address(this), treasuryFeeAmount); return totalFeeAmount; } function _takeSniperBuyFee(address sender, uint256 amount) internal returns (uint256) { uint256 totalFeeAmount = (amount * sniperBuyFee()) / FEE_DENOMINATOR; uint256 burnFeeAmount = (totalFeeAmount * sniperBuyFeeBurnShare) / FEE_DENOMINATOR; uint256 treasuryFeeAmount = totalFeeAmount - burnFeeAmount; if (burnFeeAmount > 0) super._transfer(sender, DEAD, burnFeeAmount); if (treasuryFeeAmount > 0) super._transfer(sender, address(this), treasuryFeeAmount); return totalFeeAmount; } function _takeSniperSellFee(address sender, uint256 amount) internal returns (uint256) { uint256 totalFeeAmount = (amount * sniperSellFee()) / FEE_DENOMINATOR; uint256 burnFeeAmount = (totalFeeAmount * sniperSellFeeBurnShare) / FEE_DENOMINATOR; uint256 treasuryFeeAmount = totalFeeAmount - burnFeeAmount; if (burnFeeAmount > 0) super._transfer(sender, DEAD, burnFeeAmount); if (treasuryFeeAmount > 0) super._transfer(sender, address(this), treasuryFeeAmount); return totalFeeAmount; } function _transfer( address sender, address recipient, uint256 amount ) internal override { if ( !(tradingEnabled && tradingEnabledTimestamp <= block.timestamp) && !isExcludedFromFee[sender] && !isExcludedFromFee[recipient] ) { revert TradingNotEnabled(); } if (isBot[sender] || isBot[recipient]) revert SniperBotDetected(); if ( maxWalletEnabled && !isExcludedFromMaxWallet(recipient) && balanceOf(recipient) + amount > maxWalletAmount ) revert MaxWalletReached(); bool takeFee = !isSwappingFees && _shouldTakeTransferTax(sender, recipient); bool isBuy = isLeetPair(sender); bool isSell = isLeetPair(recipient); bool isIndirectSwap = (_isLeetPair[sender] || _isCachedAutodetectedLeetPair[_currentCacheVersion][sender]) && (_isLeetPair[recipient] || _isCachedAutodetectedLeetPair[_currentCacheVersion][recipient]); takeFee = takeFee && (indirectSwapFeeEnabled || !isIndirectSwap); uint256 contractTokenBalance = balanceOf(address(this)); bool canSwapFees = contractTokenBalance >= swapFeesAtAmount; bool isEOATransfer = sender.code.length == 0 && recipient.code.length == 0; if ( canSwapFees && swappingFeesEnabled && !isSwappingFees && !_isLiquidityManagementPhase && !isIndirectSwap && (isSell || isEOATransfer) && !isExcludedFromFee[sender] && !isExcludedFromFee[recipient] ) { isSwappingFees = true; _swapFees(); isSwappingFees = false; } uint256 totalFeeAmount; if (takeFee) { if (isSell) { totalFeeAmount = _takeSellFee(sender, sender, amount); totalFeeAmount += _takeSniperSellFee(sender, amount); } else if (isBuy) { totalFeeAmount = _takeBuyFee(sender, recipient, amount); totalFeeAmount += _takeSniperBuyFee(sender, amount); } } super._transfer(sender, recipient, amount - totalFeeAmount); } /************************************************************************/ function _swapFees() internal { uint256 contractTokenBalance = balanceOf(address(this)); uint256 amountToSwap = contractTokenBalance > maxSwapFeesAmount ? maxSwapFeesAmount : contractTokenBalance; address[] memory path = new address[](2); path[0] = address(this); path[1] = swapPairToken; _approve(address(this), address(swapFeesRouter), amountToSwap); swapFeesRouter.swapExactTokensForTokens( amountToSwap, 0, path, treasuryFeeRecipient, block.timestamp ); } /************************************************************************/ function isLiquidityManagementPhase() external view returns (bool) { return _isLiquidityManagementPhase; } function setLiquidityManagementPhase(bool isLiquidityManagementPhase_) external onlyLiquidityManager { _isLiquidityManagementPhase = isLiquidityManagementPhase_; } /************************************************************************/ function withdrawStuckEth(uint256 amount) public onlyOwner { (bool success, ) = address(msg.sender).call{value: amount}(""); if (!success) revert TransferFailed(); } function withdrawStuckEth() public onlyOwner { withdrawStuckEth(address(this).balance); } function withdrawStuckTokens(IERC20 token, uint256 amount) public onlyOwner { bool success = token.transfer(msg.sender, amount); if (!success) revert TransferFailed(); } function withdrawStuckTokens(IERC20 token) public onlyOwner { uint256 balance = token.balanceOf(address(this)); withdrawStuckTokens(token, balance); } function airdropHolders(address[] memory wallets, uint256[] memory amounts) external onlyOwner { if (wallets.length != amounts.length) { revert ArrayLengthMismatch(); } for (uint256 i = 0; i < wallets.length; i++) { address wallet = wallets[i]; uint256 amount = amounts[i]; _transfer(msg.sender, wallet, amount); } } /************************************************************************/ function isExcludedFromMaxWallet(address account) public view returns (bool) { return _isExcludedFromMaxWallet[account] || _isLeetPair[account]; } function excludeFromMaxWallet(address account) external onlyOwner { _isExcludedFromMaxWallet[account] = true; } function includeInMaxWallet(address account) external onlyOwner { _isExcludedFromMaxWallet[account] = false; } function setMaxWalletEnabled(bool enabled) external onlyOwner { maxWalletEnabled = enabled; } /************************************************************************/ function addLeetPair(address _pair) external onlyOwner { _isLeetPair[_pair] = true; emit LeetPairAdded(_pair); } function removeLeetPair(address _pair) external onlyOwner { _isLeetPair[_pair] = false; emit LeetPairRemoved(_pair); } function excludeFromFee(address _account) external onlyOwner { isExcludedFromFee[_account] = true; emit AddressExcludedFromFees(_account); } function includeInFee(address _account) external onlyOwner { isExcludedFromFee[_account] = false; emit AddressIncludedInFees(_account); } function setFarmsFeeRecipient(address _account) external onlyOwner { if (_account == address(0)) { revert InvalidFeeRecipient(); } farmsFeeRecipient = _account; } function setStakingFeeRecipient(address _account) external onlyOwner { if (_account == address(0)) { revert InvalidFeeRecipient(); } stakingFeeRecipient = _account; } function setTreasuryFeeRecipient(address _account) external onlyOwner { if (_account == address(0)) { revert InvalidFeeRecipient(); } treasuryFeeRecipient = _account; } function setBuyFees( uint256 _burnBuyFee, uint256 _farmsBuyFee, uint256 _stakingBuyFee, uint256 _treasuryBuyFee ) public onlyOwner { if ( _burnBuyFee + _farmsBuyFee + _stakingBuyFee + _treasuryBuyFee > MAX_FEE ) { revert FeeTooHigh(); } burnBuyFee = _burnBuyFee; farmsBuyFee = _farmsBuyFee; stakingBuyFee = _stakingBuyFee; treasuryBuyFee = _treasuryBuyFee; totalBuyFee = burnBuyFee + farmsBuyFee + stakingBuyFee + treasuryBuyFee; } function setSellFees( uint256 _burnSellFee, uint256 _farmsSellFee, uint256 _stakingSellFee, uint256 _treasurySellFee ) public onlyOwner { if ( _burnSellFee + _farmsSellFee + _stakingSellFee + _treasurySellFee > MAX_FEE ) { revert FeeTooHigh(); } burnSellFee = _burnSellFee; farmsSellFee = _farmsSellFee; stakingSellFee = _stakingSellFee; treasurySellFee = _treasurySellFee; totalSellFee = burnSellFee + farmsSellFee + stakingSellFee + treasurySellFee; } function setLiquidityManager(address _liquidityManager, bool _isManager) public onlyOwner { isLiquidityManager[_liquidityManager] = _isManager; } function addWhitelistedFactory(address _factory) public onlyOwner { isWhitelistedFactory[_factory] = true; } function removeWhitelistedFactory(address _factory) public onlyOwner { isWhitelistedFactory[_factory] = false; _currentCacheVersion++; } function setIndirectSwapFeeEnabled(bool _indirectSwapFeeEnabled) public onlyOwner { indirectSwapFeeEnabled = _indirectSwapFeeEnabled; } function enableTrading() public onlyOwner { if (tradingEnabled) revert TradingAlreadyEnabled(); tradingEnabled = true; if (tradingEnabledTimestamp < block.timestamp) { tradingEnabledTimestamp = block.timestamp; } swappingFeesEnabled = true; } function setTradingEnabledTimestamp(uint256 _timestamp) public onlyOwner { if (tradingEnabled && tradingEnabledTimestamp <= block.timestamp) { revert TradingAlreadyEnabled(); } if (tradingEnabled && _timestamp < block.timestamp) { revert TimestampIsInThePast(); } tradingEnabledTimestamp = _timestamp; } function setPairAutoDetectionEnabled(bool _pairAutoDetectionEnabled) public onlyOwner { pairAutoDetectionEnabled = _pairAutoDetectionEnabled; } function setSniperBuyFeeEnabled(bool _sniperBuyFeeEnabled) public onlyOwner { sniperBuyFeeEnabled = _sniperBuyFeeEnabled; } function setSniperSellFeeEnabled(bool _sniperSellFeeEnabled) public onlyOwner { sniperSellFeeEnabled = _sniperSellFeeEnabled; } function setSwapFeesAtAmount(uint256 _swapFeesAtAmount) public onlyOwner { swapFeesAtAmount = _swapFeesAtAmount; } function setMaxSwapFeesAmount(uint256 _maxSwapFeesAmount) public onlyOwner { maxSwapFeesAmount = _maxSwapFeesAmount; } function setSwappingFeesEnabled(bool _swappingFeesEnabled) public onlyOwner { swappingFeesEnabled = _swappingFeesEnabled; } function setSwapFeesRouter(address _swapFeesRouter) public onlyOwner { swapFeesRouter = ILeetSwapV2Router01(_swapFeesRouter); } function setFeeDiscountOracle(IFeeDiscountOracle _oracle) public onlyOwner { feeDiscountOracle = _oracle; } function addBot(address account) public onlyOwner { isBot[account] = true; } function removeBot(address account) public onlyOwner { isBot[account] = false; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; import "./extensions/IERC20Metadata.sol"; import "../../utils/Context.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { 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); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; import "../IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.0; interface ILeetSwapV2Factory { function allPairsLength() external view returns (uint256); function isPair(address pair) external view returns (bool); function pairCodeHash() external pure returns (bytes32); function getPair( address tokenA, address token, bool stable ) external view returns (address); function createPair( address tokenA, address tokenB, bool stable ) external returns (address); function createPair(address tokenA, address tokenB) external returns (address); function getInitializable() external view returns ( address token0, address token1, bool stable ); function protocolFeesShare() external view returns (uint256); function protocolFeesRecipient() external view returns (address); function tradingFees(address pair, address to) external view returns (uint256); function isPaused() external view returns (bool); }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.0; interface ILeetSwapV2Pair { function factory() external view returns (address); function fees() external view returns (address); function transferFrom( address src, address dst, uint256 amount ) external returns (bool); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function burn(address to) external returns (uint256 amount0, uint256 amount1); function mint(address to) external returns (uint256 liquidity); function getReserves() external view returns ( uint256 _reserve0, uint256 _reserve1, uint256 _blockTimestampLast ); function getAmountOut(uint256, address) external view returns (uint256); function current(address tokenIn, uint256 amountIn) external view returns (uint256); function token0() external view returns (address); function token1() external view returns (address); function stable() external view returns (bool); function balanceOf(address) external view returns (uint256); //LP token pricing function sample( address tokenIn, uint256 amountIn, uint256 points, uint256 window ) external view returns (uint256[] memory); function quote( address tokenIn, uint256 amountIn, uint256 granularity ) external view returns (uint256); function claimFeesFor(address account) external returns (uint256 claimed0, uint256 claimed1); function claimFees() external returns (uint256 claimed0, uint256 claimed1); function claimableFeesFor(address account) external returns (uint256 claimed0, uint256 claimed1); function claimableFees() external returns (uint256 claimed0, uint256 claimed1); }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.0; import "@leetswap/interfaces/IWCANTO.sol"; interface ILeetSwapV2Router01 { function factory() external view returns (address); function WETH() external view returns (address); function wcanto() external view returns (IWCANTO); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountCANTOMin, address to, uint256 deadline ) external returns (uint256 amountCANTO); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function getAmountOut( uint256 amountIn, address tokenIn, address tokenOut ) external view returns (uint256 amount); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function pairFor(address tokenA, address tokenB) external view returns (address pair); }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.0; interface ILiquidityManageable { function setLiquidityManagementPhase(bool _isManagingLiquidity) external; function isLiquidityManager(address _addr) external returns (bool); function isLiquidityManagementPhase() external returns (bool); }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.0; interface IWCANTO { function deposit() external payable; function transfer(address to, uint256 value) external returns (bool); function withdraw(uint256) external; }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.0; interface IFeeDiscountOracle { function buyFeeDiscountFor(address account, uint256 totalFeeAmount) external view returns (uint256 discountAmount); function sellFeeDiscountFor(address account, uint256 totalFeeAmount) external view returns (uint256 discountAmount); }
{ "remappings": [ "@leetswap/=src/", "@openzeppelin/=lib/openzeppelin-contracts/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "solmate/=lib/solmate/src/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_swapPairToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ArrayLengthMismatch","type":"error"},{"inputs":[],"name":"FeeTooHigh","type":"error"},{"inputs":[],"name":"InvalidFeeRecipient","type":"error"},{"inputs":[],"name":"MaxWalletReached","type":"error"},{"inputs":[],"name":"NotLiquidityManager","type":"error"},{"inputs":[],"name":"SniperBotDetected","type":"error"},{"inputs":[],"name":"TimestampIsInThePast","type":"error"},{"inputs":[],"name":"TradingAlreadyEnabled","type":"error"},{"inputs":[],"name":"TradingNotEnabled","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"AddressExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"AddressIncludedInFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_fee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_previousFee","type":"uint256"}],"name":"BuyFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_pair","type":"address"}],"name":"LeetPairAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_pair","type":"address"}],"name":"LeetPairRemoved","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":"_fee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_previousFee","type":"uint256"}],"name":"SellFeeUpdated","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":"_factory","type":"address"}],"name":"WhitelistedFactoryAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_factory","type":"address"}],"name":"WhitelistedFactoryRemoved","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FEE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"addLeetPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_factory","type":"address"}],"name":"addWhitelistedFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropHolders","outputs":[],"stateMutability":"nonpayable","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":"burnBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"totalFeeAmount","type":"uint256"}],"name":"buyFeeDiscountFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","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":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"farmsBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"farmsFeeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"farmsSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDiscountOracle","outputs":[{"internalType":"contract IFeeDiscountOracle","name":"","type":"address"}],"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":"includeInMaxWallet","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":[],"name":"indirectSwapFeeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"isLeetPair","outputs":[{"internalType":"bool","name":"isPair","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isLiquidityManagementPhase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLiquidityManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwappingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWhitelistedFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapFeesAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAutoDetectionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"removeLeetPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_factory","type":"address"}],"name":"removeWhitelistedFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"totalFeeAmount","type":"uint256"}],"name":"sellFeeDiscountFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnBuyFee","type":"uint256"},{"internalType":"uint256","name":"_farmsBuyFee","type":"uint256"},{"internalType":"uint256","name":"_stakingBuyFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryBuyFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"setFarmsFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IFeeDiscountOracle","name":"_oracle","type":"address"}],"name":"setFeeDiscountOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_indirectSwapFeeEnabled","type":"bool"}],"name":"setIndirectSwapFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isLiquidityManagementPhase_","type":"bool"}],"name":"setLiquidityManagementPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityManager","type":"address"},{"internalType":"bool","name":"_isManager","type":"bool"}],"name":"setLiquidityManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxSwapFeesAmount","type":"uint256"}],"name":"setMaxSwapFeesAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setMaxWalletEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_pairAutoDetectionEnabled","type":"bool"}],"name":"setPairAutoDetectionEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnSellFee","type":"uint256"},{"internalType":"uint256","name":"_farmsSellFee","type":"uint256"},{"internalType":"uint256","name":"_stakingSellFee","type":"uint256"},{"internalType":"uint256","name":"_treasurySellFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_sniperBuyFeeEnabled","type":"bool"}],"name":"setSniperBuyFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_sniperSellFeeEnabled","type":"bool"}],"name":"setSniperSellFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"setStakingFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapFeesAtAmount","type":"uint256"}],"name":"setSwapFeesAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_swapFeesRouter","type":"address"}],"name":"setSwapFeesRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swappingFeesEnabled","type":"bool"}],"name":"setSwappingFeesEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"setTradingEnabledTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"setTreasuryFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sniperBuyBaseFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sniperBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sniperBuyFeeBurnShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sniperBuyFeeDecayPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sniperBuyFeeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sniperSellBaseFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sniperSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sniperSellFeeBurnShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sniperSellFeeDecayPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sniperSellFeeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingFeeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapFeesAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapFeesRouter","outputs":[{"internalType":"contract ILeetSwapV2Router01","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapPairToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swappingFeesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabledTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryFeeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasurySellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260006013556107d0601a819055610384601b556109c4601c819055601d8054600160ff199182168117909255601e9390935562015180601f55602091909155602180549092161790553480156200005a57600080fd5b5060405162003b2638038062003b268339810160408190526200007d9162000860565b604051806040016040528060048152602001631319595d60e21b815250604051806040016040528060048152602001631311515560e21b8152508160039081620000c891906200093c565b506004620000d782826200093c565b505050620000f4620000ee6200057560201b60201c565b62000579565b60008290506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200013a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000160919062000a08565b601680546001600160a01b0319166001600160a01b0386161790559050600160226000620001966005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526022909252812080548316600190811790915561dead82527fb3dad1d3e53c1132e958712e36d3ff32b0d9b9088698eb172c6b4faa7ff6d22e80549093168117909255602a906200021e6005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152602a909252812080548316600190811790915561dead82527f4cd689f77827cc1daa8af882f386f3bb4a1440969e00e514a7b412fe9507a7a98054909316179091556006819055604b6007819055601960088190556009839055620002b592919082620005cb565b6000600b8190556096600c8190556064600d8190556032600e819055620002df9392919062000661565b600554601080546001600160a01b039283166001600160a01b03199182168117909255601180548216831790556012805490911690911790558281166000908152602360209081526040808320805460ff1990811660019081179092558686168086526024808652848720805490931690931790915560165483516364e329cb60e11b815230600482015296169186019190915290519293909263c9c6539692604480840193919291829003018187875af1158015620003a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c9919062000a08565b90506000816001600160a01b0316639af1d35a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200040c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000432919062000a08565b6001600160a01b038082166000908152602a60209081526040808320805460ff1990811660019081179092556022845282852080548216831790559488168452602890925290912080549092161790556021805463ff000000191663010000001790559050620004d1620004ae6005546001600160a01b031690565b620004bc6012600a62000b42565b620004cb90621466a862000b53565b620006f7565b601480546001600160a01b0319166001600160a01b038616179055620186a0620004fa60025490565b6200050790600362000b53565b62000513919062000b6d565b6017556127106200052360025490565b6200053090600262000b53565b6200053c919062000b6d565b6018556103e86200054c60025490565b6200055990600162000b53565b62000565919062000b6d565b6019555062000ba6945050505050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620005d5620007e0565b6103e88183620005e6868862000b90565b620005f2919062000b90565b620005fe919062000b90565b11156200061e5760405163cd4e616760e01b815260040160405180910390fd5b6006849055600783905560088290556009819055808262000640858762000b90565b6200064c919062000b90565b62000658919062000b90565b600a5550505050565b6200066b620007e0565b6103e881836200067c868862000b90565b62000688919062000b90565b62000694919062000b90565b1115620006b45760405163cd4e616760e01b815260040160405180910390fd5b600b849055600c839055600d829055600e8190558082620006d6858762000b90565b620006e2919062000b90565b620006ee919062000b90565b600f5550505050565b6001600160a01b038216620007535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b806002600082825462000767919062000b90565b90915550506001600160a01b038216600090815260208190526040812080548392906200079690849062000b90565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146200083c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200074a565b565b505050565b80516001600160a01b03811681146200085b57600080fd5b919050565b600080604083850312156200087457600080fd5b6200087f8362000843565b91506200088f6020840162000843565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620008c357607f821691505b602082108103620008e457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200083e57600081815260208120601f850160051c81016020861015620009135750805b601f850160051c820191505b8181101562000934578281556001016200091f565b505050505050565b81516001600160401b0381111562000958576200095862000898565b6200097081620009698454620008ae565b84620008ea565b602080601f831160018114620009a857600084156200098f5750858301515b600019600386901b1c1916600185901b17855562000934565b600085815260208120601f198616915b82811015620009d957888601518255948401946001909101908401620009b8565b5085821015620009f85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000a1b57600080fd5b62000a268262000843565b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000a8457816000190482111562000a685762000a6862000a2d565b8085161562000a7657918102915b93841c939080029062000a48565b509250929050565b60008262000a9d5750600162000b3c565b8162000aac5750600062000b3c565b816001811462000ac5576002811462000ad05762000af0565b600191505062000b3c565b60ff84111562000ae45762000ae462000a2d565b50506001821b62000b3c565b5060208310610133831016604e8410600b841016171562000b15575081810a62000b3c565b62000b21838362000a43565b806000190482111562000b385762000b3862000a2d565b0290505b92915050565b600062000a2660ff84168362000a8c565b808202811582820484141762000b3c5762000b3c62000a2d565b60008262000b8b57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000b3c5762000b3c62000a2d565b612f708062000bb66000396000f3fe608060405234801561001057600080fd5b50600436106105305760003560e01c80637b693d71116102af578063bdf2e8c611610172578063ea0888b7116100d9578063f2ed5aa311610092578063f2ed5aa314610b38578063f2fde38b14610b4b578063f3d1504214610b5e578063fe0aa5b814610b71578063fe9fb3fe14610b84578063ffecf51614610b8d57600080fd5b8063ea0888b714610ae6578063ea2f0b3714610af9578063ec45587f14610b0c578063ed0d213714610b1f578063eed0981014610b28578063f2a36d3614610b3057600080fd5b8063db2f54791161012b578063db2f547914610a5e578063dcb7a3e014610a71578063dd62ed3e14610a94578063df89b34414610aa7578063e03325fa14610aca578063e42fbb0914610add57600080fd5b8063bdf2e8c6146109fb578063c5d2c7c114610a0e578063cb96372814610a21578063d045a32914610a34578063d32cd32714610a48578063d73792a914610a5557600080fd5b8063a415274b11610216578063aa4bde28116101cf578063aa4bde281461099d578063b6f45a5b146109a6578063b7d23e46146109b9578063bc063e1a146109cc578063bd61f0a6146109d5578063bd7d67e9146109e857600080fd5b8063a415274b1461092a578063a457c2d71461093d578063a614ff7514610950578063a85fa81214610963578063a9059cbb14610977578063a9853b3a1461098a57600080fd5b80638da5cb5b116102685780638da5cb5b146108d85780638e7e7019146108e957806395d89b41146108fd57806397038051146109055780639c20785b146109185780639d9241ec1461092157600080fd5b80637b693d71146108905780637e761377146108a35780637fa787ba146108ac578063896d2ecb146108b45780638a8c523c146108bd5780638bb9c5ea146108c557600080fd5b80633f33e909116103f75780635fecd9261161035e57806370a082311161031757806370a0823114610827578063715018a614610850578063735492f71461085857806373c4002d1461086b57806375ce383d146108745780637ae3ff471461088757600080fd5b80635fecd926146107bf578063633afd28146107d257806369abd8c4146107e55780636c5b2855146107ee5780636dd3d39f146108015780636f3cf01e1461081457600080fd5b80635342acb4116103b05780635342acb41461074f5780635802e4031461077257806358a66ec41461078557806359b107b9146107905780635b700d91146107995780635dd321c0146107ac57600080fd5b80633f33e909146106dc578063437823ec146106ef57806343c5ebb5146107025780634ada218b146107155780634b00d336146107295780634bd369f41461073c57600080fd5b80631df307771161049b5780632fed1ea3116104545780632fed1ea31461066e578063313ce5671461068157806332aab6d21461069057806339509351146106995780633bbac579146106ac5780633bea3976146106cf57600080fd5b80631df307771461062e5780631ff9e7e71461063757806323b872dd14610640578063245062861461065357806325b617031461065c5780632c10508c1461066557600080fd5b80630c3cfdf6116104ed5780630c3cfdf6146105d1578063113dac71146105da578063115e6db6146105ed5780631341487414610600578063178d9b8e1461061357806318160ddd1461062657600080fd5b806303fd2a4514610535578063059d3f901461055b57806306fdde0314610572578063095ea7b3146105875780630af20807146105aa5780630bcbb28d146105bc575b600080fd5b61053e61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b61056460085481565b604051908152602001610552565b61057a610ba0565b60405161055291906129a4565b61059a6105953660046129ec565b610c32565b6040519015158152602001610552565b60215461059a90610100900460ff1681565b6105cf6105ca366004612a18565b610c4c565b005b61056460075481565b6105cf6105e8366004612a43565b610c9d565b60215461059a9062010000900460ff1681565b6105cf61060e366004612a43565b610cbf565b6105cf610621366004612a60565b610ce5565b600254610564565b61056460185481565b610564600d5481565b61059a61064e366004612a92565b610d6c565b610564601f5481565b61056460135481565b61056460095481565b60155461053e906001600160a01b031681565b60405160128152602001610552565b610564601e5481565b61059a6106a73660046129ec565b610d92565b61059a6106ba366004612a18565b60256020526000908152604090205460ff1681565b601d5461059a9060ff1681565b6105cf6106ea366004612a18565b610db4565b6105cf6106fd366004612a18565b610ddd565b6105cf610710366004612a43565b610e40565b60125461059a90600160a01b900460ff1681565b6105cf610737366004612a18565b610e5b565b6105cf61074a366004612ad3565b610eac565b61059a61075d366004612a18565b60226020526000908152604090205460ff1681565b6105cf610780366004612ad3565b610eb9565b60265460ff1661059a565b610564600a5481565b6105cf6107a7366004612a18565b610f35565b6105cf6107ba366004612a18565b610f61565b6105cf6107cd366004612a18565b610fb2565b60165461053e906001600160a01b031681565b610564601b5481565b6105cf6107fc366004612a60565b610fdb565b61059a61080f366004612a18565b611062565b60125461053e906001600160a01b031681565b610564610835366004612a18565b6001600160a01b031660009081526020819052604090205490565b6105cf6110a3565b6105cf610866366004612a18565b6110b7565b61056460175481565b60105461053e906001600160a01b031681565b61056460065481565b6105cf61089e366004612a18565b6110f5565b610564600b5481565b6105cf61111f565b61056460205481565b6105cf611130565b6105cf6108d3366004612a43565b61119a565b6005546001600160a01b031661053e565b60165461059a90600160a81b900460ff1681565b61057a6111b5565b6105646109133660046129ec565b6111c4565b610564601c5481565b610564600f5481565b6105cf610938366004612a18565b611255565b61059a61094b3660046129ec565b6112b1565b6105cf61095e366004612a43565b61133c565b60165461059a90600160a01b900460ff1681565b61059a6109853660046129ec565b611362565b6105cf610998366004612ad3565b611370565b61056460195481565b61059a6109b4366004612a18565b6113e5565b60115461053e906001600160a01b031681565b6105646103e881565b6105cf6109e33660046129ec565b6117e0565b6105cf6109f6366004612a43565b611881565b6105cf610a09366004612aec565b6118c4565b60145461053e906001600160a01b031681565b6105cf610a2f366004612a18565b6118f7565b60215461059a906301000000900460ff1681565b60215461059a9060ff1681565b61056461271081565b6105cf610a6c366004612a18565b611976565b61059a610a7f366004612a18565b60246020526000908152604090205460ff1681565b610564610aa2366004612b25565b6119cf565b61059a610ab5366004612a18565b60236020526000908152604090205460ff1681565b610564610ad83660046129ec565b6119fa565b610564600c5481565b6105cf610af4366004612a18565b611a4e565b6105cf610b07366004612a18565b611a78565b6105cf610b1a366004612ad3565b611ad1565b610564600e5481565b610564611ade565b610564611b42565b6105cf610b46366004612c29565b611ba0565b6105cf610b59366004612a18565b611c32565b6105cf610b6c366004612a18565b611cab565b6105cf610b7f366004612a43565b611cd7565b610564601a5481565b6105cf610b9b366004612a18565b611cfb565b606060038054610baf90612ceb565b80601f0160208091040260200160405190810160405280929190818152602001828054610bdb90612ceb565b8015610c285780601f10610bfd57610100808354040283529160200191610c28565b820191906000526020600020905b815481529060010190602001808311610c0b57829003601f168201915b5050505050905090565b600033610c40818585611d27565b60019150505b92915050565b610c54611e4b565b6001600160a01b038116610c7b57604051630ed1b8b360e31b815260040160405180910390fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b610ca5611e4b565b602180549115156101000261ff0019909216919091179055565b610cc7611e4b565b60168054911515600160a01b0260ff60a01b19909216919091179055565b610ced611e4b565b6103e88183610cfc8688612d3b565b610d069190612d3b565b610d109190612d3b565b1115610d2f5760405163cd4e616760e01b815260040160405180910390fd5b60068490556007839055600882905560098190558082610d4f8587612d3b565b610d599190612d3b565b610d639190612d3b565b600a5550505050565b600033610d7a858285611ea5565b610d85858585611f1f565b60019150505b9392505050565b600033610c40818585610da583836119cf565b610daf9190612d3b565b611d27565b610dbc611e4b565b6001600160a01b03166000908152602a60205260409020805460ff19169055565b610de5611e4b565b6001600160a01b038116600081815260226020908152604091829020805460ff1916600117905590519182527fe3da4d3a13a7d3ac8ea9148c4285574d2bee3f15c474073a168dc868351c180991015b60405180910390a150565b610e48611e4b565b601d805460ff1916911515919091179055565b610e63611e4b565b6001600160a01b038116610e8a57604051630ed1b8b360e31b815260040160405180910390fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b610eb4611e4b565b601755565b610ec1611e4b565b601254600160a01b900460ff168015610edc57504260135411155b15610efa57604051636b91f55d60e11b815260040160405180910390fd5b601254600160a01b900460ff168015610f1257504281105b15610f30576040516340ca936160e11b815260040160405180910390fd5b601355565b610f3d611e4b565b6001600160a01b03166000908152602a60205260409020805460ff19166001179055565b610f69611e4b565b6001600160a01b038116610f9057604051630ed1b8b360e31b815260040160405180910390fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b610fba611e4b565b6001600160a01b03166000908152602560205260409020805460ff19169055565b610fe3611e4b565b6103e88183610ff28688612d3b565b610ffc9190612d3b565b6110069190612d3b565b11156110255760405163cd4e616760e01b815260040160405180910390fd5b600b849055600c839055600d829055600e81905580826110458587612d3b565b61104f9190612d3b565b6110599190612d3b565b600f5550505050565b6001600160a01b0381166000908152602a602052604081205460ff1680610c465750506001600160a01b031660009081526028602052604090205460ff1690565b6110ab611e4b565b6110b560006122fc565b565b6110bf611e4b565b6001600160a01b0381166000908152602460205260408120805460ff1916905560278054916110ed83612d4e565b919050555050565b6110fd611e4b565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b611127611e4b565b6110b547611370565b611138611e4b565b601254600160a01b900460ff161561116357604051636b91f55d60e11b815260040160405180910390fd5b6012805460ff60a01b1916600160a01b17905560135442111561118557426013555b6016805460ff60a01b1916600160a01b179055565b6111a2611e4b565b6021805460ff1916911515919091179055565b606060048054610baf90612ceb565b6015546000906001600160a01b03166111df57506000610c46565b601554604051639703805160e01b81526001600160a01b03858116600483015260248201859052909116906397038051906044015b602060405180830381865afa158015611231573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8b9190612d67565b61125d611e4b565b6001600160a01b038116600081815260286020908152604091829020805460ff1916600117905590519182527fcf85921c8feeebfed4beb9f6e58085e5056e01e65b727c3dad2da2d3f3bbb8809101610e35565b600033816112bf82866119cf565b9050838110156113245760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6113318286868403611d27565b506001949350505050565b611344611e4b565b6021805491151563010000000263ff00000019909216919091179055565b600033610c40818585611f1f565b611378611e4b565b604051600090339083908381818185875af1925050503d80600081146113ba576040519150601f19603f3d011682016040523d82523d6000602084013e6113bf565b606091505b50509050806113e1576040516312171d8360e31b815260040160405180910390fd5b5050565b6001600160a01b03811660009081526028602052604081205460ff161561140e57506001919050565b602154610100900460ff1661142557506000919050565b60275460009081526029602090815260408083206001600160a01b038616845290915290205460ff161561145b57506001919050565b816001600160a01b03163b60000361147557506000919050565b60408051600481526024810182526020810180516001600160e01b031663c45a015560e01b179052905160009182916001600160a01b038616916114b891612d80565b600060405180830381855afa9150503d80600081146114f3576040519150601f19603f3d011682016040523d82523d6000602084013e6114f8565b606091505b50915091508161150c575060009392505050565b6000818060200190518101906115229190612d9c565b90506001600160a01b03811661153d57506000949350505050565b6001600160a01b03811660009081526024602052604081205460ff1680156115ca575060405163e5e31b1360e01b81526001600160a01b03878116600483015283169063e5e31b1390602401602060405180830381865afa1580156115a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ca9190612db9565b60408051600481526024810182526020810180516001600160e01b0316630dfe168160e01b17905290519192506001600160a01b0388169161160c9190612d80565b600060405180830381855afa9150503d8060008114611647576040519150601f19603f3d011682016040523d82523d6000602084013e61164c565b606091505b509094509250836116635750600095945050505050565b6000838060200190518101906116799190612d9c565b9050306001600160a01b038216036116cf5781156116c25760275460009081526029602090815260408083206001600160a01b038b1684529091529020805460ff191660011790555b5060019695505050505050565b60408051600481526024810182526020810180516001600160e01b031663d21220a760e01b17905290516001600160a01b0389169161170d91612d80565b600060405180830381855afa9150503d8060008114611748576040519150601f19603f3d011682016040523d82523d6000602084013e61174d565b606091505b50909550935084611765575060009695505050505050565b60008480602001905181019061177b9190612d9c565b9050306001600160a01b038216036117d25782156117c45760275460009081526029602090815260408083206001600160a01b038c1684529091529020805460ff191660011790555b506001979650505050505050565b506000979650505050505050565b6117e8611e4b565b60405163a9059cbb60e01b8152336004820152602481018290526000906001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185c9190612db9565b90508061187c576040516312171d8360e31b815260040160405180910390fd5b505050565b3360009081526023602052604090205460ff166118b15760405163bf4a682160e01b815260040160405180910390fd5b6026805460ff1916911515919091179055565b6118cc611e4b565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6118ff611e4b565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196a9190612d67565b90506113e182826117e0565b61197e611e4b565b6001600160a01b038116600081815260286020908152604091829020805460ff1916905590519182527fd43da13451ec70800119deba6dfa609b6b7d6615f08b03256f9c3047fda4ef179101610e35565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6015546000906001600160a01b0316611a1557506000610c46565b60155460405163701992fd60e11b81526001600160a01b038581166004830152602482018590529091169063e03325fa90604401611214565b611a56611e4b565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b611a80611e4b565b6001600160a01b038116600081815260226020908152604091829020805460ff1916905590519182527f575f1ddbfda0dc04fc52273bb61713723c317a04c3f25438c2049dc898144fe29101610e35565b611ad9611e4b565b601855565b60215460009060ff16611af15750600090565b600060135442611b019190612dd6565b9050601f548110611b1457600091505090565b601f5481601e54611b259190612de9565b611b2f9190612e00565b601e54611b3c9190612dd6565b91505090565b601d5460009060ff16611b555750600090565b600060135442611b659190612dd6565b9050601b548110611b7857600091505090565b601b5481601a54611b899190612de9565b611b939190612e00565b601a54611b3c9190612dd6565b611ba8611e4b565b8051825114611bca5760405163512509d360e11b815260040160405180910390fd5b60005b825181101561187c576000838281518110611bea57611bea612e22565b602002602001015190506000838381518110611c0857611c08612e22565b60200260200101519050611c1d338383611f1f565b50508080611c2a90612d4e565b915050611bcd565b611c3a611e4b565b6001600160a01b038116611c9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161131b565b611ca8816122fc565b50565b611cb3611e4b565b6001600160a01b03166000908152602460205260409020805460ff19166001179055565b611cdf611e4b565b60218054911515620100000262ff000019909216919091179055565b611d03611e4b565b6001600160a01b03166000908152602560205260409020805460ff19166001179055565b6001600160a01b038316611d895760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161131b565b6001600160a01b038216611dea5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161131b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146110b55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161131b565b6000611eb184846119cf565b90506000198114611f195781811015611f0c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161131b565b611f198484848403611d27565b50505050565b601254600160a01b900460ff168015611f3a57504260135411155b158015611f6057506001600160a01b03831660009081526022602052604090205460ff16155b8015611f8557506001600160a01b03821660009081526022602052604090205460ff16155b15611fa3576040516312f1f92360e01b815260040160405180910390fd5b6001600160a01b03831660009081526025602052604090205460ff1680611fe257506001600160a01b03821660009081526025602052604090205460ff165b156120005760405163bfbf60b360e01b815260040160405180910390fd5b6021546301000000900460ff16801561201f575061201d82611062565b155b8015612055575060195481612049846001600160a01b031660009081526020819052604090205490565b6120539190612d3b565b115b1561207357604051633ce8c2bd60e11b815260040160405180910390fd5b601654600090600160a81b900460ff161580156120955750612095848461234e565b905060006120a2856113e5565b905060006120af856113e5565b6001600160a01b0387166000908152602860205260408120549192509060ff16806120ff575060275460009081526029602090815260408083206001600160a01b038b16845290915290205460ff165b801561215257506001600160a01b03861660009081526028602052604090205460ff1680612152575060275460009081526029602090815260408083206001600160a01b038a16845290915290205460ff165b9050838015612171575060215462010000900460ff1680612171575080155b3060009081526020819052604081205460175492965091821015906001600160a01b038a163b1580156121ac57506001600160a01b0389163b155b90508180156121c45750601654600160a01b900460ff165b80156121da5750601654600160a81b900460ff16155b80156121e9575060265460ff16155b80156121f3575083155b8015612203575084806122035750805b801561222857506001600160a01b038a1660009081526022602052604090205460ff16155b801561224d57506001600160a01b03891660009081526022602052604090205460ff16155b1561227b576016805460ff60a81b1916600160a81b17905561226d6123c0565b6016805460ff60a81b191690555b600087156122db5785156122b1576122948b8c8b6124fc565b90506122a08b8a61264b565b6122aa9082612d3b565b90506122db565b86156122db576122c28b8b8b6126ca565b90506122ce8b8a61277b565b6122d89082612d3b565b90505b6122ef8b8b6122ea848d612dd6565b6127b2565b5050505050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821660009081526022602052604081205460ff168061238d57506001600160a01b03821660009081526022602052604090205460ff165b1561239a57506000610c46565b60265460ff16158015610d8b57506123b1836113e5565b80610d8b5750610d8b826113e5565b306000908152602081905260408120549050600060185482116123e357816123e7565b6018545b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061242157612421612e22565b6001600160a01b03928316602091820292909201015260165482519116908290600190811061245257612452612e22565b6001600160a01b0392831660209182029290920101526014546124789130911684611d27565b6014546012546040516338ed173960e01b81526001600160a01b03928316926338ed1739926124b592879260009288929116904290600401612e38565b6000604051808303816000875af11580156124d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f199190810190612ea9565b6000600f5460000361251057506000610d8b565b6000612710600f54846125239190612de9565b61252d9190612e00565b9050600061253b85836111c4565b90506125478183612dd6565b91508160000361255c57600092505050610d8b565b6000600f54600b548461256f9190612de9565b6125799190612e00565b90506000600f54600c548561258e9190612de9565b6125989190612e00565b90506000600f54600d54866125ad9190612de9565b6125b79190612e00565b9050600081836125c78689612dd6565b6125d19190612dd6565b6125db9190612dd6565b905083156125f0576125f08a61dead866127b2565b821561260e5760105461260e908b906001600160a01b0316856127b2565b811561262c5760115461262c908b906001600160a01b0316846127b2565b801561263d5761263d8a30836127b2565b509398975050505050505050565b600080612710612659611ade565b6126639085612de9565b61266d9190612e00565b90506000612710602054836126829190612de9565b61268c9190612e00565b9050600061269a8284612dd6565b905081156126af576126af8661dead846127b2565b80156126c0576126c08630836127b2565b5090949350505050565b6000600a546000036126de57506000610d8b565b6000612710600a54846126f19190612de9565b6126fb9190612e00565b9050600061270985836119fa565b90506127158183612dd6565b91508160000361272a57600092505050610d8b565b6000600a546006548461273d9190612de9565b6127479190612e00565b90506000600a546007548561275c9190612de9565b6127669190612e00565b90506000600a54600854866125ad9190612de9565b600080612710612789611b42565b6127939085612de9565b61279d9190612e00565b90506000612710601c54836126829190612de9565b6001600160a01b0383166128165760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161131b565b6001600160a01b0382166128785760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161131b565b6001600160a01b038316600090815260208190526040902054818110156128f05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161131b565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612927908490612d3b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161297391815260200190565b60405180910390a3611f19565b60005b8381101561299b578181015183820152602001612983565b50506000910152565b60208152600082518060208401526129c3816040850160208701612980565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611ca857600080fd5b600080604083850312156129ff57600080fd5b8235612a0a816129d7565b946020939093013593505050565b600060208284031215612a2a57600080fd5b8135610d8b816129d7565b8015158114611ca857600080fd5b600060208284031215612a5557600080fd5b8135610d8b81612a35565b60008060008060808587031215612a7657600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612aa757600080fd5b8335612ab2816129d7565b92506020840135612ac2816129d7565b929592945050506040919091013590565b600060208284031215612ae557600080fd5b5035919050565b60008060408385031215612aff57600080fd5b8235612b0a816129d7565b91506020830135612b1a81612a35565b809150509250929050565b60008060408385031215612b3857600080fd5b8235612b43816129d7565b91506020830135612b1a816129d7565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612b9257612b92612b53565b604052919050565b600067ffffffffffffffff821115612bb457612bb4612b53565b5060051b60200190565b600082601f830112612bcf57600080fd5b81356020612be4612bdf83612b9a565b612b69565b82815260059290921b84018101918181019086841115612c0357600080fd5b8286015b84811015612c1e5780358352918301918301612c07565b509695505050505050565b60008060408385031215612c3c57600080fd5b823567ffffffffffffffff80821115612c5457600080fd5b818501915085601f830112612c6857600080fd5b81356020612c78612bdf83612b9a565b82815260059290921b84018101918181019089841115612c9757600080fd5b948201945b83861015612cbe578535612caf816129d7565b82529482019490820190612c9c565b96505086013592505080821115612cd457600080fd5b50612ce185828601612bbe565b9150509250929050565b600181811c90821680612cff57607f821691505b602082108103612d1f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c4657610c46612d25565b600060018201612d6057612d60612d25565b5060010190565b600060208284031215612d7957600080fd5b5051919050565b60008251612d92818460208701612980565b9190910192915050565b600060208284031215612dae57600080fd5b8151610d8b816129d7565b600060208284031215612dcb57600080fd5b8151610d8b81612a35565b81810381811115610c4657610c46612d25565b8082028115828204841417610c4657610c46612d25565b600082612e1d57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612e885784516001600160a01b031683529383019391830191600101612e63565b50506001600160a01b03969096166060850152505050608001529392505050565b60006020808385031215612ebc57600080fd5b825167ffffffffffffffff811115612ed357600080fd5b8301601f81018513612ee457600080fd5b8051612ef2612bdf82612b9a565b81815260059190911b82018301908381019087831115612f1157600080fd5b928401925b82841015612f2f57835182529284019290840190612f16565b97965050505050505056fea26469706673582212204ad32ec3cd598f1ff05d4cc51217f52f31b3d399ebece012839b12e0e4807c5e64736f6c63430008110033000000000000000000000000b0e83a8fc02351aaba4c9694d8d400bf0da3bd220000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106105305760003560e01c80637b693d71116102af578063bdf2e8c611610172578063ea0888b7116100d9578063f2ed5aa311610092578063f2ed5aa314610b38578063f2fde38b14610b4b578063f3d1504214610b5e578063fe0aa5b814610b71578063fe9fb3fe14610b84578063ffecf51614610b8d57600080fd5b8063ea0888b714610ae6578063ea2f0b3714610af9578063ec45587f14610b0c578063ed0d213714610b1f578063eed0981014610b28578063f2a36d3614610b3057600080fd5b8063db2f54791161012b578063db2f547914610a5e578063dcb7a3e014610a71578063dd62ed3e14610a94578063df89b34414610aa7578063e03325fa14610aca578063e42fbb0914610add57600080fd5b8063bdf2e8c6146109fb578063c5d2c7c114610a0e578063cb96372814610a21578063d045a32914610a34578063d32cd32714610a48578063d73792a914610a5557600080fd5b8063a415274b11610216578063aa4bde28116101cf578063aa4bde281461099d578063b6f45a5b146109a6578063b7d23e46146109b9578063bc063e1a146109cc578063bd61f0a6146109d5578063bd7d67e9146109e857600080fd5b8063a415274b1461092a578063a457c2d71461093d578063a614ff7514610950578063a85fa81214610963578063a9059cbb14610977578063a9853b3a1461098a57600080fd5b80638da5cb5b116102685780638da5cb5b146108d85780638e7e7019146108e957806395d89b41146108fd57806397038051146109055780639c20785b146109185780639d9241ec1461092157600080fd5b80637b693d71146108905780637e761377146108a35780637fa787ba146108ac578063896d2ecb146108b45780638a8c523c146108bd5780638bb9c5ea146108c557600080fd5b80633f33e909116103f75780635fecd9261161035e57806370a082311161031757806370a0823114610827578063715018a614610850578063735492f71461085857806373c4002d1461086b57806375ce383d146108745780637ae3ff471461088757600080fd5b80635fecd926146107bf578063633afd28146107d257806369abd8c4146107e55780636c5b2855146107ee5780636dd3d39f146108015780636f3cf01e1461081457600080fd5b80635342acb4116103b05780635342acb41461074f5780635802e4031461077257806358a66ec41461078557806359b107b9146107905780635b700d91146107995780635dd321c0146107ac57600080fd5b80633f33e909146106dc578063437823ec146106ef57806343c5ebb5146107025780634ada218b146107155780634b00d336146107295780634bd369f41461073c57600080fd5b80631df307771161049b5780632fed1ea3116104545780632fed1ea31461066e578063313ce5671461068157806332aab6d21461069057806339509351146106995780633bbac579146106ac5780633bea3976146106cf57600080fd5b80631df307771461062e5780631ff9e7e71461063757806323b872dd14610640578063245062861461065357806325b617031461065c5780632c10508c1461066557600080fd5b80630c3cfdf6116104ed5780630c3cfdf6146105d1578063113dac71146105da578063115e6db6146105ed5780631341487414610600578063178d9b8e1461061357806318160ddd1461062657600080fd5b806303fd2a4514610535578063059d3f901461055b57806306fdde0314610572578063095ea7b3146105875780630af20807146105aa5780630bcbb28d146105bc575b600080fd5b61053e61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b61056460085481565b604051908152602001610552565b61057a610ba0565b60405161055291906129a4565b61059a6105953660046129ec565b610c32565b6040519015158152602001610552565b60215461059a90610100900460ff1681565b6105cf6105ca366004612a18565b610c4c565b005b61056460075481565b6105cf6105e8366004612a43565b610c9d565b60215461059a9062010000900460ff1681565b6105cf61060e366004612a43565b610cbf565b6105cf610621366004612a60565b610ce5565b600254610564565b61056460185481565b610564600d5481565b61059a61064e366004612a92565b610d6c565b610564601f5481565b61056460135481565b61056460095481565b60155461053e906001600160a01b031681565b60405160128152602001610552565b610564601e5481565b61059a6106a73660046129ec565b610d92565b61059a6106ba366004612a18565b60256020526000908152604090205460ff1681565b601d5461059a9060ff1681565b6105cf6106ea366004612a18565b610db4565b6105cf6106fd366004612a18565b610ddd565b6105cf610710366004612a43565b610e40565b60125461059a90600160a01b900460ff1681565b6105cf610737366004612a18565b610e5b565b6105cf61074a366004612ad3565b610eac565b61059a61075d366004612a18565b60226020526000908152604090205460ff1681565b6105cf610780366004612ad3565b610eb9565b60265460ff1661059a565b610564600a5481565b6105cf6107a7366004612a18565b610f35565b6105cf6107ba366004612a18565b610f61565b6105cf6107cd366004612a18565b610fb2565b60165461053e906001600160a01b031681565b610564601b5481565b6105cf6107fc366004612a60565b610fdb565b61059a61080f366004612a18565b611062565b60125461053e906001600160a01b031681565b610564610835366004612a18565b6001600160a01b031660009081526020819052604090205490565b6105cf6110a3565b6105cf610866366004612a18565b6110b7565b61056460175481565b60105461053e906001600160a01b031681565b61056460065481565b6105cf61089e366004612a18565b6110f5565b610564600b5481565b6105cf61111f565b61056460205481565b6105cf611130565b6105cf6108d3366004612a43565b61119a565b6005546001600160a01b031661053e565b60165461059a90600160a81b900460ff1681565b61057a6111b5565b6105646109133660046129ec565b6111c4565b610564601c5481565b610564600f5481565b6105cf610938366004612a18565b611255565b61059a61094b3660046129ec565b6112b1565b6105cf61095e366004612a43565b61133c565b60165461059a90600160a01b900460ff1681565b61059a6109853660046129ec565b611362565b6105cf610998366004612ad3565b611370565b61056460195481565b61059a6109b4366004612a18565b6113e5565b60115461053e906001600160a01b031681565b6105646103e881565b6105cf6109e33660046129ec565b6117e0565b6105cf6109f6366004612a43565b611881565b6105cf610a09366004612aec565b6118c4565b60145461053e906001600160a01b031681565b6105cf610a2f366004612a18565b6118f7565b60215461059a906301000000900460ff1681565b60215461059a9060ff1681565b61056461271081565b6105cf610a6c366004612a18565b611976565b61059a610a7f366004612a18565b60246020526000908152604090205460ff1681565b610564610aa2366004612b25565b6119cf565b61059a610ab5366004612a18565b60236020526000908152604090205460ff1681565b610564610ad83660046129ec565b6119fa565b610564600c5481565b6105cf610af4366004612a18565b611a4e565b6105cf610b07366004612a18565b611a78565b6105cf610b1a366004612ad3565b611ad1565b610564600e5481565b610564611ade565b610564611b42565b6105cf610b46366004612c29565b611ba0565b6105cf610b59366004612a18565b611c32565b6105cf610b6c366004612a18565b611cab565b6105cf610b7f366004612a43565b611cd7565b610564601a5481565b6105cf610b9b366004612a18565b611cfb565b606060038054610baf90612ceb565b80601f0160208091040260200160405190810160405280929190818152602001828054610bdb90612ceb565b8015610c285780601f10610bfd57610100808354040283529160200191610c28565b820191906000526020600020905b815481529060010190602001808311610c0b57829003601f168201915b5050505050905090565b600033610c40818585611d27565b60019150505b92915050565b610c54611e4b565b6001600160a01b038116610c7b57604051630ed1b8b360e31b815260040160405180910390fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b610ca5611e4b565b602180549115156101000261ff0019909216919091179055565b610cc7611e4b565b60168054911515600160a01b0260ff60a01b19909216919091179055565b610ced611e4b565b6103e88183610cfc8688612d3b565b610d069190612d3b565b610d109190612d3b565b1115610d2f5760405163cd4e616760e01b815260040160405180910390fd5b60068490556007839055600882905560098190558082610d4f8587612d3b565b610d599190612d3b565b610d639190612d3b565b600a5550505050565b600033610d7a858285611ea5565b610d85858585611f1f565b60019150505b9392505050565b600033610c40818585610da583836119cf565b610daf9190612d3b565b611d27565b610dbc611e4b565b6001600160a01b03166000908152602a60205260409020805460ff19169055565b610de5611e4b565b6001600160a01b038116600081815260226020908152604091829020805460ff1916600117905590519182527fe3da4d3a13a7d3ac8ea9148c4285574d2bee3f15c474073a168dc868351c180991015b60405180910390a150565b610e48611e4b565b601d805460ff1916911515919091179055565b610e63611e4b565b6001600160a01b038116610e8a57604051630ed1b8b360e31b815260040160405180910390fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b610eb4611e4b565b601755565b610ec1611e4b565b601254600160a01b900460ff168015610edc57504260135411155b15610efa57604051636b91f55d60e11b815260040160405180910390fd5b601254600160a01b900460ff168015610f1257504281105b15610f30576040516340ca936160e11b815260040160405180910390fd5b601355565b610f3d611e4b565b6001600160a01b03166000908152602a60205260409020805460ff19166001179055565b610f69611e4b565b6001600160a01b038116610f9057604051630ed1b8b360e31b815260040160405180910390fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b610fba611e4b565b6001600160a01b03166000908152602560205260409020805460ff19169055565b610fe3611e4b565b6103e88183610ff28688612d3b565b610ffc9190612d3b565b6110069190612d3b565b11156110255760405163cd4e616760e01b815260040160405180910390fd5b600b849055600c839055600d829055600e81905580826110458587612d3b565b61104f9190612d3b565b6110599190612d3b565b600f5550505050565b6001600160a01b0381166000908152602a602052604081205460ff1680610c465750506001600160a01b031660009081526028602052604090205460ff1690565b6110ab611e4b565b6110b560006122fc565b565b6110bf611e4b565b6001600160a01b0381166000908152602460205260408120805460ff1916905560278054916110ed83612d4e565b919050555050565b6110fd611e4b565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b611127611e4b565b6110b547611370565b611138611e4b565b601254600160a01b900460ff161561116357604051636b91f55d60e11b815260040160405180910390fd5b6012805460ff60a01b1916600160a01b17905560135442111561118557426013555b6016805460ff60a01b1916600160a01b179055565b6111a2611e4b565b6021805460ff1916911515919091179055565b606060048054610baf90612ceb565b6015546000906001600160a01b03166111df57506000610c46565b601554604051639703805160e01b81526001600160a01b03858116600483015260248201859052909116906397038051906044015b602060405180830381865afa158015611231573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8b9190612d67565b61125d611e4b565b6001600160a01b038116600081815260286020908152604091829020805460ff1916600117905590519182527fcf85921c8feeebfed4beb9f6e58085e5056e01e65b727c3dad2da2d3f3bbb8809101610e35565b600033816112bf82866119cf565b9050838110156113245760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6113318286868403611d27565b506001949350505050565b611344611e4b565b6021805491151563010000000263ff00000019909216919091179055565b600033610c40818585611f1f565b611378611e4b565b604051600090339083908381818185875af1925050503d80600081146113ba576040519150601f19603f3d011682016040523d82523d6000602084013e6113bf565b606091505b50509050806113e1576040516312171d8360e31b815260040160405180910390fd5b5050565b6001600160a01b03811660009081526028602052604081205460ff161561140e57506001919050565b602154610100900460ff1661142557506000919050565b60275460009081526029602090815260408083206001600160a01b038616845290915290205460ff161561145b57506001919050565b816001600160a01b03163b60000361147557506000919050565b60408051600481526024810182526020810180516001600160e01b031663c45a015560e01b179052905160009182916001600160a01b038616916114b891612d80565b600060405180830381855afa9150503d80600081146114f3576040519150601f19603f3d011682016040523d82523d6000602084013e6114f8565b606091505b50915091508161150c575060009392505050565b6000818060200190518101906115229190612d9c565b90506001600160a01b03811661153d57506000949350505050565b6001600160a01b03811660009081526024602052604081205460ff1680156115ca575060405163e5e31b1360e01b81526001600160a01b03878116600483015283169063e5e31b1390602401602060405180830381865afa1580156115a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ca9190612db9565b60408051600481526024810182526020810180516001600160e01b0316630dfe168160e01b17905290519192506001600160a01b0388169161160c9190612d80565b600060405180830381855afa9150503d8060008114611647576040519150601f19603f3d011682016040523d82523d6000602084013e61164c565b606091505b509094509250836116635750600095945050505050565b6000838060200190518101906116799190612d9c565b9050306001600160a01b038216036116cf5781156116c25760275460009081526029602090815260408083206001600160a01b038b1684529091529020805460ff191660011790555b5060019695505050505050565b60408051600481526024810182526020810180516001600160e01b031663d21220a760e01b17905290516001600160a01b0389169161170d91612d80565b600060405180830381855afa9150503d8060008114611748576040519150601f19603f3d011682016040523d82523d6000602084013e61174d565b606091505b50909550935084611765575060009695505050505050565b60008480602001905181019061177b9190612d9c565b9050306001600160a01b038216036117d25782156117c45760275460009081526029602090815260408083206001600160a01b038c1684529091529020805460ff191660011790555b506001979650505050505050565b506000979650505050505050565b6117e8611e4b565b60405163a9059cbb60e01b8152336004820152602481018290526000906001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185c9190612db9565b90508061187c576040516312171d8360e31b815260040160405180910390fd5b505050565b3360009081526023602052604090205460ff166118b15760405163bf4a682160e01b815260040160405180910390fd5b6026805460ff1916911515919091179055565b6118cc611e4b565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6118ff611e4b565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196a9190612d67565b90506113e182826117e0565b61197e611e4b565b6001600160a01b038116600081815260286020908152604091829020805460ff1916905590519182527fd43da13451ec70800119deba6dfa609b6b7d6615f08b03256f9c3047fda4ef179101610e35565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6015546000906001600160a01b0316611a1557506000610c46565b60155460405163701992fd60e11b81526001600160a01b038581166004830152602482018590529091169063e03325fa90604401611214565b611a56611e4b565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b611a80611e4b565b6001600160a01b038116600081815260226020908152604091829020805460ff1916905590519182527f575f1ddbfda0dc04fc52273bb61713723c317a04c3f25438c2049dc898144fe29101610e35565b611ad9611e4b565b601855565b60215460009060ff16611af15750600090565b600060135442611b019190612dd6565b9050601f548110611b1457600091505090565b601f5481601e54611b259190612de9565b611b2f9190612e00565b601e54611b3c9190612dd6565b91505090565b601d5460009060ff16611b555750600090565b600060135442611b659190612dd6565b9050601b548110611b7857600091505090565b601b5481601a54611b899190612de9565b611b939190612e00565b601a54611b3c9190612dd6565b611ba8611e4b565b8051825114611bca5760405163512509d360e11b815260040160405180910390fd5b60005b825181101561187c576000838281518110611bea57611bea612e22565b602002602001015190506000838381518110611c0857611c08612e22565b60200260200101519050611c1d338383611f1f565b50508080611c2a90612d4e565b915050611bcd565b611c3a611e4b565b6001600160a01b038116611c9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161131b565b611ca8816122fc565b50565b611cb3611e4b565b6001600160a01b03166000908152602460205260409020805460ff19166001179055565b611cdf611e4b565b60218054911515620100000262ff000019909216919091179055565b611d03611e4b565b6001600160a01b03166000908152602560205260409020805460ff19166001179055565b6001600160a01b038316611d895760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161131b565b6001600160a01b038216611dea5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161131b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146110b55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161131b565b6000611eb184846119cf565b90506000198114611f195781811015611f0c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161131b565b611f198484848403611d27565b50505050565b601254600160a01b900460ff168015611f3a57504260135411155b158015611f6057506001600160a01b03831660009081526022602052604090205460ff16155b8015611f8557506001600160a01b03821660009081526022602052604090205460ff16155b15611fa3576040516312f1f92360e01b815260040160405180910390fd5b6001600160a01b03831660009081526025602052604090205460ff1680611fe257506001600160a01b03821660009081526025602052604090205460ff165b156120005760405163bfbf60b360e01b815260040160405180910390fd5b6021546301000000900460ff16801561201f575061201d82611062565b155b8015612055575060195481612049846001600160a01b031660009081526020819052604090205490565b6120539190612d3b565b115b1561207357604051633ce8c2bd60e11b815260040160405180910390fd5b601654600090600160a81b900460ff161580156120955750612095848461234e565b905060006120a2856113e5565b905060006120af856113e5565b6001600160a01b0387166000908152602860205260408120549192509060ff16806120ff575060275460009081526029602090815260408083206001600160a01b038b16845290915290205460ff165b801561215257506001600160a01b03861660009081526028602052604090205460ff1680612152575060275460009081526029602090815260408083206001600160a01b038a16845290915290205460ff165b9050838015612171575060215462010000900460ff1680612171575080155b3060009081526020819052604081205460175492965091821015906001600160a01b038a163b1580156121ac57506001600160a01b0389163b155b90508180156121c45750601654600160a01b900460ff165b80156121da5750601654600160a81b900460ff16155b80156121e9575060265460ff16155b80156121f3575083155b8015612203575084806122035750805b801561222857506001600160a01b038a1660009081526022602052604090205460ff16155b801561224d57506001600160a01b03891660009081526022602052604090205460ff16155b1561227b576016805460ff60a81b1916600160a81b17905561226d6123c0565b6016805460ff60a81b191690555b600087156122db5785156122b1576122948b8c8b6124fc565b90506122a08b8a61264b565b6122aa9082612d3b565b90506122db565b86156122db576122c28b8b8b6126ca565b90506122ce8b8a61277b565b6122d89082612d3b565b90505b6122ef8b8b6122ea848d612dd6565b6127b2565b5050505050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821660009081526022602052604081205460ff168061238d57506001600160a01b03821660009081526022602052604090205460ff165b1561239a57506000610c46565b60265460ff16158015610d8b57506123b1836113e5565b80610d8b5750610d8b826113e5565b306000908152602081905260408120549050600060185482116123e357816123e7565b6018545b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061242157612421612e22565b6001600160a01b03928316602091820292909201015260165482519116908290600190811061245257612452612e22565b6001600160a01b0392831660209182029290920101526014546124789130911684611d27565b6014546012546040516338ed173960e01b81526001600160a01b03928316926338ed1739926124b592879260009288929116904290600401612e38565b6000604051808303816000875af11580156124d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f199190810190612ea9565b6000600f5460000361251057506000610d8b565b6000612710600f54846125239190612de9565b61252d9190612e00565b9050600061253b85836111c4565b90506125478183612dd6565b91508160000361255c57600092505050610d8b565b6000600f54600b548461256f9190612de9565b6125799190612e00565b90506000600f54600c548561258e9190612de9565b6125989190612e00565b90506000600f54600d54866125ad9190612de9565b6125b79190612e00565b9050600081836125c78689612dd6565b6125d19190612dd6565b6125db9190612dd6565b905083156125f0576125f08a61dead866127b2565b821561260e5760105461260e908b906001600160a01b0316856127b2565b811561262c5760115461262c908b906001600160a01b0316846127b2565b801561263d5761263d8a30836127b2565b509398975050505050505050565b600080612710612659611ade565b6126639085612de9565b61266d9190612e00565b90506000612710602054836126829190612de9565b61268c9190612e00565b9050600061269a8284612dd6565b905081156126af576126af8661dead846127b2565b80156126c0576126c08630836127b2565b5090949350505050565b6000600a546000036126de57506000610d8b565b6000612710600a54846126f19190612de9565b6126fb9190612e00565b9050600061270985836119fa565b90506127158183612dd6565b91508160000361272a57600092505050610d8b565b6000600a546006548461273d9190612de9565b6127479190612e00565b90506000600a546007548561275c9190612de9565b6127669190612e00565b90506000600a54600854866125ad9190612de9565b600080612710612789611b42565b6127939085612de9565b61279d9190612e00565b90506000612710601c54836126829190612de9565b6001600160a01b0383166128165760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161131b565b6001600160a01b0382166128785760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161131b565b6001600160a01b038316600090815260208190526040902054818110156128f05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161131b565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612927908490612d3b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161297391815260200190565b60405180910390a3611f19565b60005b8381101561299b578181015183820152602001612983565b50506000910152565b60208152600082518060208401526129c3816040850160208701612980565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611ca857600080fd5b600080604083850312156129ff57600080fd5b8235612a0a816129d7565b946020939093013593505050565b600060208284031215612a2a57600080fd5b8135610d8b816129d7565b8015158114611ca857600080fd5b600060208284031215612a5557600080fd5b8135610d8b81612a35565b60008060008060808587031215612a7657600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612aa757600080fd5b8335612ab2816129d7565b92506020840135612ac2816129d7565b929592945050506040919091013590565b600060208284031215612ae557600080fd5b5035919050565b60008060408385031215612aff57600080fd5b8235612b0a816129d7565b91506020830135612b1a81612a35565b809150509250929050565b60008060408385031215612b3857600080fd5b8235612b43816129d7565b91506020830135612b1a816129d7565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612b9257612b92612b53565b604052919050565b600067ffffffffffffffff821115612bb457612bb4612b53565b5060051b60200190565b600082601f830112612bcf57600080fd5b81356020612be4612bdf83612b9a565b612b69565b82815260059290921b84018101918181019086841115612c0357600080fd5b8286015b84811015612c1e5780358352918301918301612c07565b509695505050505050565b60008060408385031215612c3c57600080fd5b823567ffffffffffffffff80821115612c5457600080fd5b818501915085601f830112612c6857600080fd5b81356020612c78612bdf83612b9a565b82815260059290921b84018101918181019089841115612c9757600080fd5b948201945b83861015612cbe578535612caf816129d7565b82529482019490820190612c9c565b96505086013592505080821115612cd457600080fd5b50612ce185828601612bbe565b9150509250929050565b600181811c90821680612cff57607f821691505b602082108103612d1f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c4657610c46612d25565b600060018201612d6057612d60612d25565b5060010190565b600060208284031215612d7957600080fd5b5051919050565b60008251612d92818460208701612980565b9190910192915050565b600060208284031215612dae57600080fd5b8151610d8b816129d7565b600060208284031215612dcb57600080fd5b8151610d8b81612a35565b81810381811115610c4657610c46612d25565b8082028115828204841417610c4657610c46612d25565b600082612e1d57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612e885784516001600160a01b031683529383019391830191600101612e63565b50506001600160a01b03969096166060850152505050608001529392505050565b60006020808385031215612ebc57600080fd5b825167ffffffffffffffff811115612ed357600080fd5b8301601f81018513612ee457600080fd5b8051612ef2612bdf82612b9a565b81815260059190911b82018301908381019087831115612f1157600080fd5b928401925b82841015612f2f57835182529284019290840190612f16565b97965050505050505056fea26469706673582212204ad32ec3cd598f1ff05d4cc51217f52f31b3d399ebece012839b12e0e4807c5e64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b0e83a8fc02351aaba4c9694d8d400bf0da3bd220000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9
-----Decoded View---------------
Arg [0] : _router (address): 0xB0e83A8fC02351aAba4c9694D8d400bF0da3bD22
Arg [1] : _swapPairToken (address): 0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000b0e83a8fc02351aaba4c9694d8d400bf0da3bd22
Arg [1] : 0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9
Deployed Bytecode Sourcemap
512:22600:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;577:73;;608:42;577:73;;;;;-1:-1:-1;;;;;178:32:12;;;160:51;;148:2;133:18;577:73:10;;;;;;;;815:28;;;;;;;;;368:25:12;;;356:2;341:18;815:28:10;222:177:12;2156:98:1;;;:::i;:::-;;;;;;;:::i;4433:197::-;;;;;;:::i;:::-;;:::i;:::-;;;1681:14:12;;1674:22;1656:41;;1644:2;1629:18;4433:197:1;1516:187:12;2024:36:10;;;;;;;;;;;;18736:206;;;;;;:::i;:::-;;:::i;:::-;;783:26;;;;;;21718:175;;;;;;:::i;:::-;;:::i;2066:34::-;;;;;;;;;;;;22493:155;;;;;;:::i;:::-;;:::i;19163:572::-;;;;;;:::i;:::-;;:::i;3244:106:1:-;3331:12;;3244:106;;1557:32:10;;;;;;982:29;;;;;;5192:286:1;;;;;;:::i;:::-;;:::i;1872:50:10:-;;;;;;1239:42;;;;;;849:29;;;;;;1368:43;;;;;-1:-1:-1;;;;;1368:43:10;;;3093:91:1;;;3175:2;3557:36:12;;3545:2;3530:18;3093:91:1;3415:184:12;1827:39:10;;;;;;5873:234:1;;;;;;:::i;:::-;;:::i;2310:37:10:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1782:38;;;;;;;;;17598:122;;;;;;:::i;:::-;;:::i;18199:160::-;;;;;;:::i;:::-;;:::i;21899:155::-;;;;;;:::i;:::-;;:::i;1207:26::-;;;;;-1:-1:-1;;;1207:26:10;;;;;;18948:209;;;;;;:::i;:::-;;:::i;22225:126::-;;;;;;:::i;:::-;;:::i;2141:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;21339:373;;;;;;:::i;:::-;;:::i;15676:118::-;15760:27;;;;15676:118;;884:26;;;;;;17469:123;;;;;;:::i;:::-;;:::i;18528:202::-;;;;;;:::i;:::-;;:::i;23018:92::-;;;;;;:::i;:::-;;:::i;1417:28::-;;;;;-1:-1:-1;;;;;1417:28:10;;;1676:51;;;;;;19741:642;;;;;;:::i;:::-;;:::i;17277:186::-;;;;;;:::i;:::-;;:::i;1165:35::-;;;;;-1:-1:-1;;;;;1165:35:10;;;3408:125:1;;;;;;:::i;:::-;-1:-1:-1;;;;;3508:18:1;3482:7;3508:18;;;;;;;;;;;;3408:125;1831:101:0;;;:::i;20698:156:10:-;;;;;;:::i;:::-;;:::i;1520:31::-;;;;;;1087:32;;;;;-1:-1:-1;;;;;1087:32:10;;;752:25;;;;;;22654:139;;;;;;:::i;:::-;;:::i;917:26::-;;;;;;16272:101;;;:::i;1928:44::-;;;;;;21033:300;;;:::i;22060:159::-;;;;;;:::i;:::-;;:::i;1201:85:0:-;1273:6;;-1:-1:-1;;;;;1273:6:0;1201:85;;1488:26:10;;;;;-1:-1:-1;;;1488:26:10;;;;;;2367:102:1;;;:::i;8648:276:10:-;;;;;;:::i;:::-;;:::i;1733:43::-;;;;;;1053:27;;;;;;17917:132;;;;;;:::i;:::-;;:::i;6594:427:1:-;;;;;;:::i;:::-;;:::i;17726:105:10:-;;;;;;:::i;:::-;;:::i;1451:31::-;;;;;-1:-1:-1;;;1451:31:10;;;;;;3729:189:1;;;;;;:::i;:::-;;:::i;16081:185:10:-;;;;;;:::i;:::-;;:::i;1595:30::-;;;;;;5406:1640;;;;;;:::i;:::-;;:::i;1125:34::-;;;;;-1:-1:-1;;;;;1125:34:10;;;707:38;;741:4;707:38;;16379:209;;;;;;:::i;:::-;;:::i;15800:195::-;;;;;;:::i;:::-;;:::i;20389:177::-;;;;;;:::i;:::-;;:::i;1321:41::-;;;;;-1:-1:-1;;;;;1321:41:10;;;16594:170;;;;;;:::i;:::-;;:::i;2106:28::-;;;;;;;;;;;;1978:39;;;;;;;;;656:45;;698:3;656:45;;18055:138;;;;;;:::i;:::-;;:::i;2252:52::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3976:149:1;;;;;;:::i;:::-;;:::i;2196:50:10:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8368:274;;;;;;:::i;:::-;;:::i;949:27::-;;;;;;22799:119;;;;;;:::i;:::-;;:::i;18365:157::-;;;;;;:::i;:::-;;:::i;22357:130::-;;;;;;:::i;:::-;;:::i;1017:30::-;;;;;;7843:439;;;:::i;7404:433::-;;;:::i;16770:421::-;;;;;;:::i;:::-;;:::i;2081:198:0:-;;;;;;:::i;:::-;;:::i;20572:120:10:-;;;;;;:::i;:::-;;:::i;20860:167::-;;;;;;:::i;:::-;;:::i;1632:38::-;;;;;;22924:88;;;;;;:::i;:::-;;:::i;2156:98:1:-;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:4;4570:32:1;719:10:4;4586:7:1;4595:6;4570:8;:32::i;:::-;4619:4;4612:11;;;4433:197;;;;;:::o;18736:206:10:-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;18819:22:10;::::1;18815:81;;18864:21;;-1:-1:-1::0;;;18864:21:10::1;;;;;;;;;;;18815:81;18905:19;:30:::0;;-1:-1:-1;;;;;;18905:30:10::1;-1:-1:-1::0;;;;;18905:30:10;;;::::1;::::0;;;::::1;::::0;;18736:206::o;21718:175::-;1094:13:0;:11;:13::i;:::-;21834:24:10::1;:52:::0;;;::::1;;;;-1:-1:-1::0;;21834:52:10;;::::1;::::0;;;::::1;::::0;;21718:175::o;22493:155::-;1094:13:0;:11;:13::i;:::-;22599:19:10::1;:42:::0;;;::::1;;-1:-1:-1::0;;;22599:42:10::1;-1:-1:-1::0;;;;22599:42:10;;::::1;::::0;;;::::1;::::0;;22493:155::o;19163:572::-;1094:13:0;:11;:13::i;:::-;741:4:10::1;19403:15:::0;19386:14;19357:26:::1;19371:12:::0;19357:11;:26:::1;:::i;:::-;:43;;;;:::i;:::-;:61;;;;:::i;:::-;:83;19340:155;;;19472:12;;-1:-1:-1::0;;;19472:12:10::1;;;;;;;;;;;19340:155;19505:10;:24:::0;;;19539:11:::1;:26:::0;;;19575:13:::1;:30:::0;;;19615:14:::1;:32:::0;;;19632:15;19591:14;19671:24:::1;19553:12:::0;19518:11;19671:24:::1;:::i;:::-;:40;;;;:::i;:::-;:57;;;;:::i;:::-;19657:11;:71:::0;-1:-1:-1;;;;19163:572:10:o;5192:286:1:-;5319:4;719:10:4;5375:38:1;5391:4;719:10:4;5406:6:1;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;5467:4;5460:11;;;5192:286;;;;;;:::o;5873:234::-;5961:4;719:10:4;6015:64:1;719:10:4;6031:7:1;6068:10;6040:25;719:10:4;6031:7:1;6040:9;:25::i;:::-;:38;;;;:::i;:::-;6015:8;:64::i;17598:122:10:-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;17672:33:10::1;17708:5;17672:33:::0;;;:24:::1;:33;::::0;;;;:41;;-1:-1:-1;;17672:41:10::1;::::0;;17598:122::o;18199:160::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;18270:27:10;::::1;;::::0;;;:17:::1;:27;::::0;;;;;;;;:34;;-1:-1:-1;;18270:34:10::1;18300:4;18270:34;::::0;;18319:33;;160:51:12;;;18319:33:10::1;::::0;133:18:12;18319:33:10::1;;;;;;;;18199:160:::0;:::o;21899:155::-;1094:13:0;:11;:13::i;:::-;22005:19:10::1;:42:::0;;-1:-1:-1;;22005:42:10::1;::::0;::::1;;::::0;;;::::1;::::0;;21899:155::o;18948:209::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;19032:22:10;::::1;19028:81;;19077:21;;-1:-1:-1::0;;;19077:21:10::1;;;;;;;;;;;19028:81;19119:20;:31:::0;;-1:-1:-1;;;;;;19119:31:10::1;-1:-1:-1::0;;;;;19119:31:10;;;::::1;::::0;;;::::1;::::0;;18948:209::o;22225:126::-;1094:13:0;:11;:13::i;:::-;22308:16:10::1;:36:::0;22225:126::o;21339:373::-;1094:13:0;:11;:13::i;:::-;21426:14:10::1;::::0;-1:-1:-1;;;21426:14:10;::::1;;;:60:::0;::::1;;;;21471:15;21444:23;;:42;;21426:60;21422:121;;;21509:23;;-1:-1:-1::0;;;21509:23:10::1;;;;;;;;;;;21422:121;21557:14;::::0;-1:-1:-1;;;21557:14:10;::::1;;;:46:::0;::::1;;;;21588:15;21575:10;:28;21557:46;21553:106;;;21626:22;;-1:-1:-1::0;;;21626:22:10::1;;;;;;;;;;;21553:106;21669:23;:36:::0;21339:373::o;17469:123::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;17545:33:10::1;;::::0;;;:24:::1;:33;::::0;;;;:40;;-1:-1:-1;;17545:40:10::1;17581:4;17545:40;::::0;;17469:123::o;18528:202::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;18609:22:10;::::1;18605:81;;18654:21;;-1:-1:-1::0;;;18654:21:10::1;;;;;;;;;;;18605:81;18695:17;:28:::0;;-1:-1:-1;;;;;;18695:28:10::1;-1:-1:-1::0;;;;;18695:28:10;;;::::1;::::0;;;::::1;::::0;;18528:202::o;23018:92::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;23081:14:10::1;23098:5;23081:14:::0;;;:5:::1;:14;::::0;;;;:22;;-1:-1:-1;;23081:22:10::1;::::0;;23018:92::o;19741:642::-;1094:13:0;:11;:13::i;:::-;741:4:10::1;19989:16:::0;19971:15;19940:28:::1;19955:13:::0;19940:12;:28:::1;:::i;:::-;:46;;;;:::i;:::-;:65;;;;:::i;:::-;:87;19923:159;;;20059:12;;-1:-1:-1::0;;;20059:12:10::1;;;;;;;;;;;19923:159;20092:11;:26:::0;;;20128:12:::1;:28:::0;;;20166:14:::1;:32:::0;;;20208:15:::1;:34:::0;;;20226:16;20183:15;20279:38:::1;20143:13:::0;20106:12;20279:38:::1;:::i;:::-;:67;;;;:::i;:::-;:97;;;;:::i;:::-;20252:12;:124:::0;-1:-1:-1;;;;19741:642:10:o;17277:186::-;-1:-1:-1;;;;;17399:33:10;;17372:4;17399:33;;;:24;:33;;;;;;;;;:57;;-1:-1:-1;;;;;;;17436:20:10;;;;;:11;:20;;;;;;;;;17277:186::o;1831:101:0:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;20698:156:10:-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;20777:30:10;::::1;20810:5;20777:30:::0;;;:20:::1;:30;::::0;;;;:38;;-1:-1:-1;;20777:38:10::1;::::0;;20825:20:::1;:22:::0;;;::::1;::::0;::::1;:::i;:::-;;;;;;20698:156:::0;:::o;22654:139::-;1094:13:0;:11;:13::i;:::-;22733:14:10::1;:53:::0;;-1:-1:-1;;;;;;22733:53:10::1;-1:-1:-1::0;;;;;22733:53:10;;;::::1;::::0;;;::::1;::::0;;22654:139::o;16272:101::-;1094:13:0;:11;:13::i;:::-;16327:39:10::1;16344:21;16327:16;:39::i;21033:300::-:0;1094:13:0;:11;:13::i;:::-;21089:14:10::1;::::0;-1:-1:-1;;;21089:14:10;::::1;;;21085:50;;;21112:23;;-1:-1:-1::0;;;21112:23:10::1;;;;;;;;;;;21085:50;21145:14;:21:::0;;-1:-1:-1;;;;21145:21:10::1;-1:-1:-1::0;;;21145:21:10::1;::::0;;21181:23:::1;::::0;21207:15:::1;-1:-1:-1::0;21177:113:10::1;;;21264:15;21238:23;:41:::0;21177:113:::1;21300:19;:26:::0;;-1:-1:-1;;;;21300:26:10::1;-1:-1:-1::0;;;21300:26:10::1;::::0;;21033:300::o;22060:159::-;1094:13:0;:11;:13::i;:::-;22168:20:10::1;:44:::0;;-1:-1:-1;;22168:44:10::1;::::0;::::1;;::::0;;;::::1;::::0;;22060:159::o;2367:102:1:-;2423:13;2455:7;2448:14;;;;;:::i;8648:276:10:-;8797:17;;8762:7;;-1:-1:-1;;;;;8797:17:10;8785:54;;-1:-1:-1;8838:1:10;8831:8;;8785:54;8856:17;;:61;;-1:-1:-1;;;8856:61:10;;-1:-1:-1;;;;;9150:32:12;;;8856:61:10;;;9132:51:12;9199:18;;;9192:34;;;8856:17:10;;;;:36;;9105:18:12;;8856:61:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17917:132::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;17982:18:10;::::1;;::::0;;;:11:::1;:18;::::0;;;;;;;;:25;;-1:-1:-1;;17982:25:10::1;18003:4;17982:25;::::0;;18022:20;;160:51:12;;;18022:20:10::1;::::0;133:18:12;18022:20:10::1;14:203:12::0;6594:427:1;6687:4;719:10:4;6687:4:1;6768:25;719:10:4;6785:7:1;6768:9;:25::i;:::-;6741:52;;6831:15;6811:16;:35;;6803:85;;;;-1:-1:-1;;;6803:85:1;;9628:2:12;6803:85:1;;;9610:21:12;9667:2;9647:18;;;9640:30;9706:34;9686:18;;;9679:62;-1:-1:-1;;;9757:18:12;;;9750:35;9802:19;;6803:85:1;;;;;;;;;6922:60;6931:5;6938:7;6966:15;6947:16;:34;6922:8;:60::i;:::-;-1:-1:-1;7010:4:1;;6594:427;-1:-1:-1;;;;6594:427:1:o;17726:105:10:-;1094:13:0;:11;:13::i;:::-;17798:16:10::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;17798:26:10;;::::1;::::0;;;::::1;::::0;;17726:105::o;3729:189:1:-;3808:4;719:10:4;3862:28:1;719:10:4;3879:2:1;3883:6;3862:9;:28::i;16081:185:10:-;1094:13:0;:11;:13::i;:::-;16169:43:10::1;::::0;16151:12:::1;::::0;16177:10:::1;::::0;16201:6;;16151:12;16169:43;16151:12;16169:43;16201:6;16177:10;16169:43:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16150:62;;;16227:7;16222:37;;16243:16;;-1:-1:-1::0;;;16243:16:10::1;;;;;;;;;;;16222:37;16140:126;16081:185:::0;:::o;5406:1640::-;-1:-1:-1;;;;;5484:18:10;;5457:11;5484:18;;;:11;:18;;;;;;;;5480:60;;;-1:-1:-1;5525:4:10;;5406:1640;-1:-1:-1;5406:1640:10:o;5480:60::-;5555:24;;;;;;;5550:68;;-1:-1:-1;5602:5:10;;5406:1640;-1:-1:-1;5406:1640:10:o;5550:68::-;5662:20;;5632:51;;;;:29;:51;;;;;;;;-1:-1:-1;;;;;5632:58:10;;;;;;;;;;;;5628:100;;;-1:-1:-1;5713:4:10;;5406:1640;-1:-1:-1;5406:1640:10:o;5628:100::-;5742:5;-1:-1:-1;;;;;5742:17:10;;5763:1;5742:22;5738:65;;-1:-1:-1;5787:5:10;;5406:1640;-1:-1:-1;5406:1640:10:o;5738:65::-;5879:36;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5879:36:10;-1:-1:-1;;;5879:36:10;;;5849:76;;5814:12;;;;-1:-1:-1;;;;;5849:16:10;;;:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5813:112;;;;5940:7;5935:26;;-1:-1:-1;5956:5:10;;5406:1640;-1:-1:-1;;;5406:1640:10:o;5935:26::-;5971:15;6000:4;5989:27;;;;;;;;;;;;:::i;:::-;5971:45;-1:-1:-1;;;;;;6030:21:10;;6026:39;;-1:-1:-1;6060:5:10;;5406:1640;-1:-1:-1;;;;5406:1640:10:o;6026:39::-;-1:-1:-1;;;;;6098:29:10;;6076:19;6098:29;;;:20;:29;;;;;;;;:86;;;;-1:-1:-1;6143:41:10;;-1:-1:-1;;;6143:41:10;;-1:-1:-1;;;;;178:32:12;;;6143:41:10;;;160:51:12;6143:34:10;;;;;133:18:12;;6143:41:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6230:35;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6230:35:10;-1:-1:-1;;;6230:35:10;;;6213:53;;6076:108;;-1:-1:-1;;;;;;6213:16:10;;;:53;;6230:35;6213:53;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6195:71:10;;-1:-1:-1;6195:71:10;-1:-1:-1;6195:71:10;6276:26;;-1:-1:-1;6297:5:10;;5406:1640;-1:-1:-1;;;;;5406:1640:10:o;6276:26::-;6312:14;6340:4;6329:27;;;;;;;;;;;;:::i;:::-;6312:44;-1:-1:-1;6388:4:10;-1:-1:-1;;;;;6370:23:10;;;6366:235;;6413:14;6409:156;;;6477:20;;6447:51;;;;:29;:51;;;;;;;;-1:-1:-1;;;;;6447:96:10;;;;;;;;;:103;;-1:-1:-1;;6447:103:10;6546:4;6447:103;;;6409:156;-1:-1:-1;6586:4:10;;5406:1640;-1:-1:-1;;;;;;5406:1640:10:o;6366:235::-;6646:35;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6646:35:10;-1:-1:-1;;;6646:35:10;;;6629:53;;-1:-1:-1;;;;;6629:16:10;;;:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6611:71:10;;-1:-1:-1;6611:71:10;-1:-1:-1;6611:71:10;6692:26;;-1:-1:-1;6713:5:10;;5406:1640;-1:-1:-1;;;;;;5406:1640:10:o;6692:26::-;6728:14;6756:4;6745:27;;;;;;;;;;;;:::i;:::-;6728:44;-1:-1:-1;6804:4:10;-1:-1:-1;;;;;6786:23:10;;;6782:235;;6829:14;6825:156;;;6893:20;;6863:51;;;;:29;:51;;;;;;;;-1:-1:-1;;;;;6863:96:10;;;;;;;;;:103;;-1:-1:-1;;6863:103:10;6962:4;6863:103;;;6825:156;-1:-1:-1;7002:4:10;;5406:1640;-1:-1:-1;;;;;;;5406:1640:10:o;6782:235::-;-1:-1:-1;7034:5:10;;5406:1640;-1:-1:-1;;;;;;;5406:1640:10:o;16379:209::-;1094:13:0;:11;:13::i;:::-;16500:34:10::1;::::0;-1:-1:-1;;;16500:34:10;;16515:10:::1;16500:34;::::0;::::1;9132:51:12::0;9199:18;;;9192:34;;;16485:12:10::1;::::0;-1:-1:-1;;;;;16500:14:10;::::1;::::0;::::1;::::0;9105:18:12;;16500:34:10::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16485:49;;16549:7;16544:37;;16565:16;;-1:-1:-1::0;;;16565:16:10::1;;;;;;;;;;;16544:37;16475:113;16379:209:::0;;:::o;15800:195::-;5237:10;5218:30;;;;:18;:30;;;;;;;;5213:90;;5271:21;;-1:-1:-1;;;5271:21:10;;;;;;;;;;;5213:90;15931:27:::1;:57:::0;;-1:-1:-1;;15931:57:10::1;::::0;::::1;;::::0;;;::::1;::::0;;15800:195::o;20389:177::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;20509:37:10;;;::::1;;::::0;;;:18:::1;:37;::::0;;;;:50;;-1:-1:-1;;20509:50:10::1;::::0;::::1;;::::0;;;::::1;::::0;;20389:177::o;16594:170::-;1094:13:0;:11;:13::i;:::-;16682:30:10::1;::::0;-1:-1:-1;;;16682:30:10;;16706:4:::1;16682:30;::::0;::::1;160:51:12::0;16664:15:10::1;::::0;-1:-1:-1;;;;;16682:15:10;::::1;::::0;::::1;::::0;133:18:12;;16682:30:10::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16664:48;;16722:35;16742:5;16749:7;16722:19;:35::i;18055:138::-:0;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;18123:18:10;::::1;18144:5;18123:18:::0;;;:11:::1;:18;::::0;;;;;;;;:26;;-1:-1:-1;;18123:26:10::1;::::0;;18164:22;;160:51:12;;;18164:22:10::1;::::0;133:18:12;18164:22:10::1;14:203:12::0;3976:149:1;-1:-1:-1;;;;;4091:18:1;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149::o;8368:274:10:-;8516:17;;8481:7;;-1:-1:-1;;;;;8516:17:10;8504:54;;-1:-1:-1;8557:1:10;8550:8;;8504:54;8575:17;;:60;;-1:-1:-1;;;8575:60:10;;-1:-1:-1;;;;;9150:32:12;;;8575:60:10;;;9132:51:12;9199:18;;;9192:34;;;8575:17:10;;;;:35;;9105:18:12;;8575:60:10;8958:274:12;22799:119:10;1094:13:0;:11;:13::i;:::-;22884:17:10::1;:27:::0;;-1:-1:-1;;;;;;22884:27:10::1;-1:-1:-1::0;;;;;22884:27:10;;;::::1;::::0;;;::::1;::::0;;22799:119::o;18365:157::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;18434:27:10;::::1;18464:5;18434:27:::0;;;:17:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;18434:35:10::1;::::0;;18484:31;;160:51:12;;;18484:31:10::1;::::0;133:18:12;18484:31:10::1;14:203:12::0;22357:130:10;1094:13:0;:11;:13::i;:::-;22442:17:10::1;:38:::0;22357:130::o;7843:439::-;7913:20;;7889:7;;7913:20;;7908:60;;-1:-1:-1;7956:1:10;;7843:439::o;7908:60::-;7978:23;8022;;8004:15;:41;;;;:::i;:::-;7978:67;;8079:24;;8060:15;:43;8056:82;;8126:1;8119:8;;;7843:439;:::o;8056:82::-;8251:24;;8220:15;8200:17;;:35;;;;:::i;:::-;8199:76;;;;:::i;:::-;8167:17;;:108;;;;:::i;:::-;8148:127;;;7843:439;:::o;7404:433::-;7473:19;;7449:7;;7473:19;;7468:59;;-1:-1:-1;7515:1:10;;7404:433::o;7468:59::-;7537:23;7581;;7563:15;:41;;;;:::i;:::-;7537:67;;7638:23;;7619:15;:42;7615:81;;7684:1;7677:8;;;7404:433;:::o;7615:81::-;7807:23;;7776:15;7757:16;;:34;;;;:::i;:::-;7756:74;;;;:::i;:::-;7725:16;;:105;;;;:::i;16770:421::-;1094:13:0;:11;:13::i;:::-;16917:7:10::1;:14;16899:7;:14;:32;16895:91;;16954:21;;-1:-1:-1::0;;;16954:21:10::1;;;;;;;;;;;16895:91;17001:9;16996:189;17020:7;:14;17016:1;:18;16996:189;;;17055:14;17072:7;17080:1;17072:10;;;;;;;;:::i;:::-;;;;;;;17055:27;;17096:14;17113:7;17121:1;17113:10;;;;;;;;:::i;:::-;;;;;;;17096:27;;17137:37;17147:10;17159:6;17167;17137:9;:37::i;:::-;17041:144;;17036:3;;;;;:::i;:::-;;;;16996:189;;2081:198:0::0;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:0;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:0;;11710:2:12;2161:73:0::1;::::0;::::1;11692:21:12::0;11749:2;11729:18;;;11722:30;11788:34;11768:18;;;11761:62;-1:-1:-1;;;11839:18:12;;;11832:36;11885:19;;2161:73:0::1;11508:402:12::0;2161:73:0::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;20572:120:10:-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;20648:30:10::1;;::::0;;;:20:::1;:30;::::0;;;;:37;;-1:-1:-1;;20648:37:10::1;20681:4;20648:37;::::0;;20572:120::o;20860:167::-;1094:13:0;:11;:13::i;:::-;20972:22:10::1;:48:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;20972:48:10;;::::1;::::0;;;::::1;::::0;;20860:167::o;22924:88::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;22984:14:10::1;;::::0;;;:5:::1;:14;::::0;;;;:21;;-1:-1:-1;;22984:21:10::1;23001:4;22984:21;::::0;;22924:88::o;10110:370:1:-;-1:-1:-1;;;;;10241:19:1;;10233:68;;;;-1:-1:-1;;;10233:68:1;;12117:2:12;10233:68:1;;;12099:21:12;12156:2;12136:18;;;12129:30;12195:34;12175:18;;;12168:62;-1:-1:-1;;;12246:18:12;;;12239:34;12290:19;;10233:68:1;11915:400:12;10233:68:1;-1:-1:-1;;;;;10319:21:1;;10311:68;;;;-1:-1:-1;;;10311:68:1;;12522:2:12;10311:68:1;;;12504:21:12;12561:2;12541:18;;;12534:30;12600:34;12580:18;;;12573:62;-1:-1:-1;;;12651:18:12;;;12644:32;12693:19;;10311:68:1;12320:398:12;10311:68:1;-1:-1:-1;;;;;10390:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10441:32;;368:25:12;;;10441:32:1;;341:18:12;10441:32:1;;;;;;;10110:370;;;:::o;1359:130:0:-;1273:6;;-1:-1:-1;;;;;1273:6:0;719:10:4;1422:23:0;1414:68;;;;-1:-1:-1;;;1414:68:0;;12925:2:12;1414:68:0;;;12907:21:12;;;12944:18;;;12937:30;13003:34;12983:18;;;12976:62;13055:18;;1414:68:0;12723:356:12;10761:441:1;10891:24;10918:25;10928:5;10935:7;10918:9;:25::i;:::-;10891:52;;-1:-1:-1;;10957:16:1;:37;10953:243;;11038:6;11018:16;:26;;11010:68;;;;-1:-1:-1;;;11010:68:1;;13286:2:12;11010:68:1;;;13268:21:12;13325:2;13305:18;;;13298:30;13364:31;13344:18;;;13337:59;13413:18;;11010:68:1;13084:353:12;11010:68:1;11120:51;11129:5;11136:7;11164:6;11145:16;:25;11120:8;:51::i;:::-;10881:321;10761:441;;;:::o;12603:2288:10:-;12750:14;;-1:-1:-1;;;12750:14:10;;;;:60;;;;;12795:15;12768:23;;:42;;12750:60;12748:63;:105;;;;-1:-1:-1;;;;;;12828:25:10;;;;;;:17;:25;;;;;;;;12827:26;12748:105;:150;;;;-1:-1:-1;;;;;;12870:28:10;;;;;;:17;:28;;;;;;;;12869:29;12748:150;12731:229;;;12930:19;;-1:-1:-1;;;12930:19:10;;;;;;;;;;;12731:229;-1:-1:-1;;;;;12974:13:10;;;;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;12991:16:10;;;;;;:5;:16;;;;;;;;12974:33;12970:65;;;13016:19;;-1:-1:-1;;;13016:19:10;;;;;;;;;;;12970:65;13063:16;;;;;;;:67;;;;;13096:34;13120:9;13096:23;:34::i;:::-;13095:35;13063:67;:130;;;;;13178:15;;13169:6;13146:20;13156:9;-1:-1:-1;;;;;3508:18:1;3482:7;3508:18;;;;;;;;;;;;3408:125;13146:20:10;:29;;;;:::i;:::-;:47;13063:130;13046:183;;;13211:18;;-1:-1:-1;;;13211:18:10;;;;;;;;;;;13046:183;13256:14;;13240:12;;-1:-1:-1;;;13256:14:10;;;;13255:15;:72;;;;;13286:41;13309:6;13317:9;13286:22;:41::i;:::-;13240:87;;13337:10;13350:18;13361:6;13350:10;:18::i;:::-;13337:31;;13378:11;13392:21;13403:9;13392:10;:21::i;:::-;-1:-1:-1;;;;;13446:19:10;;13423;13446;;;:11;:19;;;;;;13378:35;;-1:-1:-1;13423:19:10;13446;;;:94;;-1:-1:-1;13511:20:10;;13481:51;;;;:29;:51;;;;;;;;-1:-1:-1;;;;;13481:59:10;;;;;;;;;;;;13446:94;13445:218;;;;-1:-1:-1;;;;;;13558:22:10;;;;;;:11;:22;;;;;;;;;:104;;-1:-1:-1;13630:20:10;;13600:51;;;;:29;:51;;;;;;;;-1:-1:-1;;;;;13600:62:10;;;;;;;;;;;;13558:104;13423:240;;13683:7;:54;;;;-1:-1:-1;13695:22:10;;;;;;;;:41;;;13722:14;13721:15;13695:41;13797:4;13748:28;3508:18:1;;;;;;;;;;;13856:16:10;;13673:64;;-1:-1:-1;3508:18:1;13832:40:10;;;;-1:-1:-1;;;;;13903:18:10;;;:23;:65;;;;-1:-1:-1;;;;;;13942:21:10;;;:26;13903:65;13882:86;;13996:11;:46;;;;-1:-1:-1;14023:19:10;;-1:-1:-1;;;14023:19:10;;;;13996:46;:77;;;;-1:-1:-1;14059:14:10;;-1:-1:-1;;;14059:14:10;;;;14058:15;13996:77;:121;;;;-1:-1:-1;14090:27:10;;;;14089:28;13996:121;:152;;;;;14134:14;14133:15;13996:152;:193;;;;;14165:6;:23;;;;14175:13;14165:23;13996:235;;;;-1:-1:-1;;;;;;14206:25:10;;;;;;:17;:25;;;;;;;;14205:26;13996:235;:280;;;;-1:-1:-1;;;;;;14248:28:10;;;;;;:17;:28;;;;;;;;14247:29;13996:280;13979:415;;;14301:14;:21;;-1:-1:-1;;;;14301:21:10;-1:-1:-1;;;14301:21:10;;;14336:11;:9;:11::i;:::-;14361:14;:22;;-1:-1:-1;;;;14361:22:10;;;13979:415;14404:22;14440:7;14436:379;;;14467:6;14463:342;;;14510:36;14523:6;14531;14539;14510:12;:36::i;:::-;14493:53;;14582:34;14601:6;14609;14582:18;:34::i;:::-;14564:52;;;;:::i;:::-;;;14463:342;;;14641:5;14637:168;;;14683:38;14695:6;14703:9;14714:6;14683:11;:38::i;:::-;14666:55;;14757:33;14775:6;14783;14757:17;:33::i;:::-;14739:51;;;;:::i;:::-;;;14637:168;14825:59;14841:6;14849:9;14860:23;14869:14;14860:6;:23;:::i;:::-;14825:15;:59::i;:::-;12721:2170;;;;;;;;12603:2288;;;:::o;2433:187:0:-;2525:6;;;-1:-1:-1;;;;;2541:17:0;;;-1:-1:-1;;;;;;2541:17:0;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;7052:346:10:-;-1:-1:-1;;;;;7177:25:10;;7153:4;7177:25;;;:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;7206:28:10;;;;;;:17;:28;;;;;;;;7177:57;7173:100;;;-1:-1:-1;7257:5:10;7250:12;;7173:100;7303:27;;;;7302:28;:89;;;;;7347:18;7358:6;7347:10;:18::i;:::-;:43;;;;7369:21;7380:9;7369:10;:21::i;14977:613::-;15066:4;15017:28;3508:18:1;;;;;;;;;;;15017:55:10;;15082:20;15128:17;;15105:20;:40;:107;;15192:20;15105:107;;;15160:17;;15105:107;15247:16;;;15261:1;15247:16;;;;;;;;15082:130;;-1:-1:-1;15223:21:10;;15247:16;;;;;;;;;;;;-1:-1:-1;15247:16:10;15223:40;;15291:4;15273;15278:1;15273:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15273:23:10;;;:7;;;;;;;;;:23;15316:13;;15306:7;;15316:13;;;15306:4;;15316:13;;15306:7;;;;;;:::i;:::-;-1:-1:-1;;;;;15306:23:10;;;:7;;;;;;;;;:23;15372:14;;15340:62;;15357:4;;15372:14;15389:12;15340:8;:62::i;:::-;15412:14;;15524:20;;15412:171;;-1:-1:-1;;;15412:171:10;;-1:-1:-1;;;;;15412:14:10;;;;:39;;:171;;15465:12;;15412:14;;15506:4;;15524:20;;;15558:15;;15412:171;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15412:171:10;;;;;;;;;;;;:::i;10174:1248::-;10290:7;10313:12;;10329:1;10313:17;10309:31;;-1:-1:-1;10339:1:10;10332:8;;10309:31;10351:22;698:3;10386:12;;10377:6;:21;;;;:::i;:::-;10376:41;;;;:::i;:::-;10351:66;;10427:25;10455:40;10474:4;10480:14;10455:18;:40::i;:::-;10427:68;-1:-1:-1;10506:35:10;10427:68;10506:35;;:::i;:::-;;;10555:14;10573:1;10555:19;10551:33;;10583:1;10576:8;;;;;;10551:33;10595:21;10652:12;;10637:11;;10620:14;:28;;;;:::i;:::-;10619:45;;;;:::i;:::-;10595:69;;10674:22;10733:12;;10717;;10700:14;:29;;;;:::i;:::-;10699:46;;;;:::i;:::-;10674:71;;10755:24;10830:12;;10800:14;;10783;:31;;;;:::i;:::-;10782:60;;;;:::i;:::-;10755:87;-1:-1:-1;10852:25:10;10755:87;10937:14;10880:42;10909:13;10880:14;:42;:::i;:::-;:71;;;;:::i;:::-;:102;;;;:::i;:::-;10852:130;-1:-1:-1;10997:17:10;;10993:67;;11016:44;11032:6;608:42;11046:13;11016:15;:44::i;:::-;11075:18;;11071:94;;11131:17;;11107:58;;11123:6;;-1:-1:-1;;;;;11131:17:10;11150:14;11107:15;:58::i;:::-;11180:20;;11176:100;;11238:19;;11214:62;;11230:6;;-1:-1:-1;;;;;11238:19:10;11259:16;11214:15;:62::i;:::-;11291:21;;11287:96;;11326:57;11342:6;11358:4;11365:17;11326:15;:57::i;:::-;-1:-1:-1;11401:14:10;;10174:1248;-1:-1:-1;;;;;;;;10174:1248:10:o;12014:583::-;12108:7;12131:22;698:3;12166:15;:13;:15::i;:::-;12157:24;;:6;:24;:::i;:::-;12156:44;;;;:::i;:::-;12131:69;;12210:21;698:3;12252:22;;12235:14;:39;;;;:::i;:::-;12234:71;;;;:::i;:::-;12210:95;-1:-1:-1;12315:25:10;12343:30;12210:95;12343:14;:30;:::i;:::-;12315:58;-1:-1:-1;12388:17:10;;12384:67;;12407:44;12423:6;608:42;12437:13;12407:15;:44::i;:::-;12466:21;;12462:96;;12501:57;12517:6;12533:4;12540:17;12501:15;:57::i;:::-;-1:-1:-1;12576:14:10;;12014:583;-1:-1:-1;;;;12014:583:10:o;8930:1238::-;9045:7;9068:11;;9083:1;9068:16;9064:30;;-1:-1:-1;9093:1:10;9086:8;;9064:30;9105:22;698:3;9140:11;;9131:6;:20;;;;:::i;:::-;9130:40;;;;:::i;:::-;9105:65;;9180:25;9208:39;9226:4;9232:14;9208:17;:39::i;:::-;9180:67;-1:-1:-1;9258:35:10;9180:67;9258:35;;:::i;:::-;;;9307:14;9325:1;9307:19;9303:33;;9335:1;9328:8;;;;;;9303:33;9347:21;9403:11;;9389:10;;9372:14;:27;;;;:::i;:::-;9371:43;;;;:::i;:::-;9347:67;;9424:22;9482:11;;9467;;9450:14;:28;;;;:::i;:::-;9449:44;;;;:::i;:::-;9424:69;;9503:24;9577:11;;9548:13;;9531:14;:30;;;;:::i;11428:580::-;11521:7;11544:22;698:3;11579:14;:12;:14::i;:::-;11570:23;;:6;:23;:::i;:::-;11569:43;;;;:::i;:::-;11544:68;;11622:21;698:3;11664:21;;11647:14;:38;;;;:::i;7475:651:1:-;-1:-1:-1;;;;;7601:18:1;;7593:68;;;;-1:-1:-1;;;7593:68:1;;15515:2:12;7593:68:1;;;15497:21:12;15554:2;15534:18;;;15527:30;15593:34;15573:18;;;15566:62;-1:-1:-1;;;15644:18:12;;;15637:35;15689:19;;7593:68:1;15313:401:12;7593:68:1;-1:-1:-1;;;;;7679:16:1;;7671:64;;;;-1:-1:-1;;;7671:64:1;;15921:2:12;7671:64:1;;;15903:21:12;15960:2;15940:18;;;15933:30;15999:34;15979:18;;;15972:62;-1:-1:-1;;;16050:18:12;;;16043:33;16093:19;;7671:64:1;15719:399:12;7671:64:1;-1:-1:-1;;;;;7817:15:1;;7795:19;7817:15;;;;;;;;;;;7850:21;;;;7842:72;;;;-1:-1:-1;;;7842:72:1;;16325:2:12;7842:72:1;;;16307:21:12;16364:2;16344:18;;;16337:30;16403:34;16383:18;;;16376:62;-1:-1:-1;;;16454:18:12;;;16447:36;16500:19;;7842:72:1;16123:402:12;7842:72:1;-1:-1:-1;;;;;7948:15:1;;;:9;:15;;;;;;;;;;;7966:20;;;7948:38;;8006:13;;;;;;;;:23;;7980:6;;7948:9;8006:23;;7980:6;;8006:23;:::i;:::-;;;;;;;;8060:2;-1:-1:-1;;;;;8045:26:1;8054:4;-1:-1:-1;;;;;8045:26:1;;8064:6;8045:26;;;;368:25:12;;356:2;341:18;;222:177;8045:26:1;;;;;;;;8082:37;16379:209:10;404:250:12;489:1;499:113;513:6;510:1;507:13;499:113;;;589:11;;;583:18;570:11;;;563:39;535:2;528:10;499:113;;;-1:-1:-1;;646:1:12;628:16;;621:27;404:250::o;659:396::-;808:2;797:9;790:21;771:4;840:6;834:13;883:6;878:2;867:9;863:18;856:34;899:79;971:6;966:2;955:9;951:18;946:2;938:6;934:15;899:79;:::i;:::-;1039:2;1018:15;-1:-1:-1;;1014:29:12;999:45;;;;1046:2;995:54;;659:396;-1:-1:-1;;659:396:12:o;1060:131::-;-1:-1:-1;;;;;1135:31:12;;1125:42;;1115:70;;1181:1;1178;1171:12;1196:315;1264:6;1272;1325:2;1313:9;1304:7;1300:23;1296:32;1293:52;;;1341:1;1338;1331:12;1293:52;1380:9;1367:23;1399:31;1424:5;1399:31;:::i;:::-;1449:5;1501:2;1486:18;;;;1473:32;;-1:-1:-1;;;1196:315:12:o;1708:247::-;1767:6;1820:2;1808:9;1799:7;1795:23;1791:32;1788:52;;;1836:1;1833;1826:12;1788:52;1875:9;1862:23;1894:31;1919:5;1894:31;:::i;1960:118::-;2046:5;2039:13;2032:21;2025:5;2022:32;2012:60;;2068:1;2065;2058:12;2083:241;2139:6;2192:2;2180:9;2171:7;2167:23;2163:32;2160:52;;;2208:1;2205;2198:12;2160:52;2247:9;2234:23;2266:28;2288:5;2266:28;:::i;2329:385::-;2415:6;2423;2431;2439;2492:3;2480:9;2471:7;2467:23;2463:33;2460:53;;;2509:1;2506;2499:12;2460:53;-1:-1:-1;;2532:23:12;;;2602:2;2587:18;;2574:32;;-1:-1:-1;2653:2:12;2638:18;;2625:32;;2704:2;2689:18;2676:32;;-1:-1:-1;2329:385:12;-1:-1:-1;2329:385:12:o;2719:456::-;2796:6;2804;2812;2865:2;2853:9;2844:7;2840:23;2836:32;2833:52;;;2881:1;2878;2871:12;2833:52;2920:9;2907:23;2939:31;2964:5;2939:31;:::i;:::-;2989:5;-1:-1:-1;3046:2:12;3031:18;;3018:32;3059:33;3018:32;3059:33;:::i;:::-;2719:456;;3111:7;;-1:-1:-1;;;3165:2:12;3150:18;;;;3137:32;;2719:456::o;3604:180::-;3663:6;3716:2;3704:9;3695:7;3691:23;3687:32;3684:52;;;3732:1;3729;3722:12;3684:52;-1:-1:-1;3755:23:12;;3604:180;-1:-1:-1;3604:180:12:o;4123:382::-;4188:6;4196;4249:2;4237:9;4228:7;4224:23;4220:32;4217:52;;;4265:1;4262;4255:12;4217:52;4304:9;4291:23;4323:31;4348:5;4323:31;:::i;:::-;4373:5;-1:-1:-1;4430:2:12;4415:18;;4402:32;4443:30;4402:32;4443:30;:::i;:::-;4492:7;4482:17;;;4123:382;;;;;:::o;5012:388::-;5080:6;5088;5141:2;5129:9;5120:7;5116:23;5112:32;5109:52;;;5157:1;5154;5147:12;5109:52;5196:9;5183:23;5215:31;5240:5;5215:31;:::i;:::-;5265:5;-1:-1:-1;5322:2:12;5307:18;;5294:32;5335:33;5294:32;5335:33;:::i;5684:127::-;5745:10;5740:3;5736:20;5733:1;5726:31;5776:4;5773:1;5766:15;5800:4;5797:1;5790:15;5816:275;5887:2;5881:9;5952:2;5933:13;;-1:-1:-1;;5929:27:12;5917:40;;5987:18;5972:34;;6008:22;;;5969:62;5966:88;;;6034:18;;:::i;:::-;6070:2;6063:22;5816:275;;-1:-1:-1;5816:275:12:o;6096:183::-;6156:4;6189:18;6181:6;6178:30;6175:56;;;6211:18;;:::i;:::-;-1:-1:-1;6256:1:12;6252:14;6268:4;6248:25;;6096:183::o;6284:662::-;6338:5;6391:3;6384:4;6376:6;6372:17;6368:27;6358:55;;6409:1;6406;6399:12;6358:55;6445:6;6432:20;6471:4;6495:60;6511:43;6551:2;6511:43;:::i;:::-;6495:60;:::i;:::-;6589:15;;;6675:1;6671:10;;;;6659:23;;6655:32;;;6620:12;;;;6699:15;;;6696:35;;;6727:1;6724;6717:12;6696:35;6763:2;6755:6;6751:15;6775:142;6791:6;6786:3;6783:15;6775:142;;;6857:17;;6845:30;;6895:12;;;;6808;;6775:142;;;-1:-1:-1;6935:5:12;6284:662;-1:-1:-1;;;;;;6284:662:12:o;6951:1215::-;7069:6;7077;7130:2;7118:9;7109:7;7105:23;7101:32;7098:52;;;7146:1;7143;7136:12;7098:52;7186:9;7173:23;7215:18;7256:2;7248:6;7245:14;7242:34;;;7272:1;7269;7262:12;7242:34;7310:6;7299:9;7295:22;7285:32;;7355:7;7348:4;7344:2;7340:13;7336:27;7326:55;;7377:1;7374;7367:12;7326:55;7413:2;7400:16;7435:4;7459:60;7475:43;7515:2;7475:43;:::i;7459:60::-;7553:15;;;7635:1;7631:10;;;;7623:19;;7619:28;;;7584:12;;;;7659:19;;;7656:39;;;7691:1;7688;7681:12;7656:39;7715:11;;;;7735:217;7751:6;7746:3;7743:15;7735:217;;;7831:3;7818:17;7848:31;7873:5;7848:31;:::i;:::-;7892:18;;7768:12;;;;7930;;;;7735:217;;;7971:5;-1:-1:-1;;8014:18:12;;8001:32;;-1:-1:-1;;8045:16:12;;;8042:36;;;8074:1;8071;8064:12;8042:36;;8097:63;8152:7;8141:8;8130:9;8126:24;8097:63;:::i;:::-;8087:73;;;6951:1215;;;;;:::o;8171:380::-;8250:1;8246:12;;;;8293;;;8314:61;;8368:4;8360:6;8356:17;8346:27;;8314:61;8421:2;8413:6;8410:14;8390:18;8387:38;8384:161;;8467:10;8462:3;8458:20;8455:1;8448:31;8502:4;8499:1;8492:15;8530:4;8527:1;8520:15;8384:161;;8171:380;;;:::o;8556:127::-;8617:10;8612:3;8608:20;8605:1;8598:31;8648:4;8645:1;8638:15;8672:4;8669:1;8662:15;8688:125;8753:9;;;8774:10;;;8771:36;;;8787:18;;:::i;8818:135::-;8857:3;8878:17;;;8875:43;;8898:18;;:::i;:::-;-1:-1:-1;8945:1:12;8934:13;;8818:135::o;9237:184::-;9307:6;9360:2;9348:9;9339:7;9335:23;9331:32;9328:52;;;9376:1;9373;9366:12;9328:52;-1:-1:-1;9399:16:12;;9237:184;-1:-1:-1;9237:184:12:o;10042:287::-;10171:3;10209:6;10203:13;10225:66;10284:6;10279:3;10272:4;10264:6;10260:17;10225:66;:::i;:::-;10307:16;;;;;10042:287;-1:-1:-1;;10042:287:12:o;10334:259::-;10412:6;10465:2;10453:9;10444:7;10440:23;10436:32;10433:52;;;10481:1;10478;10471:12;10433:52;10513:9;10507:16;10532:31;10557:5;10532:31;:::i;10598:245::-;10665:6;10718:2;10706:9;10697:7;10693:23;10689:32;10686:52;;;10734:1;10731;10724:12;10686:52;10766:9;10760:16;10785:28;10807:5;10785:28;:::i;10848:128::-;10915:9;;;10936:11;;;10933:37;;;10950:18;;:::i;10981:168::-;11054:9;;;11085;;11102:15;;;11096:22;;11082:37;11072:71;;11123:18;;:::i;11154:217::-;11194:1;11220;11210:132;;11264:10;11259:3;11255:20;11252:1;11245:31;11299:4;11296:1;11289:15;11327:4;11324:1;11317:15;11210:132;-1:-1:-1;11356:9:12;;11154:217::o;11376:127::-;11437:10;11432:3;11428:20;11425:1;11418:31;11468:4;11465:1;11458:15;11492:4;11489:1;11482:15;13442:980;13704:4;13752:3;13741:9;13737:19;13783:6;13772:9;13765:25;13809:2;13847:6;13842:2;13831:9;13827:18;13820:34;13890:3;13885:2;13874:9;13870:18;13863:31;13914:6;13949;13943:13;13980:6;13972;13965:22;14018:3;14007:9;14003:19;13996:26;;14057:2;14049:6;14045:15;14031:29;;14078:1;14088:195;14102:6;14099:1;14096:13;14088:195;;;14167:13;;-1:-1:-1;;;;;14163:39:12;14151:52;;14258:15;;;;14223:12;;;;14199:1;14117:9;14088:195;;;-1:-1:-1;;;;;;;14339:32:12;;;;14334:2;14319:18;;14312:60;-1:-1:-1;;;14403:3:12;14388:19;14381:35;14300:3;13442:980;-1:-1:-1;;;13442:980:12:o;14427:881::-;14522:6;14553:2;14596;14584:9;14575:7;14571:23;14567:32;14564:52;;;14612:1;14609;14602:12;14564:52;14645:9;14639:16;14678:18;14670:6;14667:30;14664:50;;;14710:1;14707;14700:12;14664:50;14733:22;;14786:4;14778:13;;14774:27;-1:-1:-1;14764:55:12;;14815:1;14812;14805:12;14764:55;14844:2;14838:9;14867:60;14883:43;14923:2;14883:43;:::i;14867:60::-;14961:15;;;15043:1;15039:10;;;;15031:19;;15027:28;;;14992:12;;;;15067:19;;;15064:39;;;15099:1;15096;15089:12;15064:39;15123:11;;;;15143:135;15159:6;15154:3;15151:15;15143:135;;;15225:10;;15213:23;;15176:12;;;;15256;;;;15143:135;;;15297:5;14427:881;-1:-1:-1;;;;;;;14427:881:12:o
Swarm Source
ipfs://4ad32ec3cd598f1ff05d4cc51217f52f31b3d399ebece012839b12e0e4807c5e
[ 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.