ERC-20
Overview
Max Total Supply
97,623,029.37102451162100196 FELIX
Holders
188
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
MagicBag
Compiler Version
v0.8.9+commit.e5eed63a
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.9; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol"; import "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol"; import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol"; import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol"; contract MagicBag is Ownable, IERC20 { using SafeMath for uint256; string private _name; string private _symbol; uint8 private _decimals; uint256 private _totalSupply; uint256 public maxWalletLimit; uint256 public maxTxLimit; address payable public treasury; address private constant DEAD = 0x000000000000000000000000000000000000dEaD; uint256 public buyTax; uint256 public sellTax; bool public tradingActive; uint256 public totalBurned; uint256 public totalLpAdded; uint256 public totalReflected; uint256 public totalTreasury; bool public burnStatus; bool public autoLpStatus; bool public reflectionStatus; bool public treasuryStatus; uint256 public swapableRefection; uint256 public swapableTreasury; IUniswapV2Router02 public dexRouter; address public lpPair; uint256 public ethReflectionBasis; uint256 public reflectionCooldown; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => uint256) public lastReflectionBasis; mapping(address => uint256) public totalClaimedReflection; mapping(address => uint256) public lastReflectionCooldown; mapping(address => uint256) private _claimableReflection; mapping(address => bool) private _reflectionExcluded; mapping(address => bool) public lpPairs; mapping(address => bool) private _isExcludedFromTax; mapping(address => bool) private _bots; event functionType (uint Type, address indexed sender, uint256 amount); event reflectionClaimed (address indexed recipient, uint256 amount); event burned (address indexed sender, uint256 amount); event autoLpadded (address indexed sender, uint256 amount); event reflected (address indexed sender, uint256 amount); event addedTreasury (address indexed sender, uint256 amount); event buyTaxStatus (uint256 previousBuyTax, uint256 newBuyTax); event sellTaxStatus (uint256 previousSellTax, uint256 newSellTax); constructor(string memory name_, string memory symbol_, uint256 totalSupply_, address payable _treasury, uint256 _reflectionCooldown, uint256 maxTxLimit_, uint256 maxWalletLimit_) { _name = name_; _symbol = symbol_; _decimals = 18; _totalSupply = totalSupply_.mul(10 ** _decimals); _balances[owner()] = _balances[owner()].add(_totalSupply); treasury = payable(_treasury); sellTax = 40; buyTax = 10; maxTxLimit = maxTxLimit_; maxWalletLimit = maxWalletLimit_; reflectionCooldown = _reflectionCooldown; // BSC Router: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1 // ETH Router: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D dexRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(address(this), dexRouter.WETH()); lpPairs[lpPair] = true; _approve(owner(), address(dexRouter), type(uint256).max); _approve(address(this), address(dexRouter), type(uint256).max); _isExcludedFromTax[owner()] = true; _isExcludedFromTax[address(this)] = true; _isExcludedFromTax[lpPair] = true; _isExcludedFromTax[treasury] = true; emit Transfer(address(0), owner(), _totalSupply); emit Approval(owner(), address(dexRouter), type(uint256).max); emit Approval(address(this), address(dexRouter), type(uint256).max); } receive() external payable {} /// @notice ERC20 functionalities function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public override view returns (uint256) { return _balances[account]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address sender, address spender, uint256 amount) internal { require(sender != address(0), "ERC20: Zero Address"); require(spender != address(0), "ERC20: Zero Address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } function allowance(address sender, address spender) public override view returns (uint256) { return _allowances[sender][spender]; } function transfer(address recipient, uint256 amount) public override returns (bool) { address _sender = _msgSender(); require(_sender != address(0), "ERC20: Zero Address"); require(recipient != address(0), "ERC20: Zero Address"); require(recipient != DEAD, "ERC20: Dead Address"); require(_balances[_sender] >= amount, "ERC20: Amount exceeds account balance"); _transfer(_sender, recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { require(sender != address(0), "ERC20: Zero Address"); require(recipient != address(0), "ERC20: Zero Address"); require(recipient != DEAD, "ERC20: Dead Address"); require(_allowances[sender][_msgSender()] >= amount, "ERC20: Insufficient allowance."); require(_balances[sender] >= amount, "ERC20: Amount exceeds sender's account balance"); if (_allowances[sender][_msgSender()] != type(uint256).max) { _allowances[sender][_msgSender()] = _allowances[sender][_msgSender()].sub(amount); } _transfer(sender, recipient, amount); return true; } function _transfer(address sender, address recipient, uint256 amount) internal { require(_bots[sender] == false && _bots[recipient] == false, "ERC20: Bots can't trade"); if (sender == owner() && lpPairs[recipient]) { _transferBothExcluded(sender, recipient, amount); } else if (lpPairs[sender] || lpPairs[recipient]){ require(tradingActive == true, "ERC20: Trading is not active."); if (_isExcludedFromTax[sender] && !_isExcludedFromTax[recipient]){ if (_checkMaxWalletLimit(recipient, amount) && _checkMaxTxLimit(amount)) { _transferFromExcluded(sender, recipient, amount);//buy } } else if (!_isExcludedFromTax[sender] && _isExcludedFromTax[recipient]){ if (_checkMaxTxLimit(amount)) { _transferToExcluded(sender, recipient, amount);//sell } } else if (_isExcludedFromTax[sender] && _isExcludedFromTax[recipient]) { if (sender == owner() || recipient == owner() || sender == address(this) || recipient == address(this)) { _transferBothExcluded(sender, recipient, amount); } else if (lpPairs[recipient]) { if (_checkMaxTxLimit(amount)) { _transferBothExcluded(sender, recipient, amount); } } else if (_checkMaxWalletLimit(recipient, amount) && _checkMaxTxLimit(amount)){ _transferBothExcluded(sender, recipient, amount); } } } else { if (sender == owner() || recipient == owner() || sender == address(this) || recipient == address(this)) { _transferBothExcluded(sender, recipient, amount); } else if(_checkMaxWalletLimit(recipient, amount) && _checkMaxTxLimit(amount)){ _transferBothExcluded(sender, recipient, amount); } } } function _transferFromExcluded(address sender, address recipient, uint256 amount) private { //Buy uint256 _randomNumber = _generateRandomNumber(); uint256 taxAmount = amount.mul(buyTax).div(100); uint256 receiveAmount = amount.sub(taxAmount); _claimableReflection[recipient] = _claimableReflection[recipient].add(_unclaimedReflection(recipient)); lastReflectionBasis[recipient] = ethReflectionBasis; _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(receiveAmount); _balances[address(this)] = _balances[address(this)].add(taxAmount); if (_randomNumber == 1) { _balances[address(this)] = _balances[address(this)].sub(taxAmount); _burn(recipient, taxAmount); } else if (_randomNumber == 2) { _balances[address(this)] = _balances[address(this)].sub(taxAmount); _autoLp(recipient, taxAmount); } else if (_randomNumber == 3) { swapableRefection = swapableRefection.add(taxAmount); totalReflected = totalReflected.add(taxAmount); emit reflected(recipient, taxAmount); } else if(_randomNumber == 4) { swapableTreasury = swapableTreasury.add(taxAmount); totalTreasury = totalTreasury.add(taxAmount); emit addedTreasury(recipient, taxAmount); } emit functionType(_randomNumber, sender, taxAmount); emit Transfer(sender, recipient, amount); } function _transferToExcluded(address sender, address recipient, uint256 amount) private { //Sell uint256 _randomNumber = _generateRandomNumber(); uint256 taxAmount = amount.mul(sellTax).div(100); uint256 sentAmount = amount.sub(taxAmount); _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(sentAmount); _balances[address(this)] = _balances[address(this)].add(taxAmount); if(_balances[sender] == 0) { _claimableReflection[recipient] = 0; } if (_randomNumber == 1) { _balances[address(this)] = _balances[address(this)].sub(taxAmount); _burn(sender, taxAmount); } else if (_randomNumber == 2) { _balances[address(this)] = _balances[address(this)].sub(taxAmount); _autoLp(sender, taxAmount); } else if (_randomNumber == 3) { swapableRefection = swapableRefection.add(taxAmount); totalReflected = totalReflected.add(taxAmount); emit reflected(sender, taxAmount); } else if(_randomNumber == 4) { swapableTreasury = swapableTreasury.add(taxAmount); totalTreasury = totalTreasury.add(taxAmount); emit addedTreasury(sender, taxAmount); } emit functionType(_randomNumber, sender, taxAmount); emit Transfer(sender, recipient, amount); } function _transferBothExcluded(address sender, address recipient, uint256 amount) private { if(recipient == owner() || recipient == address(this)){ _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(amount); } else { _claimableReflection[recipient] = _claimableReflection[recipient].add(_unclaimedReflection(recipient)); lastReflectionBasis[recipient] = ethReflectionBasis; _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(amount); } emit Transfer(sender, recipient, amount); } /// @notice Burn Functionalities function burn(uint256 amount) public returns (bool) { address sender = _msgSender(); require(_balances[sender] >= amount, "ERC20: Burn Amount exceeds account balance"); require(amount > 0, "ERC20: Enter some amount to burn"); _balances[sender] = _balances[sender].sub(amount); _burn(sender, amount); return true; } function _burn(address from, uint256 amount) internal { _totalSupply = _totalSupply.sub(amount); totalBurned = totalBurned.add(amount); emit Transfer(from, address(0), amount); emit burned(from, amount); } /// @notice AutoLp Functionalities function _autoLp(address from, uint256 amount) private { if (amount > 0) { _balances[lpPair] = _balances[lpPair].add(amount); totalLpAdded = totalLpAdded.add(amount); emit Transfer(from, lpPair, amount); emit autoLpadded(from, amount); } } /// @notice Reflection Functionalities function addReflection() public payable returns (bool) { ethReflectionBasis = ethReflectionBasis.add(msg.value); return true; } function excludeFromReflection(address account) public onlyOwner returns (bool) { require(!_reflectionExcluded[account], "ERC20: Account is already excluded from reflection"); _reflectionExcluded[account] = true; return true; } function includeInReflection(address account) public onlyOwner returns (bool) { require(_reflectionExcluded[account], "ERC20: Account is not excluded from reflection"); _reflectionExcluded[account] = false; return true; } function isReflectionExcluded(address account) public view returns (bool) { return _reflectionExcluded[account]; } function setReflectionCooldown(uint256 unixTime) public onlyOwner returns (bool) { require(reflectionCooldown != unixTime, "ERC20: New Timestamp can't be the previous one"); reflectionCooldown = unixTime; return true; } function unclaimedReflection(address account) public view returns (uint256) { if (account == lpPair || account == address(dexRouter)) return 0; uint256 basisDifference = ethReflectionBasis - lastReflectionBasis[account]; return ((basisDifference * balanceOf(account)) / _totalSupply) + (_claimableReflection[account]); } function _unclaimedReflection(address account) private view returns(uint256) { if (account == lpPair || account == address(dexRouter)) return 0; uint256 basisDifference = ethReflectionBasis - lastReflectionBasis[account]; return (basisDifference * balanceOf(account)) / _totalSupply; } function claimReflection() external returns (bool) { address sender = _msgSender(); require(!_isContract(sender), "ERC20: Sender can't be a contract"); require(lastReflectionCooldown[sender] + reflectionCooldown <= block.timestamp, "ERC20: Reflection cool down is implemented, try again later"); _claimReflection(payable(sender)); return true; } function _claimReflection(address payable account) private { uint256 unclaimed = unclaimedReflection(account); require(unclaimed > 0, "ERC20: Claim amount should be more then 0"); require(isReflectionExcluded(account) == false, "ERC20: Address is excluded to claim reflection"); lastReflectionBasis[account] = ethReflectionBasis; lastReflectionCooldown[account] = block.timestamp; _claimableReflection[account] = 0; account.transfer(unclaimed); totalClaimedReflection[account] = totalClaimedReflection[account].add(unclaimed); emit reflectionClaimed(account, unclaimed); } /// @notice Magic Bag Functionalities function enableTrading() public onlyOwner returns (bool) { require(tradingActive == false, "ERC20: Trading is already active"); tradingActive = true; return true; } function disableTrading() public onlyOwner returns (bool) { require(tradingActive == true, "ERC20: Trading is already un-active"); tradingActive = false; return true; } function setBuyTax(uint256 _buyTax) public onlyOwner returns (bool) { require(_buyTax <= 15, "ERC20: The buy tax can't be more then 15 percentage"); uint256 _prevBuyTax = buyTax; buyTax = _buyTax; emit buyTaxStatus(_prevBuyTax, buyTax); return true; } function setSellTax(uint256 _sellTax) public onlyOwner returns (bool) { require(_sellTax <= 15, "ERC20: The sell tax can't be more then 15 percentage"); uint256 _prevSellTax = sellTax; sellTax = _sellTax; emit sellTaxStatus(_prevSellTax, sellTax); return true; } function removeAllTax() public onlyOwner returns (bool) { require(buyTax > 0 && sellTax > 0, "ERC20: Taxes are already removed"); uint256 _prevBuyTax = buyTax; uint256 _prevSellTax = sellTax; buyTax = 0; sellTax = 0; emit buyTaxStatus(_prevBuyTax, buyTax); emit sellTaxStatus(_prevSellTax, sellTax); return true; } function reduceTaxes() public onlyOwner returns (bool) { uint256 _prevBuyTax = buyTax; uint256 _prevSellTax = sellTax; buyTax = 5; sellTax = 5; emit buyTaxStatus(_prevBuyTax, buyTax); emit sellTaxStatus(_prevSellTax, sellTax); return true; } function excludeFromTax(address account) public onlyOwner returns (bool) { require(!_isExcludedFromTax[account], "ERC20: Account is already excluded from tax"); _isExcludedFromTax[account] = true; return true; } function includeInTax(address account) public onlyOwner returns (bool) { require(_isExcludedFromTax[account], "ERC20: Account is already included from tax"); _isExcludedFromTax[account] = false; return true; } function isExcludedFromTax(address account) public view returns (bool) { return _isExcludedFromTax[account]; } function setTreasuryAddress(address payable account) public onlyOwner returns (bool) { require(treasury != account, "ERC20: Account is already treasury address"); treasury = account; return true; } function setMaxWalletLimit(uint256 amount) public onlyOwner returns (bool) { maxWalletLimit = amount; return true; } function setMaxTxLimit(uint256 amount) public onlyOwner returns (bool) { maxTxLimit = amount; return true; } function addBot(address botAccount) public onlyOwner returns (bool) { _bots[botAccount] = true; return true; } function addBotsInBulk(address[] memory botsAccounts) public onlyOwner returns (bool) { for(uint i = 0; i < botsAccounts.length; i++) { _bots[botsAccounts[i]] = true; } return true; } function removeBot(address botAccount) public onlyOwner returns (bool) { _bots[botAccount] = false; return true; } function isBot(address botAccount) public view returns (bool) { return _bots[botAccount]; } function setLpPair(address LpAddress, bool status) public onlyOwner returns (bool) { lpPairs[LpAddress] = status; _isExcludedFromTax[LpAddress] = status; return true; } function swapReflection(uint256 amount) public onlyOwner returns (bool) { require(swapableRefection > 0, "ERC20: There are no tokens to swap"); require(swapableRefection >= amount, "ERC20: Low swapable reflection"); uint256 currentBalance = address(this).balance; _swap(address(this), amount); swapableRefection = swapableRefection - amount; uint256 ethTransfer = (address(this).balance).sub(currentBalance); ethReflectionBasis = ethReflectionBasis.add(ethTransfer); return true; } function swapTreasury(uint256 amount) public returns (bool) { // add only owner require(swapableTreasury > 0, "ERC20: There are no tokens to swap"); require(swapableTreasury >= amount, "ERC20: Low swapable reflection"); _swap(treasury, amount); swapableTreasury = swapableTreasury - amount; return true; } function recoverAllEth(address to) public onlyOwner returns (bool) { payable(to).transfer(address(this).balance); return true; } function recoverAllERC20Tokens(address to, address tokenAddress, uint256 amount) public onlyOwner returns (bool) { IERC20(tokenAddress).transfer(to, amount); return true; } /// @notice Magical Functionalities function pauseBurn() public onlyOwner returns (bool) { require(burnStatus == false, "ERC20: Token Burn is already paused"); if(autoLpStatus == true && reflectionStatus == true && treasuryStatus == true) { revert("ERC20: All four functionalities can't get paused at the same time"); } else { burnStatus = true; } return true; } function pauseAutoLp() public onlyOwner returns (bool) { require(autoLpStatus == false, "ERC20: Auto LP is already paused"); if(burnStatus == true && reflectionStatus == true && treasuryStatus == true) { revert("ERC20: All four functionalities can't get paused at the same time"); } else { autoLpStatus = true; } return true; } function pauseReflection() public onlyOwner returns (bool) { require(reflectionStatus == false, "ERC20: Reflection is already paused"); if(burnStatus == true && autoLpStatus == true && treasuryStatus == true) { revert("ERC20: All four functionalities can't get paused at the same time"); } else { reflectionStatus = true; } return true; } function pauseTreasury() public onlyOwner returns (bool) { require(treasuryStatus == false, "ERC20: Treasury is already paused"); if(burnStatus == true && autoLpStatus == true && reflectionStatus == true) { revert("ERC20: All four functionalities can't get paused at the same time"); } else { treasuryStatus = true; } return true; } function unpauseBurn() public onlyOwner returns (bool) { require(burnStatus == true, "ERC20: Token Burn is already not paused"); burnStatus = false; return true; } function unpauseAutoLp() public onlyOwner returns (bool) { require(autoLpStatus == true, "ERC20: Auto LP is already not paused"); autoLpStatus = false; return true; } function unpauseReflection() public onlyOwner returns (bool) { require(reflectionStatus == true, "ERC20: Reflection is already not paused"); reflectionStatus = false; return true; } function unpauseTreasury() public onlyOwner returns (bool) { require(treasuryStatus == true, "ERC20: Treasury is already paused"); treasuryStatus = false; return true; } /// @notice Private Functionalities function _generateRandomNumber() private view returns (uint256) { uint256 returnNumber; uint256 rem1 = uint256(keccak256(abi.encodePacked(block.timestamp, block.difficulty, block.gaslimit, tx.origin, block.number, tx.gasprice))) % 2; uint256 rem2 = uint256(keccak256(abi.encodePacked(block.timestamp, block.difficulty, block.gaslimit, tx.origin, block.number, tx.gasprice))) % 3; if(burnStatus == true && autoLpStatus == true && reflectionStatus == true) { returnNumber = 4; } else if(burnStatus == true && autoLpStatus == true && treasuryStatus == true) { returnNumber = 3; } else if(burnStatus == true && reflectionStatus == true && treasuryStatus == true) { returnNumber = 2; } else if(autoLpStatus == true && reflectionStatus == true && treasuryStatus == true) { returnNumber = 1; } else if(burnStatus == true && autoLpStatus == true) { if (rem1 == 0) {returnNumber = 3;} else if (rem1 == 1) {returnNumber = 4;} } else if(burnStatus == true && reflectionStatus == true) { if (rem1 == 0) {returnNumber = 2;} else if (rem1 == 1) {returnNumber = 4;} } else if(burnStatus == true && treasuryStatus == true) { if (rem1 == 0) {returnNumber = 2;} else if (rem1 == 1) {returnNumber = 3;} } else if(autoLpStatus == true && reflectionStatus == true) { if (rem1 == 0) {returnNumber = 1;} else if (rem1 == 1) {returnNumber = 4;} } else if(autoLpStatus == true && treasuryStatus == true) { if (rem1 == 0) {returnNumber = 1;} else if (rem1 == 1) {returnNumber = 3;} } else if(reflectionStatus == true && treasuryStatus == true) { if (rem1 == 0) {returnNumber = 1;} else if (rem1 == 1) {returnNumber = 2;} } else if(burnStatus == true) { returnNumber = (uint256(keccak256(abi.encodePacked(block.timestamp, block.difficulty, block.gaslimit, tx.origin, block.number, tx.gasprice))) % 3) + 2; } else if(autoLpStatus == true) { if(rem2 == 0) {returnNumber = 1;} else if(rem2 == 1) {returnNumber = 3;} else if(rem2 == 2) {returnNumber = 4;} } else if(reflectionStatus == true) { if(rem2 == 0) {returnNumber = 1;} else if(rem2 == 1) {returnNumber = 2;} else if(rem2 == 2) {returnNumber = 4;} } else if(treasuryStatus == true) { returnNumber = (uint256(keccak256(abi.encodePacked(block.timestamp, block.difficulty, block.gaslimit, tx.origin, block.number, tx.gasprice))) % 3) + 1; } else { returnNumber = (uint256(keccak256(abi.encodePacked(block.timestamp, block.difficulty, block.gaslimit, tx.origin, block.number, tx.gasprice))) % 4) + 1; } return returnNumber; } function _checkMaxWalletLimit(address recipient, uint256 amount) private view returns (bool) { require(maxWalletLimit >= balanceOf(recipient).add(amount), "ERC20: Wallet limit exceeds"); return true; } function _checkMaxTxLimit(uint256 amount) private view returns (bool) { require(amount <= maxTxLimit, "ERC20: Transaction limit exceeds"); return true; } function _isContract(address _addr) private view returns (bool){ uint32 size; assembly { size := extcodesize(_addr) } return (size > 0); } function _swap(address recipient, uint256 amount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); dexRouter.swapExactTokensForETH( amount, 0, path, recipient, block.timestamp ); } }
pragma solidity >=0.6.2; import './IUniswapV2Router01.sol'; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); }
pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; }
pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.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. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling 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.9.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.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 (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; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"address payable","name":"_treasury","type":"address"},{"internalType":"uint256","name":"_reflectionCooldown","type":"uint256"},{"internalType":"uint256","name":"maxTxLimit_","type":"uint256"},{"internalType":"uint256","name":"maxWalletLimit_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addedTreasury","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"autoLpadded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"previousBuyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBuyTax","type":"uint256"}],"name":"buyTaxStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Type","type":"uint256"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"functionType","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"reflected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"reflectionClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"previousSellTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"sellTaxStatus","type":"event"},{"inputs":[{"internalType":"address","name":"botAccount","type":"address"}],"name":"addBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"botsAccounts","type":"address[]"}],"name":"addBotsInBulk","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","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":[],"name":"autoLpStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethReflectionBasis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"botAccount","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isReflectionExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastReflectionBasis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastReflectionCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lpPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"pauseAutoLp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseTreasury","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverAllERC20Tokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"recoverAllEth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reduceTaxes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reflectionCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAllTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"botAccount","type":"address"}],"name":"removeBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTax","type":"uint256"}],"name":"setBuyTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"LpAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setLpPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"unixTime","type":"uint256"}],"name":"setReflectionCooldown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellTax","type":"uint256"}],"name":"setSellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"setTreasuryAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapTreasury","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapableRefection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapableTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalClaimedReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLpAdded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReflected","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":"totalTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unclaimedReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpauseAutoLp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseTreasury","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162004c5538038062004c558339810160408190526200003491620007e7565b6200003f33620004f6565b8651620000549060019060208a01906200065b565b5085516200006a9060029060208901906200065b565b506003805460ff19166012908117909155620000a2906200008d90600a620009a1565b866200054660201b6200249f1790919060201c565b6004819055620000f89060166000620000c36000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020546200055d60201b620024ab1790919060201c565b601660006200010f6000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160002093909355600780549388166001600160a01b03199485161790556028600955600a60085560068590556005849055601586905560128054909316737a250d5630b4cf539739df2c5dacb4c659f2488d908117909355805163c45a015560e01b8152905163c45a015592600483810193919291829003018186803b158015620001b457600080fd5b505afa158015620001c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ef9190620009b2565b6001600160a01b031663c9c6539630601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024d57600080fd5b505afa15801562000262573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002889190620009b2565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002d157600080fd5b505af1158015620002e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030c9190620009b2565b601380546001600160a01b0319166001600160a01b039283169081179091556000908152601d60205260408120805460ff19166001179055546200036091166012546001600160a01b03166000196200056b565b6012546200037c9030906001600160a01b03166000196200056b565b6001601e6000620003956000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601e909352818320805485166001908117909155601354821684528284208054861682179055600754909116835291208054909216179055620004116000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516200045991815260200190565b60405180910390a36012546001600160a01b0316620004806000546001600160a01b031690565b6001600160a01b031660008051602062004c35833981519152600019604051620004ac91815260200190565b60405180910390a360125460405160001981526001600160a01b0390911690309060008051602062004c358339815191529060200160405180910390a35050505050505062000a53565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000620005548284620009d9565b90505b92915050565b6000620005548284620009fb565b6001600160a01b038316620005bd5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200060b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620005b4565b6001600160a01b03838116600081815260176020908152604080832094871680845294825291829020859055905184815260008051602062004c35833981519152910160405180910390a3505050565b828054620006699062000a16565b90600052602060002090601f0160209004810192826200068d5760008555620006d8565b82601f10620006a857805160ff1916838001178555620006d8565b82800160010185558215620006d8579182015b82811115620006d8578251825591602001919060010190620006bb565b50620006e6929150620006ea565b5090565b5b80821115620006e65760008155600101620006eb565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200072957600080fd5b81516001600160401b038082111562000746576200074662000701565b604051601f8301601f19908116603f0116810190828211818310171562000771576200077162000701565b816040528381526020925086838588010111156200078e57600080fd5b600091505b83821015620007b2578582018301518183018401529082019062000793565b83821115620007c45760008385830101525b9695505050505050565b6001600160a01b0381168114620007e457600080fd5b50565b600080600080600080600060e0888a0312156200080357600080fd5b87516001600160401b03808211156200081b57600080fd5b620008298b838c0162000717565b985060208a01519150808211156200084057600080fd5b506200084f8a828b0162000717565b9650506040880151945060608801516200086981620007ce565b809450506080880151925060a0880151915060c0880151905092959891949750929550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620008e5578160001904821115620008c957620008c96200088e565b80851615620008d757918102915b93841c9390800290620008a9565b509250929050565b600082620008fe5750600162000557565b816200090d5750600062000557565b8160018114620009265760028114620009315762000951565b600191505062000557565b60ff8411156200094557620009456200088e565b50506001821b62000557565b5060208310610133831016604e8410600b841016171562000976575081810a62000557565b620009828383620008a4565b80600019048211156200099957620009996200088e565b029392505050565b60006200055460ff841683620008ed565b600060208284031215620009c557600080fd5b8151620009d281620007ce565b9392505050565b6000816000190483118215151615620009f657620009f66200088e565b500290565b6000821982111562000a115762000a116200088e565b500190565b600181811c9082168062000a2b57607f821691505b6020821081141562000a4d57634e487b7160e01b600052602260045260246000fd5b50919050565b6141d28062000a636000396000f3fe60806040526004361061042a5760003560e01c80636605bfda1161022957806395d89b411161012e578063cc1776d3116100b6578063dd62ed3e1161007a578063dd62ed3e14610c40578063e17c4c7414610c86578063f2fde38b14610ca6578063f48fd0e014610cc6578063ffecf51614610ce757600080fd5b8063cc1776d314610bbf578063d448a07014610bd5578063d83646bb14610bea578063d89135cd14610c0a578063dc1052e214610c2057600080fd5b8063b4fe8f6a116100fd578063b4fe8f6a14610b22578063ba53b52214610b37578063bbc0c74214610b57578063c2cc176914610b71578063cb4ca63114610b8657600080fd5b806395d89b4114610ac2578063a5332f2d14610ad7578063a6559fe414610aed578063a9059cbb14610b0257600080fd5b806380c581d1116101b15780638ce311c7116101805780638ce311c714610a045780638da5cb5b14610a245780639045be5814610a4257806390e0d99214610a7b5780639579d51414610a9557600080fd5b806380c581d114610999578063897534a9146109b95780638a8c523c146109cf5780638cd09d50146109e457600080fd5b806370a08231116101f857806370a0823114610901578063715018a614610937578063728607ba1461094e578063728d41c9146109635780638036d5901461098357600080fd5b80636605bfda1461089557806366a88d96146108b5578063688d12ed146108cb5780636f1eaac4146108e157600080fd5b806342966c681161032f578063559c4cbb116102b75780635fecd926116102865780635fecd926146107ff57806360d1259e1461081f57806361d027b31461083f57806361db24461461085f57806364f5a5bb1461087557600080fd5b8063559c4cbb1461077d578063588d5189146107925780635cfad287146107bf5780635facf12e146107df57600080fd5b80634675533f116102fe5780634675533f146106f35780634cac88f4146107125780634cb36a9b1461073f5780634e6be5441461075f5780634f7041a51461076757600080fd5b806342966c681461066e57806343cc8c2a1461068e578063452ed4f1146106be578063460bb303146106de57600080fd5b806323b872dd116103b2578063375632931161038157806337563293146105d65780633a28c954146105eb5780633bbac579146106005780633e8c4873146106395780634295e8571461065957600080fd5b806323b872dd1461055e57806327334a081461057e578063313ce5671461059e5780633732e214146105c057600080fd5b806309b98866116103f957806309b98866146104e55780630f9d568114610509578063136a6be11461051e57806317700f011461053457806318160ddd1461054957600080fd5b806305f82a451461043657806306fdde031461046b5780630758d9241461048d578063095ea7b3146104c557600080fd5b3661043157005b600080fd5b34801561044257600080fd5b50610456610451366004613b74565b610d07565b60405190151581526020015b60405180910390f35b34801561047757600080fd5b50610480610dba565b6040516104629190613b91565b34801561049957600080fd5b506012546104ad906001600160a01b031681565b6040516001600160a01b039091168152602001610462565b3480156104d157600080fd5b506104566104e0366004613be6565b610e4c565b3480156104f157600080fd5b506104fb60155481565b604051908152602001610462565b34801561051557600080fd5b50610456610e62565b34801561052a57600080fd5b506104fb60115481565b34801561054057600080fd5b50610456610f09565b34801561055557600080fd5b506004546104fb565b34801561056a57600080fd5b50610456610579366004613c12565b610f86565b34801561058a57600080fd5b50610456610599366004613b74565b6111ab565b3480156105aa57600080fd5b5060035460405160ff9091168152602001610462565b3480156105cc57600080fd5b506104fb600d5481565b3480156105e257600080fd5b50610456611262565b3480156105f757600080fd5b50610456611370565b34801561060c57600080fd5b5061045661061b366004613b74565b6001600160a01b03166000908152601f602052604090205460ff1690565b34801561064557600080fd5b50610456610654366004613c53565b6113f9565b34801561066557600080fd5b506104566114bc565b34801561067a57600080fd5b50610456610689366004613c53565b61153d565b34801561069a57600080fd5b506104566106a9366004613b74565b601d6020526000908152604090205460ff1681565b3480156106ca57600080fd5b506013546104ad906001600160a01b031681565b3480156106ea57600080fd5b50610456611648565b3480156106ff57600080fd5b50600f5461045690610100900460ff1681565b34801561071e57600080fd5b506104fb61072d366004613b74565b601a6020526000908152604090205481565b34801561074b57600080fd5b5061045661075a366004613c53565b611693565b61045661170f565b34801561077357600080fd5b506104fb60085481565b34801561078957600080fd5b50610456611728565b34801561079e57600080fd5b506104fb6107ad366004613b74565b60196020526000908152604090205481565b3480156107cb57600080fd5b506104566107da366004613b74565b611809565b3480156107eb57600080fd5b506104fb6107fa366004613b74565b611848565b34801561080b57600080fd5b5061045661081a366004613b74565b6118f8565b34801561082b57600080fd5b5061045661083a366004613b74565b611927565b34801561084b57600080fd5b506007546104ad906001600160a01b031681565b34801561086b57600080fd5b506104fb60145481565b34801561088157600080fd5b50610456610890366004613c53565b6119d7565b3480156108a157600080fd5b506104566108b0366004613b74565b6119ea565b3480156108c157600080fd5b506104fb60055481565b3480156108d757600080fd5b506104fb600c5481565b3480156108ed57600080fd5b506104566108fc366004613cd7565b611a8a565b34801561090d57600080fd5b506104fb61091c366004613b74565b6001600160a01b031660009081526016602052604090205490565b34801561094357600080fd5b5061094c611afc565b005b34801561095a57600080fd5b50610456611b10565b34801561096f57600080fd5b5061045661097e366004613c53565b611bb1565b34801561098f57600080fd5b506104fb60065481565b3480156109a557600080fd5b506104566109b4366004613d84565b611bc4565b3480156109c557600080fd5b506104fb600e5481565b3480156109db57600080fd5b50610456611c13565b3480156109f057600080fd5b506104566109ff366004613c53565b611c84565b348015610a1057600080fd5b50610456610a1f366004613c12565b611d47565b348015610a3057600080fd5b506000546001600160a01b03166104ad565b348015610a4e57600080fd5b50610456610a5d366004613b74565b6001600160a01b03166000908152601c602052604090205460ff1690565b348015610a8757600080fd5b50600f546104569060ff1681565b348015610aa157600080fd5b506104fb610ab0366004613b74565b60186020526000908152604090205481565b348015610ace57600080fd5b50610480611dde565b348015610ae357600080fd5b506104fb60105481565b348015610af957600080fd5b50610456611ded565b348015610b0e57600080fd5b50610456610b1d366004613be6565b611eca565b348015610b2e57600080fd5b50610456611fe2565b348015610b4357600080fd5b50610456610b52366004613c53565b612099565b348015610b6357600080fd5b50600a546104569060ff1681565b348015610b7d57600080fd5b5061045661213d565b348015610b9257600080fd5b50610456610ba1366004613b74565b6001600160a01b03166000908152601e602052604090205460ff1690565b348015610bcb57600080fd5b506104fb60095481565b348015610be157600080fd5b506104566121c1565b348015610bf657600080fd5b50600f546104569062010000900460ff1681565b348015610c1657600080fd5b506104fb600b5481565b348015610c2c57600080fd5b50610456610c3b366004613c53565b612293565b348015610c4c57600080fd5b506104fb610c5b366004613dbd565b6001600160a01b03918216600090815260176020908152604080832093909416825291909152205490565b348015610c9257600080fd5b50610456610ca1366004613b74565b612348565b348015610cb257600080fd5b5061094c610cc1366004613b74565b6123f3565b348015610cd257600080fd5b50600f54610456906301000000900460ff1681565b348015610cf357600080fd5b50610456610d02366004613b74565b61246c565b6000610d116124b7565b6001600160a01b0382166000908152601c602052604090205460ff16610d955760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204163636f756e74206973206e6f74206578636c75646564206660448201526d3937b6903932b33632b1ba34b7b760911b60648201526084015b60405180910390fd5b506001600160a01b03166000908152601c60205260409020805460ff19169055600190565b606060018054610dc990613deb565b80601f0160208091040260200160405190810160405280929190818152602001828054610df590613deb565b8015610e425780601f10610e1757610100808354040283529160200191610e42565b820191906000526020600020905b815481529060010190602001808311610e2557829003601f168201915b5050505050905090565b6000610e59338484612511565b50600192915050565b6000610e6c6124b7565b600f546301000000900460ff1615610e965760405162461bcd60e51b8152600401610d8c90613e26565b600f5460ff1615156001148015610eba5750600f5460ff6101009091041615156001145b8015610ed35750600f5462010000900460ff1615156001145b15610ef05760405162461bcd60e51b8152600401610d8c90613e67565b600f805463ff0000001916630100000017905550600190565b6000610f136124b7565b600a5460ff161515600114610f765760405162461bcd60e51b815260206004820152602360248201527f45524332303a2054726164696e6720697320616c726561647920756e2d61637460448201526269766560e81b6064820152608401610d8c565b50600a805460ff19169055600190565b60006001600160a01b038416610fae5760405162461bcd60e51b8152600401610d8c90613ece565b6001600160a01b038316610fd45760405162461bcd60e51b8152600401610d8c90613ece565b6001600160a01b03831661dead14156110255760405162461bcd60e51b815260206004820152601360248201527245524332303a2044656164204164647265737360681b6044820152606401610d8c565b6001600160a01b03841660009081526017602090815260408083203384529091529020548211156110985760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20496e73756666696369656e7420616c6c6f77616e63652e00006044820152606401610d8c565b6001600160a01b0384166000908152601660205260409020548211156111175760405162461bcd60e51b815260206004820152602e60248201527f45524332303a20416d6f756e7420657863656564732073656e6465722773206160448201526d63636f756e742062616c616e636560901b6064820152608401610d8c565b6001600160a01b038416600090815260176020908152604080832033845290915290205460001914611196576001600160a01b038416600090815260176020908152604080832033845290915290205461117190836125bf565b6001600160a01b03851660009081526017602090815260408083203384529091529020555b6111a18484846125cb565b5060019392505050565b60006111b56124b7565b6001600160a01b0382166000908152601c602052604090205460ff16156112395760405162461bcd60e51b815260206004820152603260248201527f45524332303a204163636f756e7420697320616c7265616479206578636c756460448201527132b210333937b6903932b33632b1ba34b7b760711b6064820152608401610d8c565b506001600160a01b03166000908152601c60205260409020805460ff1916600190811790915590565b60003363ffffffff813b16156112c45760405162461bcd60e51b815260206004820152602160248201527f45524332303a2053656e6465722063616e2774206265206120636f6e747261636044820152601d60fa1b6064820152608401610d8c565b6015546001600160a01b0382166000908152601a602052604090205442916112eb91613f11565b111561135f5760405162461bcd60e51b815260206004820152603b60248201527f45524332303a205265666c656374696f6e20636f6f6c20646f776e206973206960448201527f6d706c656d656e7465642c2074727920616761696e206c6174657200000000006064820152608401610d8c565b61136881612964565b600191505090565b600061137a6124b7565b600f5462010000900460ff1615156001146113e75760405162461bcd60e51b815260206004820152602760248201527f45524332303a205265666c656374696f6e20697320616c7265616479206e6f74604482015266081c185d5cd95960ca1b6064820152608401610d8c565b50600f805462ff000019169055600190565b60006114036124b7565b6000601054116114255760405162461bcd60e51b8152600401610d8c90613f29565b8160105410156114775760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204c6f77207377617061626c65207265666c656374696f6e00006044820152606401610d8c565b476114823084612b32565b826010546114909190613f6b565b601055600061149f47836125bf565b6014549091506114af90826124ab565b6014555060019392505050565b60006114c66124b7565b600f5460ff16151560011461152d5760405162461bcd60e51b815260206004820152602760248201527f45524332303a20546f6b656e204275726e20697320616c7265616479206e6f74604482015266081c185d5cd95960ca1b6064820152608401610d8c565b50600f805460ff19169055600190565b336000818152601660205260408120549091908311156115b25760405162461bcd60e51b815260206004820152602a60248201527f45524332303a204275726e20416d6f756e742065786365656473206163636f756044820152696e742062616c616e636560b01b6064820152608401610d8c565b600083116116025760405162461bcd60e51b815260206004820181905260248201527f45524332303a20456e74657220736f6d6520616d6f756e7420746f206275726e6044820152606401610d8c565b6001600160a01b03811660009081526016602052604090205461162590846125bf565b6001600160a01b038216600090815260166020526040902055610e598184612ca8565b60006116526124b7565b600f546301000000900460ff1615156001146116805760405162461bcd60e51b8152600401610d8c90613e26565b50600f805463ff00000019169055600190565b600061169d6124b7565b8160155414156117065760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204e65772054696d657374616d702063616e277420626520746860448201526d652070726576696f7573206f6e6560901b6064820152608401610d8c565b50601555600190565b60145460009061171f90346124ab565b60145550600190565b60006117326124b7565b600f5462010000900460ff16156117975760405162461bcd60e51b815260206004820152602360248201527f45524332303a205265666c656374696f6e20697320616c7265616479207061756044820152621cd95960ea1b6064820152608401610d8c565b600f5460ff16151560011480156117bb5750600f5460ff6101009091041615156001145b80156117d55750600f546301000000900460ff1615156001145b156117f25760405162461bcd60e51b8152600401610d8c90613e67565b600f805462ff000019166201000017905550600190565b60006118136124b7565b6040516001600160a01b038316904780156108fc02916000818181858888f19350505050158015610e59573d6000803e3d6000fd5b6013546000906001600160a01b038381169116148061187457506012546001600160a01b038381169116145b1561188157506000919050565b6001600160a01b0382166000908152601860205260408120546014546118a79190613f6b565b6001600160a01b0384166000908152601b6020908152604080832054600454601690935292205492935090916118dd9084613f82565b6118e79190613fb7565b6118f19190613f11565b9392505050565b60006119026124b7565b506001600160a01b03166000908152601f60205260409020805460ff19169055600190565b60006119316124b7565b6001600160a01b0382166000908152601e602052604090205460ff16156119ae5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a204163636f756e7420697320616c7265616479206578636c756460448201526a0cac840cce4deda40e8c2f60ab1b6064820152608401610d8c565b506001600160a01b03166000908152601e60205260409020805460ff1916600190811790915590565b60006119e16124b7565b50600655600190565b60006119f46124b7565b6007546001600160a01b0383811691161415611a655760405162461bcd60e51b815260206004820152602a60248201527f45524332303a204163636f756e7420697320616c7265616479207472656173756044820152697279206164647265737360b01b6064820152608401610d8c565b50600780546001600160a01b0383166001600160a01b03199091161790556001919050565b6000611a946124b7565b60005b8251811015610e59576001601f6000858481518110611ab857611ab8613fcb565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611af481613fe1565b915050611a97565b611b046124b7565b611b0e6000612d32565b565b6000611b1a6124b7565b600880546009805460059384905590839055604080518381526020810194909452919290917fcaf24a92738254645a1e260866df8998f2a8a7e4915fd123b906e5426e6e92c691015b60405180910390a16009546040805183815260208101929092527f5e2deb0291797955e0066c5cebbc900e815e1099432b8f07462265a4f1c61b51910160405180910390a160019250505090565b6000611bbb6124b7565b50600555600190565b6000611bce6124b7565b506001600160a01b0382166000908152601d60209081526040808320805485151560ff199182168117909255601e909352922080549091169091179055600192915050565b6000611c1d6124b7565b600a5460ff1615611c705760405162461bcd60e51b815260206004820181905260248201527f45524332303a2054726164696e6720697320616c7265616479206163746976656044820152606401610d8c565b50600a805460ff1916600190811790915590565b6000611c8e6124b7565b600f821115611cfc5760405162461bcd60e51b815260206004820152603460248201527f45524332303a205468652073656c6c207461782063616e2774206265206d6f7260448201527365207468656e2031352070657263656e7461676560601b6064820152608401610d8c565b600980549083905560408051828152602081018590527f5e2deb0291797955e0066c5cebbc900e815e1099432b8f07462265a4f1c61b5191015b60405180910390a150600192915050565b6000611d516124b7565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905284169063a9059cbb90604401602060405180830381600087803b158015611d9b57600080fd5b505af1158015611daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd39190613ffc565b506001949350505050565b606060028054610dc990613deb565b6000611df76124b7565b600f5460ff1615611e565760405162461bcd60e51b815260206004820152602360248201527f45524332303a20546f6b656e204275726e20697320616c7265616479207061756044820152621cd95960ea1b6064820152608401610d8c565b600f5460ff6101009091041615156001148015611e805750600f5462010000900460ff1615156001145b8015611e9a5750600f546301000000900460ff1615156001145b15611eb75760405162461bcd60e51b8152600401610d8c90613e67565b600f805460ff1916600117905550600190565b60003380611eea5760405162461bcd60e51b8152600401610d8c90613ece565b6001600160a01b038416611f105760405162461bcd60e51b8152600401610d8c90613ece565b6001600160a01b03841661dead1415611f615760405162461bcd60e51b815260206004820152601360248201527245524332303a2044656164204164647265737360681b6044820152606401610d8c565b6001600160a01b038116600090815260166020526040902054831115611fd75760405162461bcd60e51b815260206004820152602560248201527f45524332303a20416d6f756e742065786365656473206163636f756e742062616044820152646c616e636560d81b6064820152608401610d8c565b6111a18185856125cb565b6000611fec6124b7565b600060085411801561200057506000600954115b61204c5760405162461bcd60e51b815260206004820181905260248201527f45524332303a2054617865732061726520616c72656164792072656d6f7665646044820152606401610d8c565b600880546009805460009384905590839055604080518381526020810194909452919290917fcaf24a92738254645a1e260866df8998f2a8a7e4915fd123b906e5426e6e92c69101611b63565b600080601154116120bc5760405162461bcd60e51b8152600401610d8c90613f29565b81601154101561210e5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204c6f77207377617061626c65207265666c656374696f6e00006044820152606401610d8c565b600754612124906001600160a01b031683612b32565b816011546121329190613f6b565b601155506001919050565b60006121476124b7565b600f5460ff6101009091041615156001146121b05760405162461bcd60e51b8152602060048201526024808201527f45524332303a204175746f204c5020697320616c7265616479206e6f742070616044820152631d5cd95960e21b6064820152608401610d8c565b50600f805461ff0019169055600190565b60006121cb6124b7565b600f54610100900460ff16156122235760405162461bcd60e51b815260206004820181905260248201527f45524332303a204175746f204c5020697320616c7265616479207061757365646044820152606401610d8c565b600f5460ff16151560011480156122475750600f5462010000900460ff1615156001145b80156122615750600f546301000000900460ff1615156001145b1561227e5760405162461bcd60e51b8152600401610d8c90613e67565b600f805461ff00191661010017905550600190565b600061229d6124b7565b600f82111561230a5760405162461bcd60e51b815260206004820152603360248201527f45524332303a2054686520627579207461782063616e2774206265206d6f7265604482015272207468656e2031352070657263656e7461676560681b6064820152608401610d8c565b600880549083905560408051828152602081018590527fcaf24a92738254645a1e260866df8998f2a8a7e4915fd123b906e5426e6e92c69101611d36565b60006123526124b7565b6001600160a01b0382166000908152601e602052604090205460ff166123ce5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a204163636f756e7420697320616c726561647920696e636c756460448201526a0cac840cce4deda40e8c2f60ab1b6064820152608401610d8c565b506001600160a01b03166000908152601e60205260409020805460ff19169055600190565b6123fb6124b7565b6001600160a01b0381166124605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d8c565b61246981612d32565b50565b60006124766124b7565b506001600160a01b03166000908152601f60205260409020805460ff1916600190811790915590565b60006118f18284613f82565b60006118f18284613f11565b6000546001600160a01b03163314611b0e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d8c565b6001600160a01b0383166125375760405162461bcd60e51b8152600401610d8c90613ece565b6001600160a01b03821661255d5760405162461bcd60e51b8152600401610d8c90613ece565b6001600160a01b0383811660008181526017602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006118f18284613f6b565b6001600160a01b0383166000908152601f602052604090205460ff1615801561260d57506001600160a01b0382166000908152601f602052604090205460ff16155b6126595760405162461bcd60e51b815260206004820152601760248201527f45524332303a20426f74732063616e27742074726164650000000000000000006044820152606401610d8c565b6000546001600160a01b03848116911614801561268e57506001600160a01b0382166000908152601d602052604090205460ff165b156126a35761269e838383612d82565b505050565b6001600160a01b0383166000908152601d602052604090205460ff16806126e257506001600160a01b0382166000908152601d602052604090205460ff165b1561290557600a5460ff16151560011461273e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610d8c565b6001600160a01b0383166000908152601e602052604090205460ff16801561277f57506001600160a01b0382166000908152601e602052604090205460ff16155b156127ae5761278e8282612f03565b801561279e575061279e81612f7f565b1561269e5761269e838383612fdb565b6001600160a01b0383166000908152601e602052604090205460ff161580156127ef57506001600160a01b0382166000908152601e602052604090205460ff165b1561280d576127fd81612f7f565b1561269e5761269e8383836132cc565b6001600160a01b0383166000908152601e602052604090205460ff16801561284d57506001600160a01b0382166000908152601e602052604090205460ff165b1561269e576000546001600160a01b038481169116148061287b57506000546001600160a01b038381169116145b8061288e57506001600160a01b03831630145b806128a157506001600160a01b03821630145b156128b15761269e838383612d82565b6001600160a01b0382166000908152601d602052604090205460ff16156128eb576128db81612f7f565b1561269e5761269e838383612d82565b6128f58282612f03565b80156128db57506128db81612f7f565b6000546001600160a01b038481169116148061292e57506000546001600160a01b038381169116145b8061294157506001600160a01b03831630145b8061295457506001600160a01b03821630145b156128eb5761269e838383612d82565b600061296f82611848565b9050600081116129d35760405162461bcd60e51b815260206004820152602960248201527f45524332303a20436c61696d20616d6f756e742073686f756c64206265206d6f60448201526807265207468656e20360bc1b6064820152608401610d8c565b6001600160a01b0382166000908152601c602052604090205460ff1615612a535760405162461bcd60e51b815260206004820152602e60248201527f45524332303a2041646472657373206973206578636c7564656420746f20636c60448201526d30b4b6903932b33632b1ba34b7b760911b6064820152608401610d8c565b6014546001600160a01b038316600081815260186020908152604080832094909455601a8152838220429055601b90528281208190559151909183156108fc02918491818181858888f19350505050158015612ab3573d6000803e3d6000fd5b506001600160a01b038216600090815260196020526040902054612ad790826124ab565b6001600160a01b038316600081815260196020526040908190209290925590517faba62311dcf381aba06c0e76b1bb8e427e7c715edb8c84fc169cc1d1f51ac84e90612b269084815260200190565b60405180910390a25050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612b6757612b67613fcb565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612bbb57600080fd5b505afa158015612bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf39190614019565b81600181518110612c0657612c06613fcb565b6001600160a01b0392831660209182029290920101526012546040516318cbafe560e01b81529116906318cbafe590612c4c908590600090869089904290600401614036565b600060405180830381600087803b158015612c6657600080fd5b505af1158015612c7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ca291908101906140a7565b50505050565b600454612cb590826125bf565b600455600b54612cc590826124ab565b600b556040518181526000906001600160a01b0384169060008051602061417d8339815191529060200160405180910390a3816001600160a01b03167f8b1897d4e7a3b42570088bb1182eb6518c96a754d44bc9edd4669568bfa9832682604051612b2691815260200190565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b0383811691161480612da657506001600160a01b03821630145b15612e1b576001600160a01b038316600090815260166020526040902054612dce90826125bf565b6001600160a01b038085166000908152601660205260408082209390935590841681522054612dfd90826124ab565b6001600160a01b038316600090815260166020526040902055612ed0565b612e46612e2783613505565b6001600160a01b0384166000908152601b6020526040902054906124ab565b6001600160a01b038084166000908152601b60209081526040808320949094556014546018825284832055918616815260169091522054612e8790826125bf565b6001600160a01b038085166000908152601660205260408082209390935590841681522054612eb690826124ab565b6001600160a01b0383166000908152601660205260409020555b816001600160a01b0316836001600160a01b031660008051602061417d833981519152836040516125b291815260200190565b6000612f2e82612f28856001600160a01b031660009081526016602052604090205490565b906124ab565b6005541015610e595760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2057616c6c6574206c696d6974206578636565647300000000006044820152606401610d8c565b6000600654821115612fd35760405162461bcd60e51b815260206004820181905260248201527f45524332303a205472616e73616374696f6e206c696d697420657863656564736044820152606401610d8c565b506001919050565b6000612fe561359c565b9050600061300960646130036008548661249f90919063ffffffff16565b90613a8b565b9050600061301784836125bf565b905061304461302586613505565b6001600160a01b0387166000908152601b6020526040902054906124ab565b6001600160a01b038087166000908152601b6020908152604080832094909455601454601882528483205591891681526016909152205461308590856125bf565b6001600160a01b0380881660009081526016602052604080822093909355908716815220546130b490826124ab565b6001600160a01b0386166000908152601660205260408082209290925530815220546130e090836124ab565b306000908152601660205260409020556001831415613132573060009081526016602052604090205461311390836125bf565b3060009081526016602052604090205561312d8583612ca8565b613245565b826002141561316f573060009081526016602052604090205461315590836125bf565b3060009081526016602052604090205561312d8583613a97565b82600314156131dc5760105461318590836124ab565b601055600d5461319590836124ab565b600d556040518281526001600160a01b038616907fb7489ef47c48c720c40f3a3d8ee43af2461787f8211836228289add459fd887c906020015b60405180910390a2613245565b8260041415613245576011546131f290836124ab565b601155600e5461320290836124ab565b600e556040518281526001600160a01b038616907f1929a4bace25a65ec09f6599a42b7e272b7b015dbf1ac423102375dc81d74e15906020015b60405180910390a25b60408051848152602081018490526001600160a01b038816917f43430960b1421ddf891d3754c233acfb8948fc4b9912cbd819ca4f09701fbf58910160405180910390a2846001600160a01b0316866001600160a01b031660008051602061417d833981519152866040516132bc91815260200190565b60405180910390a3505050505050565b60006132d661359c565b905060006132f460646130036009548661249f90919063ffffffff16565b9050600061330284836125bf565b6001600160a01b03871660009081526016602052604090205490915061332890856125bf565b6001600160a01b03808816600090815260166020526040808220939093559087168152205461335790826124ab565b6001600160a01b03861660009081526016602052604080822092909255308152205461338390836124ab565b30600090815260166020526040808220929092556001600160a01b038816815220546133c3576001600160a01b0385166000908152601b60205260408120555b826001141561340057306000908152601660205260409020546133e690836125bf565b3060009081526016602052604090205561312d8683612ca8565b826002141561343d573060009081526016602052604090205461342390836125bf565b3060009081526016602052604090205561312d8683613a97565b82600314156134a15760105461345390836124ab565b601055600d5461346390836124ab565b600d556040518281526001600160a01b038716907fb7489ef47c48c720c40f3a3d8ee43af2461787f8211836228289add459fd887c906020016131cf565b8260041415613245576011546134b790836124ab565b601155600e546134c790836124ab565b600e556040518281526001600160a01b038716907f1929a4bace25a65ec09f6599a42b7e272b7b015dbf1ac423102375dc81d74e159060200161323c565b6013546000906001600160a01b038381169116148061353157506012546001600160a01b038381169116145b1561353e57506000919050565b6001600160a01b0382166000908152601860205260408120546014546135649190613f6b565b9050600454613588846001600160a01b031660009081526016602052604090205490565b6135929083613f82565b6118f19190613fb7565b6000806000600242444532433a6040516020016135be9695949392919061412d565b6040516020818303038152906040528051906020012060001c6135e19190614168565b90506000600342444532433a6040516020016136029695949392919061412d565b6040516020818303038152906040528051906020012060001c6136259190614168565b600f5490915060ff161515600114801561364c5750600f5460ff6101009091041615156001145b80156136655750600f5462010000900460ff1615156001145b156136735760049250613a83565b600f5460ff16151560011480156136975750600f5460ff6101009091041615156001145b80156136b15750600f546301000000900460ff1615156001145b156136bf5760039250613a83565b600f5460ff16151560011480156136e35750600f5462010000900460ff1615156001145b80156136fd5750600f546301000000900460ff1615156001145b1561370b5760029250613a83565b600f5460ff61010090910416151560011480156137355750600f5462010000900460ff1615156001145b801561374f5750600f546301000000900460ff1615156001145b1561375d5760019250613a83565b600f5460ff16151560011480156137815750600f5460ff6101009091041615156001145b156137a757816137945760039250613a83565b81600114156137a257600492505b613a83565b600f5460ff16151560011480156137cb5750600f5462010000900460ff1615156001145b156137de57816137945760029250613a83565b600f5460ff16151560011480156138035750600f546301000000900460ff1615156001145b1561382857816138165760029250613a83565b81600114156137a25760039250613a83565b600f5460ff61010090910416151560011480156138525750600f5462010000900460ff1615156001145b1561386557816137945760019250613a83565b600f5460ff61010090910416151560011480156138905750600f546301000000900460ff1615156001145b156138a357816138165760019250613a83565b600f5462010000900460ff16151560011480156138ce5750600f546301000000900460ff1615156001145b156138f357816138e15760019250613a83565b81600114156137a25760029250613a83565b600f5460ff1615156001141561395557600342444532433a6040516020016139209695949392919061412d565b6040516020818303038152906040528051906020012060001c6139439190614168565b61394e906002613f11565b9250613a83565b600f5460ff6101009091041615156001141561399d57806139795760019250613a83565b806001141561398b5760039250613a83565b80600214156137a25760049250613a83565b600f5462010000900460ff161515600114156139d357806139c15760019250613a83565b806001141561398b5760029250613a83565b600f546301000000900460ff16151560011415613a3557600342444532433a604051602001613a079695949392919061412d565b6040516020818303038152906040528051906020012060001c613a2a9190614168565b61394e906001613f11565b600442444532433a604051602001613a529695949392919061412d565b6040516020818303038152906040528051906020012060001c613a759190614168565b613a80906001613f11565b92505b509092915050565b60006118f18284613fb7565b8015613b5b576013546001600160a01b0316600090815260166020526040902054613ac290826124ab565b6013546001600160a01b0316600090815260166020526040902055600c54613aea90826124ab565b600c556013546040518281526001600160a01b039182169184169060008051602061417d8339815191529060200160405180910390a3816001600160a01b03167ffb42d133eca0812491d47088ea70321250d6ab9cfc23a318f640f7def1cb201c82604051612b2691815260200190565b5050565b6001600160a01b038116811461246957600080fd5b600060208284031215613b8657600080fd5b81356118f181613b5f565b600060208083528351808285015260005b81811015613bbe57858101830151858201604001528201613ba2565b81811115613bd0576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215613bf957600080fd5b8235613c0481613b5f565b946020939093013593505050565b600080600060608486031215613c2757600080fd5b8335613c3281613b5f565b92506020840135613c4281613b5f565b929592945050506040919091013590565b600060208284031215613c6557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613cab57613cab613c6c565b604052919050565b600067ffffffffffffffff821115613ccd57613ccd613c6c565b5060051b60200190565b60006020808385031215613cea57600080fd5b823567ffffffffffffffff811115613d0157600080fd5b8301601f81018513613d1257600080fd5b8035613d25613d2082613cb3565b613c82565b81815260059190911b82018301908381019087831115613d4457600080fd5b928401925b82841015613d6b578335613d5c81613b5f565b82529284019290840190613d49565b979650505050505050565b801515811461246957600080fd5b60008060408385031215613d9757600080fd5b8235613da281613b5f565b91506020830135613db281613d76565b809150509250929050565b60008060408385031215613dd057600080fd5b8235613ddb81613b5f565b91506020830135613db281613b5f565b600181811c90821680613dff57607f821691505b60208210811415613e2057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f45524332303a20547265617375727920697320616c72656164792070617573656040820152601960fa1b606082015260800190565b60208082526041908201527f45524332303a20416c6c20666f75722066756e6374696f6e616c69746965732060408201527f63616e27742067657420706175736564206174207468652073616d652074696d6060820152606560f81b608082015260a00190565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115613f2457613f24613efb565b500190565b60208082526022908201527f45524332303a20546865726520617265206e6f20746f6b656e7320746f207377604082015261061760f41b606082015260800190565b600082821015613f7d57613f7d613efb565b500390565b6000816000190483118215151615613f9c57613f9c613efb565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613fc657613fc6613fa1565b500490565b634e487b7160e01b600052603260045260246000fd5b6000600019821415613ff557613ff5613efb565b5060010190565b60006020828403121561400e57600080fd5b81516118f181613d76565b60006020828403121561402b57600080fd5b81516118f181613b5f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156140865784516001600160a01b031683529383019391830191600101614061565b50506001600160a01b03969096166060850152505050608001529392505050565b600060208083850312156140ba57600080fd5b825167ffffffffffffffff8111156140d157600080fd5b8301601f810185136140e257600080fd5b80516140f0613d2082613cb3565b81815260059190911b8201830190838101908783111561410f57600080fd5b928401925b82841015613d6b57835182529284019290840190614114565b95865260208601949094526040850192909252606090811b6bffffffffffffffffffffffff1916908401526074830152609482015260b40190565b60008261417757614177613fa1565b50069056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f2ebad4a85ba1f775c84296e406de093790dee4d548789888fc387f1f46a732864736f6c634300080900338c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92500000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000ef681b51075a9d48ab27c53c5b8aff157ecef185000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000000000000000000000001a784379d99db4200000000000000000000000000000000000000000000000001a784379d99db4200000000000000000000000000000000000000000000000000000000000000000000094d61676963204261670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000546454c4958000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061042a5760003560e01c80636605bfda1161022957806395d89b411161012e578063cc1776d3116100b6578063dd62ed3e1161007a578063dd62ed3e14610c40578063e17c4c7414610c86578063f2fde38b14610ca6578063f48fd0e014610cc6578063ffecf51614610ce757600080fd5b8063cc1776d314610bbf578063d448a07014610bd5578063d83646bb14610bea578063d89135cd14610c0a578063dc1052e214610c2057600080fd5b8063b4fe8f6a116100fd578063b4fe8f6a14610b22578063ba53b52214610b37578063bbc0c74214610b57578063c2cc176914610b71578063cb4ca63114610b8657600080fd5b806395d89b4114610ac2578063a5332f2d14610ad7578063a6559fe414610aed578063a9059cbb14610b0257600080fd5b806380c581d1116101b15780638ce311c7116101805780638ce311c714610a045780638da5cb5b14610a245780639045be5814610a4257806390e0d99214610a7b5780639579d51414610a9557600080fd5b806380c581d114610999578063897534a9146109b95780638a8c523c146109cf5780638cd09d50146109e457600080fd5b806370a08231116101f857806370a0823114610901578063715018a614610937578063728607ba1461094e578063728d41c9146109635780638036d5901461098357600080fd5b80636605bfda1461089557806366a88d96146108b5578063688d12ed146108cb5780636f1eaac4146108e157600080fd5b806342966c681161032f578063559c4cbb116102b75780635fecd926116102865780635fecd926146107ff57806360d1259e1461081f57806361d027b31461083f57806361db24461461085f57806364f5a5bb1461087557600080fd5b8063559c4cbb1461077d578063588d5189146107925780635cfad287146107bf5780635facf12e146107df57600080fd5b80634675533f116102fe5780634675533f146106f35780634cac88f4146107125780634cb36a9b1461073f5780634e6be5441461075f5780634f7041a51461076757600080fd5b806342966c681461066e57806343cc8c2a1461068e578063452ed4f1146106be578063460bb303146106de57600080fd5b806323b872dd116103b2578063375632931161038157806337563293146105d65780633a28c954146105eb5780633bbac579146106005780633e8c4873146106395780634295e8571461065957600080fd5b806323b872dd1461055e57806327334a081461057e578063313ce5671461059e5780633732e214146105c057600080fd5b806309b98866116103f957806309b98866146104e55780630f9d568114610509578063136a6be11461051e57806317700f011461053457806318160ddd1461054957600080fd5b806305f82a451461043657806306fdde031461046b5780630758d9241461048d578063095ea7b3146104c557600080fd5b3661043157005b600080fd5b34801561044257600080fd5b50610456610451366004613b74565b610d07565b60405190151581526020015b60405180910390f35b34801561047757600080fd5b50610480610dba565b6040516104629190613b91565b34801561049957600080fd5b506012546104ad906001600160a01b031681565b6040516001600160a01b039091168152602001610462565b3480156104d157600080fd5b506104566104e0366004613be6565b610e4c565b3480156104f157600080fd5b506104fb60155481565b604051908152602001610462565b34801561051557600080fd5b50610456610e62565b34801561052a57600080fd5b506104fb60115481565b34801561054057600080fd5b50610456610f09565b34801561055557600080fd5b506004546104fb565b34801561056a57600080fd5b50610456610579366004613c12565b610f86565b34801561058a57600080fd5b50610456610599366004613b74565b6111ab565b3480156105aa57600080fd5b5060035460405160ff9091168152602001610462565b3480156105cc57600080fd5b506104fb600d5481565b3480156105e257600080fd5b50610456611262565b3480156105f757600080fd5b50610456611370565b34801561060c57600080fd5b5061045661061b366004613b74565b6001600160a01b03166000908152601f602052604090205460ff1690565b34801561064557600080fd5b50610456610654366004613c53565b6113f9565b34801561066557600080fd5b506104566114bc565b34801561067a57600080fd5b50610456610689366004613c53565b61153d565b34801561069a57600080fd5b506104566106a9366004613b74565b601d6020526000908152604090205460ff1681565b3480156106ca57600080fd5b506013546104ad906001600160a01b031681565b3480156106ea57600080fd5b50610456611648565b3480156106ff57600080fd5b50600f5461045690610100900460ff1681565b34801561071e57600080fd5b506104fb61072d366004613b74565b601a6020526000908152604090205481565b34801561074b57600080fd5b5061045661075a366004613c53565b611693565b61045661170f565b34801561077357600080fd5b506104fb60085481565b34801561078957600080fd5b50610456611728565b34801561079e57600080fd5b506104fb6107ad366004613b74565b60196020526000908152604090205481565b3480156107cb57600080fd5b506104566107da366004613b74565b611809565b3480156107eb57600080fd5b506104fb6107fa366004613b74565b611848565b34801561080b57600080fd5b5061045661081a366004613b74565b6118f8565b34801561082b57600080fd5b5061045661083a366004613b74565b611927565b34801561084b57600080fd5b506007546104ad906001600160a01b031681565b34801561086b57600080fd5b506104fb60145481565b34801561088157600080fd5b50610456610890366004613c53565b6119d7565b3480156108a157600080fd5b506104566108b0366004613b74565b6119ea565b3480156108c157600080fd5b506104fb60055481565b3480156108d757600080fd5b506104fb600c5481565b3480156108ed57600080fd5b506104566108fc366004613cd7565b611a8a565b34801561090d57600080fd5b506104fb61091c366004613b74565b6001600160a01b031660009081526016602052604090205490565b34801561094357600080fd5b5061094c611afc565b005b34801561095a57600080fd5b50610456611b10565b34801561096f57600080fd5b5061045661097e366004613c53565b611bb1565b34801561098f57600080fd5b506104fb60065481565b3480156109a557600080fd5b506104566109b4366004613d84565b611bc4565b3480156109c557600080fd5b506104fb600e5481565b3480156109db57600080fd5b50610456611c13565b3480156109f057600080fd5b506104566109ff366004613c53565b611c84565b348015610a1057600080fd5b50610456610a1f366004613c12565b611d47565b348015610a3057600080fd5b506000546001600160a01b03166104ad565b348015610a4e57600080fd5b50610456610a5d366004613b74565b6001600160a01b03166000908152601c602052604090205460ff1690565b348015610a8757600080fd5b50600f546104569060ff1681565b348015610aa157600080fd5b506104fb610ab0366004613b74565b60186020526000908152604090205481565b348015610ace57600080fd5b50610480611dde565b348015610ae357600080fd5b506104fb60105481565b348015610af957600080fd5b50610456611ded565b348015610b0e57600080fd5b50610456610b1d366004613be6565b611eca565b348015610b2e57600080fd5b50610456611fe2565b348015610b4357600080fd5b50610456610b52366004613c53565b612099565b348015610b6357600080fd5b50600a546104569060ff1681565b348015610b7d57600080fd5b5061045661213d565b348015610b9257600080fd5b50610456610ba1366004613b74565b6001600160a01b03166000908152601e602052604090205460ff1690565b348015610bcb57600080fd5b506104fb60095481565b348015610be157600080fd5b506104566121c1565b348015610bf657600080fd5b50600f546104569062010000900460ff1681565b348015610c1657600080fd5b506104fb600b5481565b348015610c2c57600080fd5b50610456610c3b366004613c53565b612293565b348015610c4c57600080fd5b506104fb610c5b366004613dbd565b6001600160a01b03918216600090815260176020908152604080832093909416825291909152205490565b348015610c9257600080fd5b50610456610ca1366004613b74565b612348565b348015610cb257600080fd5b5061094c610cc1366004613b74565b6123f3565b348015610cd257600080fd5b50600f54610456906301000000900460ff1681565b348015610cf357600080fd5b50610456610d02366004613b74565b61246c565b6000610d116124b7565b6001600160a01b0382166000908152601c602052604090205460ff16610d955760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204163636f756e74206973206e6f74206578636c75646564206660448201526d3937b6903932b33632b1ba34b7b760911b60648201526084015b60405180910390fd5b506001600160a01b03166000908152601c60205260409020805460ff19169055600190565b606060018054610dc990613deb565b80601f0160208091040260200160405190810160405280929190818152602001828054610df590613deb565b8015610e425780601f10610e1757610100808354040283529160200191610e42565b820191906000526020600020905b815481529060010190602001808311610e2557829003601f168201915b5050505050905090565b6000610e59338484612511565b50600192915050565b6000610e6c6124b7565b600f546301000000900460ff1615610e965760405162461bcd60e51b8152600401610d8c90613e26565b600f5460ff1615156001148015610eba5750600f5460ff6101009091041615156001145b8015610ed35750600f5462010000900460ff1615156001145b15610ef05760405162461bcd60e51b8152600401610d8c90613e67565b600f805463ff0000001916630100000017905550600190565b6000610f136124b7565b600a5460ff161515600114610f765760405162461bcd60e51b815260206004820152602360248201527f45524332303a2054726164696e6720697320616c726561647920756e2d61637460448201526269766560e81b6064820152608401610d8c565b50600a805460ff19169055600190565b60006001600160a01b038416610fae5760405162461bcd60e51b8152600401610d8c90613ece565b6001600160a01b038316610fd45760405162461bcd60e51b8152600401610d8c90613ece565b6001600160a01b03831661dead14156110255760405162461bcd60e51b815260206004820152601360248201527245524332303a2044656164204164647265737360681b6044820152606401610d8c565b6001600160a01b03841660009081526017602090815260408083203384529091529020548211156110985760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20496e73756666696369656e7420616c6c6f77616e63652e00006044820152606401610d8c565b6001600160a01b0384166000908152601660205260409020548211156111175760405162461bcd60e51b815260206004820152602e60248201527f45524332303a20416d6f756e7420657863656564732073656e6465722773206160448201526d63636f756e742062616c616e636560901b6064820152608401610d8c565b6001600160a01b038416600090815260176020908152604080832033845290915290205460001914611196576001600160a01b038416600090815260176020908152604080832033845290915290205461117190836125bf565b6001600160a01b03851660009081526017602090815260408083203384529091529020555b6111a18484846125cb565b5060019392505050565b60006111b56124b7565b6001600160a01b0382166000908152601c602052604090205460ff16156112395760405162461bcd60e51b815260206004820152603260248201527f45524332303a204163636f756e7420697320616c7265616479206578636c756460448201527132b210333937b6903932b33632b1ba34b7b760711b6064820152608401610d8c565b506001600160a01b03166000908152601c60205260409020805460ff1916600190811790915590565b60003363ffffffff813b16156112c45760405162461bcd60e51b815260206004820152602160248201527f45524332303a2053656e6465722063616e2774206265206120636f6e747261636044820152601d60fa1b6064820152608401610d8c565b6015546001600160a01b0382166000908152601a602052604090205442916112eb91613f11565b111561135f5760405162461bcd60e51b815260206004820152603b60248201527f45524332303a205265666c656374696f6e20636f6f6c20646f776e206973206960448201527f6d706c656d656e7465642c2074727920616761696e206c6174657200000000006064820152608401610d8c565b61136881612964565b600191505090565b600061137a6124b7565b600f5462010000900460ff1615156001146113e75760405162461bcd60e51b815260206004820152602760248201527f45524332303a205265666c656374696f6e20697320616c7265616479206e6f74604482015266081c185d5cd95960ca1b6064820152608401610d8c565b50600f805462ff000019169055600190565b60006114036124b7565b6000601054116114255760405162461bcd60e51b8152600401610d8c90613f29565b8160105410156114775760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204c6f77207377617061626c65207265666c656374696f6e00006044820152606401610d8c565b476114823084612b32565b826010546114909190613f6b565b601055600061149f47836125bf565b6014549091506114af90826124ab565b6014555060019392505050565b60006114c66124b7565b600f5460ff16151560011461152d5760405162461bcd60e51b815260206004820152602760248201527f45524332303a20546f6b656e204275726e20697320616c7265616479206e6f74604482015266081c185d5cd95960ca1b6064820152608401610d8c565b50600f805460ff19169055600190565b336000818152601660205260408120549091908311156115b25760405162461bcd60e51b815260206004820152602a60248201527f45524332303a204275726e20416d6f756e742065786365656473206163636f756044820152696e742062616c616e636560b01b6064820152608401610d8c565b600083116116025760405162461bcd60e51b815260206004820181905260248201527f45524332303a20456e74657220736f6d6520616d6f756e7420746f206275726e6044820152606401610d8c565b6001600160a01b03811660009081526016602052604090205461162590846125bf565b6001600160a01b038216600090815260166020526040902055610e598184612ca8565b60006116526124b7565b600f546301000000900460ff1615156001146116805760405162461bcd60e51b8152600401610d8c90613e26565b50600f805463ff00000019169055600190565b600061169d6124b7565b8160155414156117065760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204e65772054696d657374616d702063616e277420626520746860448201526d652070726576696f7573206f6e6560901b6064820152608401610d8c565b50601555600190565b60145460009061171f90346124ab565b60145550600190565b60006117326124b7565b600f5462010000900460ff16156117975760405162461bcd60e51b815260206004820152602360248201527f45524332303a205265666c656374696f6e20697320616c7265616479207061756044820152621cd95960ea1b6064820152608401610d8c565b600f5460ff16151560011480156117bb5750600f5460ff6101009091041615156001145b80156117d55750600f546301000000900460ff1615156001145b156117f25760405162461bcd60e51b8152600401610d8c90613e67565b600f805462ff000019166201000017905550600190565b60006118136124b7565b6040516001600160a01b038316904780156108fc02916000818181858888f19350505050158015610e59573d6000803e3d6000fd5b6013546000906001600160a01b038381169116148061187457506012546001600160a01b038381169116145b1561188157506000919050565b6001600160a01b0382166000908152601860205260408120546014546118a79190613f6b565b6001600160a01b0384166000908152601b6020908152604080832054600454601690935292205492935090916118dd9084613f82565b6118e79190613fb7565b6118f19190613f11565b9392505050565b60006119026124b7565b506001600160a01b03166000908152601f60205260409020805460ff19169055600190565b60006119316124b7565b6001600160a01b0382166000908152601e602052604090205460ff16156119ae5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a204163636f756e7420697320616c7265616479206578636c756460448201526a0cac840cce4deda40e8c2f60ab1b6064820152608401610d8c565b506001600160a01b03166000908152601e60205260409020805460ff1916600190811790915590565b60006119e16124b7565b50600655600190565b60006119f46124b7565b6007546001600160a01b0383811691161415611a655760405162461bcd60e51b815260206004820152602a60248201527f45524332303a204163636f756e7420697320616c7265616479207472656173756044820152697279206164647265737360b01b6064820152608401610d8c565b50600780546001600160a01b0383166001600160a01b03199091161790556001919050565b6000611a946124b7565b60005b8251811015610e59576001601f6000858481518110611ab857611ab8613fcb565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611af481613fe1565b915050611a97565b611b046124b7565b611b0e6000612d32565b565b6000611b1a6124b7565b600880546009805460059384905590839055604080518381526020810194909452919290917fcaf24a92738254645a1e260866df8998f2a8a7e4915fd123b906e5426e6e92c691015b60405180910390a16009546040805183815260208101929092527f5e2deb0291797955e0066c5cebbc900e815e1099432b8f07462265a4f1c61b51910160405180910390a160019250505090565b6000611bbb6124b7565b50600555600190565b6000611bce6124b7565b506001600160a01b0382166000908152601d60209081526040808320805485151560ff199182168117909255601e909352922080549091169091179055600192915050565b6000611c1d6124b7565b600a5460ff1615611c705760405162461bcd60e51b815260206004820181905260248201527f45524332303a2054726164696e6720697320616c7265616479206163746976656044820152606401610d8c565b50600a805460ff1916600190811790915590565b6000611c8e6124b7565b600f821115611cfc5760405162461bcd60e51b815260206004820152603460248201527f45524332303a205468652073656c6c207461782063616e2774206265206d6f7260448201527365207468656e2031352070657263656e7461676560601b6064820152608401610d8c565b600980549083905560408051828152602081018590527f5e2deb0291797955e0066c5cebbc900e815e1099432b8f07462265a4f1c61b5191015b60405180910390a150600192915050565b6000611d516124b7565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905284169063a9059cbb90604401602060405180830381600087803b158015611d9b57600080fd5b505af1158015611daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd39190613ffc565b506001949350505050565b606060028054610dc990613deb565b6000611df76124b7565b600f5460ff1615611e565760405162461bcd60e51b815260206004820152602360248201527f45524332303a20546f6b656e204275726e20697320616c7265616479207061756044820152621cd95960ea1b6064820152608401610d8c565b600f5460ff6101009091041615156001148015611e805750600f5462010000900460ff1615156001145b8015611e9a5750600f546301000000900460ff1615156001145b15611eb75760405162461bcd60e51b8152600401610d8c90613e67565b600f805460ff1916600117905550600190565b60003380611eea5760405162461bcd60e51b8152600401610d8c90613ece565b6001600160a01b038416611f105760405162461bcd60e51b8152600401610d8c90613ece565b6001600160a01b03841661dead1415611f615760405162461bcd60e51b815260206004820152601360248201527245524332303a2044656164204164647265737360681b6044820152606401610d8c565b6001600160a01b038116600090815260166020526040902054831115611fd75760405162461bcd60e51b815260206004820152602560248201527f45524332303a20416d6f756e742065786365656473206163636f756e742062616044820152646c616e636560d81b6064820152608401610d8c565b6111a18185856125cb565b6000611fec6124b7565b600060085411801561200057506000600954115b61204c5760405162461bcd60e51b815260206004820181905260248201527f45524332303a2054617865732061726520616c72656164792072656d6f7665646044820152606401610d8c565b600880546009805460009384905590839055604080518381526020810194909452919290917fcaf24a92738254645a1e260866df8998f2a8a7e4915fd123b906e5426e6e92c69101611b63565b600080601154116120bc5760405162461bcd60e51b8152600401610d8c90613f29565b81601154101561210e5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204c6f77207377617061626c65207265666c656374696f6e00006044820152606401610d8c565b600754612124906001600160a01b031683612b32565b816011546121329190613f6b565b601155506001919050565b60006121476124b7565b600f5460ff6101009091041615156001146121b05760405162461bcd60e51b8152602060048201526024808201527f45524332303a204175746f204c5020697320616c7265616479206e6f742070616044820152631d5cd95960e21b6064820152608401610d8c565b50600f805461ff0019169055600190565b60006121cb6124b7565b600f54610100900460ff16156122235760405162461bcd60e51b815260206004820181905260248201527f45524332303a204175746f204c5020697320616c7265616479207061757365646044820152606401610d8c565b600f5460ff16151560011480156122475750600f5462010000900460ff1615156001145b80156122615750600f546301000000900460ff1615156001145b1561227e5760405162461bcd60e51b8152600401610d8c90613e67565b600f805461ff00191661010017905550600190565b600061229d6124b7565b600f82111561230a5760405162461bcd60e51b815260206004820152603360248201527f45524332303a2054686520627579207461782063616e2774206265206d6f7265604482015272207468656e2031352070657263656e7461676560681b6064820152608401610d8c565b600880549083905560408051828152602081018590527fcaf24a92738254645a1e260866df8998f2a8a7e4915fd123b906e5426e6e92c69101611d36565b60006123526124b7565b6001600160a01b0382166000908152601e602052604090205460ff166123ce5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a204163636f756e7420697320616c726561647920696e636c756460448201526a0cac840cce4deda40e8c2f60ab1b6064820152608401610d8c565b506001600160a01b03166000908152601e60205260409020805460ff19169055600190565b6123fb6124b7565b6001600160a01b0381166124605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d8c565b61246981612d32565b50565b60006124766124b7565b506001600160a01b03166000908152601f60205260409020805460ff1916600190811790915590565b60006118f18284613f82565b60006118f18284613f11565b6000546001600160a01b03163314611b0e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d8c565b6001600160a01b0383166125375760405162461bcd60e51b8152600401610d8c90613ece565b6001600160a01b03821661255d5760405162461bcd60e51b8152600401610d8c90613ece565b6001600160a01b0383811660008181526017602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006118f18284613f6b565b6001600160a01b0383166000908152601f602052604090205460ff1615801561260d57506001600160a01b0382166000908152601f602052604090205460ff16155b6126595760405162461bcd60e51b815260206004820152601760248201527f45524332303a20426f74732063616e27742074726164650000000000000000006044820152606401610d8c565b6000546001600160a01b03848116911614801561268e57506001600160a01b0382166000908152601d602052604090205460ff165b156126a35761269e838383612d82565b505050565b6001600160a01b0383166000908152601d602052604090205460ff16806126e257506001600160a01b0382166000908152601d602052604090205460ff165b1561290557600a5460ff16151560011461273e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610d8c565b6001600160a01b0383166000908152601e602052604090205460ff16801561277f57506001600160a01b0382166000908152601e602052604090205460ff16155b156127ae5761278e8282612f03565b801561279e575061279e81612f7f565b1561269e5761269e838383612fdb565b6001600160a01b0383166000908152601e602052604090205460ff161580156127ef57506001600160a01b0382166000908152601e602052604090205460ff165b1561280d576127fd81612f7f565b1561269e5761269e8383836132cc565b6001600160a01b0383166000908152601e602052604090205460ff16801561284d57506001600160a01b0382166000908152601e602052604090205460ff165b1561269e576000546001600160a01b038481169116148061287b57506000546001600160a01b038381169116145b8061288e57506001600160a01b03831630145b806128a157506001600160a01b03821630145b156128b15761269e838383612d82565b6001600160a01b0382166000908152601d602052604090205460ff16156128eb576128db81612f7f565b1561269e5761269e838383612d82565b6128f58282612f03565b80156128db57506128db81612f7f565b6000546001600160a01b038481169116148061292e57506000546001600160a01b038381169116145b8061294157506001600160a01b03831630145b8061295457506001600160a01b03821630145b156128eb5761269e838383612d82565b600061296f82611848565b9050600081116129d35760405162461bcd60e51b815260206004820152602960248201527f45524332303a20436c61696d20616d6f756e742073686f756c64206265206d6f60448201526807265207468656e20360bc1b6064820152608401610d8c565b6001600160a01b0382166000908152601c602052604090205460ff1615612a535760405162461bcd60e51b815260206004820152602e60248201527f45524332303a2041646472657373206973206578636c7564656420746f20636c60448201526d30b4b6903932b33632b1ba34b7b760911b6064820152608401610d8c565b6014546001600160a01b038316600081815260186020908152604080832094909455601a8152838220429055601b90528281208190559151909183156108fc02918491818181858888f19350505050158015612ab3573d6000803e3d6000fd5b506001600160a01b038216600090815260196020526040902054612ad790826124ab565b6001600160a01b038316600081815260196020526040908190209290925590517faba62311dcf381aba06c0e76b1bb8e427e7c715edb8c84fc169cc1d1f51ac84e90612b269084815260200190565b60405180910390a25050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612b6757612b67613fcb565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612bbb57600080fd5b505afa158015612bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf39190614019565b81600181518110612c0657612c06613fcb565b6001600160a01b0392831660209182029290920101526012546040516318cbafe560e01b81529116906318cbafe590612c4c908590600090869089904290600401614036565b600060405180830381600087803b158015612c6657600080fd5b505af1158015612c7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ca291908101906140a7565b50505050565b600454612cb590826125bf565b600455600b54612cc590826124ab565b600b556040518181526000906001600160a01b0384169060008051602061417d8339815191529060200160405180910390a3816001600160a01b03167f8b1897d4e7a3b42570088bb1182eb6518c96a754d44bc9edd4669568bfa9832682604051612b2691815260200190565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b0383811691161480612da657506001600160a01b03821630145b15612e1b576001600160a01b038316600090815260166020526040902054612dce90826125bf565b6001600160a01b038085166000908152601660205260408082209390935590841681522054612dfd90826124ab565b6001600160a01b038316600090815260166020526040902055612ed0565b612e46612e2783613505565b6001600160a01b0384166000908152601b6020526040902054906124ab565b6001600160a01b038084166000908152601b60209081526040808320949094556014546018825284832055918616815260169091522054612e8790826125bf565b6001600160a01b038085166000908152601660205260408082209390935590841681522054612eb690826124ab565b6001600160a01b0383166000908152601660205260409020555b816001600160a01b0316836001600160a01b031660008051602061417d833981519152836040516125b291815260200190565b6000612f2e82612f28856001600160a01b031660009081526016602052604090205490565b906124ab565b6005541015610e595760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2057616c6c6574206c696d6974206578636565647300000000006044820152606401610d8c565b6000600654821115612fd35760405162461bcd60e51b815260206004820181905260248201527f45524332303a205472616e73616374696f6e206c696d697420657863656564736044820152606401610d8c565b506001919050565b6000612fe561359c565b9050600061300960646130036008548661249f90919063ffffffff16565b90613a8b565b9050600061301784836125bf565b905061304461302586613505565b6001600160a01b0387166000908152601b6020526040902054906124ab565b6001600160a01b038087166000908152601b6020908152604080832094909455601454601882528483205591891681526016909152205461308590856125bf565b6001600160a01b0380881660009081526016602052604080822093909355908716815220546130b490826124ab565b6001600160a01b0386166000908152601660205260408082209290925530815220546130e090836124ab565b306000908152601660205260409020556001831415613132573060009081526016602052604090205461311390836125bf565b3060009081526016602052604090205561312d8583612ca8565b613245565b826002141561316f573060009081526016602052604090205461315590836125bf565b3060009081526016602052604090205561312d8583613a97565b82600314156131dc5760105461318590836124ab565b601055600d5461319590836124ab565b600d556040518281526001600160a01b038616907fb7489ef47c48c720c40f3a3d8ee43af2461787f8211836228289add459fd887c906020015b60405180910390a2613245565b8260041415613245576011546131f290836124ab565b601155600e5461320290836124ab565b600e556040518281526001600160a01b038616907f1929a4bace25a65ec09f6599a42b7e272b7b015dbf1ac423102375dc81d74e15906020015b60405180910390a25b60408051848152602081018490526001600160a01b038816917f43430960b1421ddf891d3754c233acfb8948fc4b9912cbd819ca4f09701fbf58910160405180910390a2846001600160a01b0316866001600160a01b031660008051602061417d833981519152866040516132bc91815260200190565b60405180910390a3505050505050565b60006132d661359c565b905060006132f460646130036009548661249f90919063ffffffff16565b9050600061330284836125bf565b6001600160a01b03871660009081526016602052604090205490915061332890856125bf565b6001600160a01b03808816600090815260166020526040808220939093559087168152205461335790826124ab565b6001600160a01b03861660009081526016602052604080822092909255308152205461338390836124ab565b30600090815260166020526040808220929092556001600160a01b038816815220546133c3576001600160a01b0385166000908152601b60205260408120555b826001141561340057306000908152601660205260409020546133e690836125bf565b3060009081526016602052604090205561312d8683612ca8565b826002141561343d573060009081526016602052604090205461342390836125bf565b3060009081526016602052604090205561312d8683613a97565b82600314156134a15760105461345390836124ab565b601055600d5461346390836124ab565b600d556040518281526001600160a01b038716907fb7489ef47c48c720c40f3a3d8ee43af2461787f8211836228289add459fd887c906020016131cf565b8260041415613245576011546134b790836124ab565b601155600e546134c790836124ab565b600e556040518281526001600160a01b038716907f1929a4bace25a65ec09f6599a42b7e272b7b015dbf1ac423102375dc81d74e159060200161323c565b6013546000906001600160a01b038381169116148061353157506012546001600160a01b038381169116145b1561353e57506000919050565b6001600160a01b0382166000908152601860205260408120546014546135649190613f6b565b9050600454613588846001600160a01b031660009081526016602052604090205490565b6135929083613f82565b6118f19190613fb7565b6000806000600242444532433a6040516020016135be9695949392919061412d565b6040516020818303038152906040528051906020012060001c6135e19190614168565b90506000600342444532433a6040516020016136029695949392919061412d565b6040516020818303038152906040528051906020012060001c6136259190614168565b600f5490915060ff161515600114801561364c5750600f5460ff6101009091041615156001145b80156136655750600f5462010000900460ff1615156001145b156136735760049250613a83565b600f5460ff16151560011480156136975750600f5460ff6101009091041615156001145b80156136b15750600f546301000000900460ff1615156001145b156136bf5760039250613a83565b600f5460ff16151560011480156136e35750600f5462010000900460ff1615156001145b80156136fd5750600f546301000000900460ff1615156001145b1561370b5760029250613a83565b600f5460ff61010090910416151560011480156137355750600f5462010000900460ff1615156001145b801561374f5750600f546301000000900460ff1615156001145b1561375d5760019250613a83565b600f5460ff16151560011480156137815750600f5460ff6101009091041615156001145b156137a757816137945760039250613a83565b81600114156137a257600492505b613a83565b600f5460ff16151560011480156137cb5750600f5462010000900460ff1615156001145b156137de57816137945760029250613a83565b600f5460ff16151560011480156138035750600f546301000000900460ff1615156001145b1561382857816138165760029250613a83565b81600114156137a25760039250613a83565b600f5460ff61010090910416151560011480156138525750600f5462010000900460ff1615156001145b1561386557816137945760019250613a83565b600f5460ff61010090910416151560011480156138905750600f546301000000900460ff1615156001145b156138a357816138165760019250613a83565b600f5462010000900460ff16151560011480156138ce5750600f546301000000900460ff1615156001145b156138f357816138e15760019250613a83565b81600114156137a25760029250613a83565b600f5460ff1615156001141561395557600342444532433a6040516020016139209695949392919061412d565b6040516020818303038152906040528051906020012060001c6139439190614168565b61394e906002613f11565b9250613a83565b600f5460ff6101009091041615156001141561399d57806139795760019250613a83565b806001141561398b5760039250613a83565b80600214156137a25760049250613a83565b600f5462010000900460ff161515600114156139d357806139c15760019250613a83565b806001141561398b5760029250613a83565b600f546301000000900460ff16151560011415613a3557600342444532433a604051602001613a079695949392919061412d565b6040516020818303038152906040528051906020012060001c613a2a9190614168565b61394e906001613f11565b600442444532433a604051602001613a529695949392919061412d565b6040516020818303038152906040528051906020012060001c613a759190614168565b613a80906001613f11565b92505b509092915050565b60006118f18284613fb7565b8015613b5b576013546001600160a01b0316600090815260166020526040902054613ac290826124ab565b6013546001600160a01b0316600090815260166020526040902055600c54613aea90826124ab565b600c556013546040518281526001600160a01b039182169184169060008051602061417d8339815191529060200160405180910390a3816001600160a01b03167ffb42d133eca0812491d47088ea70321250d6ab9cfc23a318f640f7def1cb201c82604051612b2691815260200190565b5050565b6001600160a01b038116811461246957600080fd5b600060208284031215613b8657600080fd5b81356118f181613b5f565b600060208083528351808285015260005b81811015613bbe57858101830151858201604001528201613ba2565b81811115613bd0576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215613bf957600080fd5b8235613c0481613b5f565b946020939093013593505050565b600080600060608486031215613c2757600080fd5b8335613c3281613b5f565b92506020840135613c4281613b5f565b929592945050506040919091013590565b600060208284031215613c6557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613cab57613cab613c6c565b604052919050565b600067ffffffffffffffff821115613ccd57613ccd613c6c565b5060051b60200190565b60006020808385031215613cea57600080fd5b823567ffffffffffffffff811115613d0157600080fd5b8301601f81018513613d1257600080fd5b8035613d25613d2082613cb3565b613c82565b81815260059190911b82018301908381019087831115613d4457600080fd5b928401925b82841015613d6b578335613d5c81613b5f565b82529284019290840190613d49565b979650505050505050565b801515811461246957600080fd5b60008060408385031215613d9757600080fd5b8235613da281613b5f565b91506020830135613db281613d76565b809150509250929050565b60008060408385031215613dd057600080fd5b8235613ddb81613b5f565b91506020830135613db281613b5f565b600181811c90821680613dff57607f821691505b60208210811415613e2057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f45524332303a20547265617375727920697320616c72656164792070617573656040820152601960fa1b606082015260800190565b60208082526041908201527f45524332303a20416c6c20666f75722066756e6374696f6e616c69746965732060408201527f63616e27742067657420706175736564206174207468652073616d652074696d6060820152606560f81b608082015260a00190565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115613f2457613f24613efb565b500190565b60208082526022908201527f45524332303a20546865726520617265206e6f20746f6b656e7320746f207377604082015261061760f41b606082015260800190565b600082821015613f7d57613f7d613efb565b500390565b6000816000190483118215151615613f9c57613f9c613efb565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613fc657613fc6613fa1565b500490565b634e487b7160e01b600052603260045260246000fd5b6000600019821415613ff557613ff5613efb565b5060010190565b60006020828403121561400e57600080fd5b81516118f181613d76565b60006020828403121561402b57600080fd5b81516118f181613b5f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156140865784516001600160a01b031683529383019391830191600101614061565b50506001600160a01b03969096166060850152505050608001529392505050565b600060208083850312156140ba57600080fd5b825167ffffffffffffffff8111156140d157600080fd5b8301601f810185136140e257600080fd5b80516140f0613d2082613cb3565b81815260059190911b8201830190838101908783111561410f57600080fd5b928401925b82841015613d6b57835182529284019290840190614114565b95865260208601949094526040850192909252606090811b6bffffffffffffffffffffffff1916908401526074830152609482015260b40190565b60008261417757614177613fa1565b50069056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f2ebad4a85ba1f775c84296e406de093790dee4d548789888fc387f1f46a732864736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000ef681b51075a9d48ab27c53c5b8aff157ecef185000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000000000000000000000001a784379d99db4200000000000000000000000000000000000000000000000001a784379d99db4200000000000000000000000000000000000000000000000000000000000000000000094d61676963204261670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000546454c4958000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): Magic Bag
Arg [1] : symbol_ (string): FELIX
Arg [2] : totalSupply_ (uint256): 100000000
Arg [3] : _treasury (address): 0xEf681B51075A9D48ab27C53C5B8afF157ECef185
Arg [4] : _reflectionCooldown (uint256): 60
Arg [5] : maxTxLimit_ (uint256): 2000000000000000000000000
Arg [6] : maxWalletLimit_ (uint256): 2000000000000000000000000
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [2] : 0000000000000000000000000000000000000000000000000000000005f5e100
Arg [3] : 000000000000000000000000ef681b51075a9d48ab27c53c5b8aff157ecef185
Arg [4] : 000000000000000000000000000000000000000000000000000000000000003c
Arg [5] : 00000000000000000000000000000000000000000001a784379d99db42000000
Arg [6] : 00000000000000000000000000000000000000000001a784379d99db42000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [8] : 4d61676963204261670000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [10] : 46454c4958000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.