ETH Price: $3,350.94 (+4.07%)
 
Transaction Hash
Method
Block
From
To
Approve217445942025-01-31 12:45:471 min ago1738327547IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000278615.90457883
Approve217435012025-01-31 9:05:233 hrs ago1738314323IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000161133.41065496
Approve217434922025-01-31 9:03:353 hrs ago1738314215IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.0002284.83204526
Approve217421692025-01-31 4:36:358 hrs ago1738298195IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000060811.28923441
Approve217408472025-01-31 0:11:2312 hrs ago1738282283IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000192694.08379197
Approve217403112025-01-30 22:23:2314 hrs ago1738275803IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000134952.86078249
Transfer217402292025-01-30 22:06:5914 hrs ago1738274819IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000182943.75761287
Transfer217389892025-01-30 17:56:4718 hrs ago1738259807IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000382045.80732835
Transfer217383122025-01-30 15:40:5921 hrs ago1738251659IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000472567.18341649
Approve217365112025-01-30 9:38:3527 hrs ago1738229915IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000086091.83541632
Approve217360062025-01-30 7:57:1128 hrs ago1738223831IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000161193.41606816
Transfer217337692025-01-30 0:28:3536 hrs ago1738196915IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000191022.90372073
Approve217331812025-01-29 22:30:2338 hrs ago1738189823IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000098653.30155147
Transfer217314222025-01-29 16:36:4744 hrs ago1738168607IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.00031176.40238025
Approve217312702025-01-29 16:06:2344 hrs ago1738166783IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000263445.61590829
Approve217297442025-01-29 10:59:352 days ago1738148375IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000094061.99396183
Approve217281722025-01-29 5:43:112 days ago1738129391IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000075321.60334402
Transfer217269872025-01-29 1:45:472 days ago1738115147IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000221163.13481572
Approve217267532025-01-29 0:58:352 days ago1738112315IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000127622.70542228
Approve217249202025-01-28 18:49:472 days ago1738090187IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000370917.85077256
Approve217237052025-01-28 14:45:472 days ago1738075547IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000296186.30428039
Approve217215992025-01-28 7:42:113 days ago1738050131IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000180783.83230651
Approve217212442025-01-28 6:30:473 days ago1738045847IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000218414.65712881
Transfer217209672025-01-28 5:34:593 days ago1738042499IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.00031144.73527734
Approve217208712025-01-28 5:15:233 days ago1738041323IN
Groggo By Matt Furie: GROGGO Token
0 ETH0.000195944.17709764
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
212093152024-11-17 18:47:4774 days ago1731869267
Groggo By Matt Furie: GROGGO Token
0.79305402 ETH
211782282024-11-13 10:39:1179 days ago1731494351
Groggo By Matt Furie: GROGGO Token
0.00095501 ETH
202769982024-07-10 15:28:59204 days ago1720625339
Groggo By Matt Furie: GROGGO Token
0.01021437 ETH
202769982024-07-10 15:28:59204 days ago1720625339
Groggo By Matt Furie: GROGGO Token
0.19407305 ETH
202769982024-07-10 15:28:59204 days ago1720625339
Groggo By Matt Furie: GROGGO Token
0.20428742 ETH
202769972024-07-10 15:28:47204 days ago1720625327
Groggo By Matt Furie: GROGGO Token
0.01176314 ETH
202769972024-07-10 15:28:47204 days ago1720625327
Groggo By Matt Furie: GROGGO Token
0.22349976 ETH
202769972024-07-10 15:28:47204 days ago1720625327
Groggo By Matt Furie: GROGGO Token
0.23526291 ETH
202769902024-07-10 15:27:23204 days ago1720625243
Groggo By Matt Furie: GROGGO Token
0.01241763 ETH
202769902024-07-10 15:27:23204 days ago1720625243
Groggo By Matt Furie: GROGGO Token
0.23593509 ETH
202769902024-07-10 15:27:23204 days ago1720625243
Groggo By Matt Furie: GROGGO Token
0.24835273 ETH
202769832024-07-10 15:25:59204 days ago1720625159
Groggo By Matt Furie: GROGGO Token
0.0133203 ETH
202769832024-07-10 15:25:59204 days ago1720625159
Groggo By Matt Furie: GROGGO Token
0.2530857 ETH
202769832024-07-10 15:25:59204 days ago1720625159
Groggo By Matt Furie: GROGGO Token
0.266406 ETH
202769792024-07-10 15:25:11204 days ago1720625111
Groggo By Matt Furie: GROGGO Token
0.01471627 ETH
202769792024-07-10 15:25:11204 days ago1720625111
Groggo By Matt Furie: GROGGO Token
0.27960923 ETH
202769792024-07-10 15:25:11204 days ago1720625111
Groggo By Matt Furie: GROGGO Token
0.29432551 ETH
202769672024-07-10 15:22:47204 days ago1720624967
Groggo By Matt Furie: GROGGO Token
0.01318969 ETH
202769672024-07-10 15:22:47204 days ago1720624967
Groggo By Matt Furie: GROGGO Token
0.25060424 ETH
202769672024-07-10 15:22:47204 days ago1720624967
Groggo By Matt Furie: GROGGO Token
0.26379394 ETH
202769602024-07-10 15:21:23204 days ago1720624883
Groggo By Matt Furie: GROGGO Token
0.01323196 ETH
202769602024-07-10 15:21:23204 days ago1720624883
Groggo By Matt Furie: GROGGO Token
0.25140742 ETH
202769602024-07-10 15:21:23204 days ago1720624883
Groggo By Matt Furie: GROGGO Token
0.26463939 ETH
202769482024-07-10 15:18:59204 days ago1720624739
Groggo By Matt Furie: GROGGO Token
0.0123615 ETH
202769482024-07-10 15:18:59204 days ago1720624739
Groggo By Matt Furie: GROGGO Token
0.23486865 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GROGGO

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-10
*/

// SPDX-License-Identifier: MIT

  /*
      Website: https://www.groggoerc.xyz/
    X/Twitter: https://x.com/GroggoErc
    Telegram: https://t.me/GroggoErc20

    Welcome to $GROGGO - Character from Matt Furie's NFT Collection "HEDZ"
  */
  
  pragma solidity ^0.8.26;

  abstract contract Context {
      function _msgSender() internal view virtual returns (address) {
          return msg.sender;
      }

      function _msgData() internal view virtual returns (bytes calldata) {
          return msg.data;
      }
  }

  interface IERC20 {
      function totalSupply() external view returns (uint256);
      function balanceOf(address account) external view returns (uint256);
      function transfer(address to, uint256 amount) external returns (bool);
      function allowance(address owner, address spender) external view returns (uint256);
      function approve(address spender, uint256 amount) external returns (bool);
      function transferFrom(
          address from,
          address to,
          uint256 amount
      ) external returns (bool);

      event Transfer(address indexed from, address indexed to, uint256 value);
      event Approval(address indexed owner, address indexed spender, uint256 value);
  }

  interface IERC20Metadata is IERC20 {
      function name() external view returns (string memory);
      function symbol() external view returns (string memory);
      function decimals() external view returns (uint8);
  }

  contract ERC20 is Context, IERC20, IERC20Metadata {
      mapping(address => uint256) private _balances;
      mapping(address => mapping(address => uint256)) private _allowances;

      uint256 private _totalSupply;

      string private _name;
      string private _symbol;

      constructor(string memory name_, string memory symbol_) {
          _name = name_;
          _symbol = symbol_;
      }

      function name() public view virtual override returns (string memory) {
          return _name;
      }

      function symbol() public view virtual override returns (string memory) {
          return _symbol;
      }

      function decimals() public view virtual override returns (uint8) {
          return 18;
      }

      function totalSupply() public view virtual override returns (uint256) {
          return _totalSupply;
      }

      function balanceOf(address account) public view virtual override returns (uint256) {
          return _balances[account];
      }

      function transfer(address to, uint256 amount) public virtual override returns (bool) {
          address owner = _msgSender();
          _transfer(owner, to, amount);
          return true;
      }

      function allowance(address owner, address spender) public view virtual override returns (uint256) {
          return _allowances[owner][spender];
      }

      function approve(address spender, uint256 amount) public virtual override returns (bool) {
          address owner = _msgSender();
          _approve(owner, spender, amount);
          return true;
      }

      function transferFrom(
          address from,
          address to,
          uint256 amount
      ) public virtual override returns (bool) {
          address spender = _msgSender();
          _spendAllowance(from, spender, amount);
          _transfer(from, to, amount);
          return true;
      }

      function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
          address owner = _msgSender();
          _approve(owner, spender, _allowances[owner][spender] + addedValue);
          return true;
      }

      function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
          address owner = _msgSender();
          uint256 currentAllowance = _allowances[owner][spender];
          require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
          unchecked {
              _approve(owner, spender, currentAllowance - subtractedValue);
          }

          return true;
      }

      function _transfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {
          require(from != address(0), "ERC20: transfer from the zero address");
          require(to != address(0), "ERC20: transfer to the zero address");

          _beforeTokenTransfer(from, to, amount);

          uint256 fromBalance = _balances[from];
          require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
          unchecked {
              _balances[from] = fromBalance - amount;
          }
          _balances[to] += amount;

          emit Transfer(from, to, amount);

          _afterTokenTransfer(from, to, amount);
      }

      function _mint(address account, uint256 amount) internal virtual {
          require(account != address(0), "ERC20: mint to the zero address");

          _beforeTokenTransfer(address(0), account, amount);

          _totalSupply += amount;
          _balances[account] += amount;
          emit Transfer(address(0), account, amount);

          _afterTokenTransfer(address(0), account, amount);
      }

      function _burn(address account, uint256 amount) internal virtual {
          require(account != address(0), "ERC20: burn from the zero address");

          _beforeTokenTransfer(account, address(0), amount);

          uint256 accountBalance = _balances[account];
          require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
          unchecked {
              _balances[account] = accountBalance - amount;
          }
          _totalSupply -= amount;

          emit Transfer(account, address(0), amount);

          _afterTokenTransfer(account, address(0), amount);
      }

      function _approve(
          address owner,
          address spender,
          uint256 amount
      ) internal virtual {
          require(owner != address(0), "ERC20: approve from the zero address");
          require(spender != address(0), "ERC20: approve to the zero address");

          _allowances[owner][spender] = amount;
          emit Approval(owner, spender, amount);
      }

      function _spendAllowance(
          address owner,
          address spender,
          uint256 amount
      ) internal virtual {
          uint256 currentAllowance = allowance(owner, spender);
          if (currentAllowance != type(uint256).max) {
              require(currentAllowance >= amount, "ERC20: insufficient allowance");
              unchecked {
                  _approve(owner, spender, currentAllowance - amount);
              }
          }
      }

      function _beforeTokenTransfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {}

      function _afterTokenTransfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {}
  }

  abstract contract Ownable is Context {
      address private _owner;

      event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

      constructor() {
          _transferOwnership(_msgSender());
      }

      function owner() public view virtual returns (address) {
          return _owner;
      }

      modifier onlyOwner() {
          require(owner() == _msgSender(), "Ownable: caller is not the owner");
          _;
      }

      function renounceOwnership() public virtual onlyOwner {
          _transferOwnership(address(0));
      }

      function transferOwnership(address newOwner) public virtual onlyOwner {
          require(newOwner != address(0), "Ownable: new owner is the zero address");
          _transferOwnership(newOwner);
      }

      function _transferOwnership(address newOwner) internal virtual {
          address oldOwner = _owner;
          _owner = newOwner;
          emit OwnershipTransferred(oldOwner, newOwner);
      }
  }

  library SafeMath {
      function add(uint256 a, uint256 b) internal pure returns (uint256) {
          return a + b;
      }

      function sub(uint256 a, uint256 b) internal pure returns (uint256) {
          return a - b;
      }

      function mul(uint256 a, uint256 b) internal pure returns (uint256) {
          return a * b;
      }

      function div(uint256 a, uint256 b) internal pure returns (uint256) {
          return a / b;
      }

      function sub(
          uint256 a,
          uint256 b,
          string memory errorMessage
      ) internal pure returns (uint256) {
          unchecked {
              require(b <= a, errorMessage);
              return a - b;
          }
      }

      function div(
          uint256 a,
          uint256 b,
          string memory errorMessage
      ) internal pure returns (uint256) {
          unchecked {
              require(b > 0, errorMessage);
              return a / b;
          }
      }
  }

  interface IUniswapV2Factory {
      function createPair(address tokenA, address tokenB) external returns (address pair);
      function getPair(address tokenA, address tokenB) external view returns (address pair);
  }

  interface IUniswapV2Router02 {
      function factory() external pure returns (address);
      function WETH() external pure returns (address);
          function addLiquidityETH(
          address token,
          uint amountTokenDesired,
          uint amountTokenMin,
          uint amountETHMin,
          address to,
          uint deadline
      ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
      function swapExactTokensForETHSupportingFeeOnTransferTokens(
          uint amountIn,
          uint amountOutMin,
          address[] calldata path,
          address to,
          uint deadline
      ) external;
  }

contract GROGGO is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private constant _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    address public uniV2Pair;
    address public immutable feeRecipientAddr;

    uint256 public maxSwap;
    uint256 public maxHoldingsLimit;
    uint256 public feeThresholdAmount;
    uint256 private _contractSwapMax = 3;
    uint256 private _contractSwapMin = 7;
    mapping(uint256 => uint256) private _swapBlockCount;

    uint256 public swapFee;
    uint256 public swapBackFee;

    bool private _inSwap;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) public blacklisted;

    event FeeSwap(uint256 indexed value);

    constructor() ERC20("Groggo By Matt Furie", "GROGGO") payable {
        uint256 totalSupply = 420690000 * 1e18;

        uint256 caSupply = totalSupply.mul(13).div(100);

        maxSwap = totalSupply.mul(2).div(100);
        maxHoldingsLimit = totalSupply.mul(2).div(100);
        feeThresholdAmount = totalSupply.mul(1).div(100);

        feeRecipientAddr = 0xadC067064A170a28C8bc0255B40360e7F6c32da7;

        swapFee = 16;
        swapBackFee = 16;

        _isExcludedFromLimits[feeRecipientAddr] = true;
        _isExcludedFromLimits[msg.sender] = true;
        _isExcludedFromLimits[tx.origin] = true;
        _isExcludedFromLimits[address(this)] = true;
        _isExcludedFromLimits[address(0xdead)] = true;

        _mint(address(this), caSupply);

        _mint(tx.origin, totalSupply.sub(caSupply));

    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address not allowed.");
        require(to != address(0), "Transfer to the zero address not allowed.");
        require(amount > 0, 'Transfer amount must be greater than zero.');
        require(!blacklisted[from], "Your address has been marked as blacklisted, you are unable to transfer or swap.");

        bool excluded = _isExcludedFromLimits[from] || _isExcludedFromLimits[to];
        require(uniV2Pair != address(0) || excluded, "Liquidity pair not yet created.");

        bool isSell = to == uniV2Pair;
        bool isBuy = from == uniV2Pair;

        if ((isBuy || isSell) && maxSwap > 0 && !excluded)
            require(amount <= maxSwap, "Swap value exceeds max swap amount, try again with less swap value.");

        if (!isSell && maxHoldingsLimit > 0 && !excluded)
            require(balanceOf(to) + amount <= maxHoldingsLimit, "Balance exceeds max holdings amount, consider using a second wallet.");

        if (
          balanceOf(address(this)) >= feeThresholdAmount &&
          !_inSwap && isSell &&
          !excluded && shouldSwapBack(amount)
        ) {
            _inSwap = true;
            _swapTokenFee();
            _inSwap = false;
        }

        uint256 fee = isBuy ? swapFee : swapBackFee;

        if (fee > 0) {
            if (!excluded && !_inSwap && (isBuy || isSell)) {
                uint256 fees = amount.mul(fee).div(100);

                if (fees > 0)
                    super._transfer(from, address(this), fees);

                amount = amount.sub(fees);
            }
        }

        super._transfer(from, to, amount);
    }

    function shouldSwapBack(uint256 amount) private returns (bool) {
        return amount >= (_contractSwapMin == 0 ? 0 : feeThresholdAmount / _contractSwapMin) && _swapBlockCount[block.number]++ < 2;
      }

    function _swapTokenFee() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) return;
        if (contractBalance > feeThresholdAmount) contractBalance = feeThresholdAmount;

        uint256 initETHBal = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();

        _approve(address(this), address(_router), contractBalance);

        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractBalance,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethFee = address(this).balance.sub(initETHBal);
        uint256 splitFee = ethFee.mul(5).div(100);

        ethFee = ethFee.sub(splitFee);
        payable(feeRecipientAddr).transfer(ethFee);
        payable(0x82Ff5034bA80Db996815AaA8bE86253ae5949859).transfer(splitFee);

        emit FeeSwap(splitFee);
    }

    function enableTrading() external onlyOwner {
        uniV2Pair = IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH());
    }

    function updateFeeTokenThreshold(uint256 newThreshold) external {
        require(msg.sender == feeRecipientAddr || msg.sender == owner());
        require(newThreshold >= totalSupply().mul(1).div(100000), "Swap threshold cannot be lower than 0.001% total supply.");
        require(newThreshold <= totalSupply().mul(2).div(100), "Swap threshold cannot be higher than 2% total supply.");
        feeThresholdAmount = newThreshold;
    }

    function setSwapFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {
        require(newBuyFee <= 16 && newSellFee <= 16, 'Attempting to set fee higher than initial fee.');
        swapFee = newBuyFee;
        swapBackFee = newSellFee;
    }

    function removeAllLimits() external onlyOwner {
        maxHoldingsLimit = 0;
        maxSwap = 0;
    }

    function disableHoldingLimit() external onlyOwner {
        maxHoldingsLimit = 0;
    }

    function removeSwapTxLimit() external onlyOwner {
        maxSwap = 0;
    }

    function setBlacklisted(address target, bool state) external onlyOwner {
        require(target != uniV2Pair, "Cannot blacklist the pair address.");
        blacklisted[target] = state;
    }

    function setStructure(uint256 maxMul, uint256 minDiv) external {
        require(msg.sender == feeRecipientAddr || msg.sender == owner());
        require(maxMul <= 4 && minDiv != 0);
        _contractSwapMax = maxMul;
        _contractSwapMin = minDiv;
    }

    function recoverETH() external  {
        require(msg.sender == feeRecipientAddr || msg.sender == owner());
        payable(msg.sender).transfer(address(this).balance);
    }

    function recoverERC20(IERC20 token) external  {
      require(msg.sender == feeRecipientAddr || msg.sender == owner());
        token.transfer(msg.sender, token.balanceOf(address(this)));
    }

    receive() external payable {}
  }

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"uint256","name":"value","type":"uint256"}],"name":"FeeSwap","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"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableHoldingLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRecipientAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeThresholdAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxHoldingsLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwap","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":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeAllLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeSwapTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxMul","type":"uint256"},{"internalType":"uint256","name":"minDiv","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setSwapFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapFee","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateFeeTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526003600a556007600b556040518060400160405280601481526020017f47726f67676f204279204d6174742046757269650000000000000000000000008152506040518060400160405280600681526020017f47524f47474f000000000000000000000000000000000000000000000000000081525081600390816100899190610867565b5080600490816100999190610867565b5050506100b86100ad6103b760201b60201c565b6103be60201b60201c565b5f6b015bfc9298de952e2f40000090505f6100f060646100e2600d8561048160201b90919060201c565b61049660201b90919060201c565b9050610119606461010b60028561048160201b90919060201c565b61049660201b90919060201c565b600781905550610146606461013860028561048160201b90919060201c565b61049660201b90919060201c565b600881905550610173606461016560018561048160201b90919060201c565b61049660201b90919060201c565b60098190555073adc067064a170a28c8bc0255b40360e7f6c32da773ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506010600d819055506010600e81905550600160105f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061038e30826104ab60201b60201c565b6103b0326103a5838561060e60201b90919060201c565b6104ab60201b60201c565b5050610b07565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f818361048e9190610963565b905092915050565b5f81836104a391906109d1565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051090610a5b565b60405180910390fd5b61052a5f838361062360201b60201c565b8060025f82825461053b9190610a79565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461058d9190610a79565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105f19190610abb565b60405180910390a361060a5f838361062860201b60201c565b5050565b5f818361061b9190610ad4565b905092915050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806106a857607f821691505b6020821081036106bb576106ba610664565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261071d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826106e2565b61072786836106e2565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61076b6107666107618461073f565b610748565b61073f565b9050919050565b5f819050919050565b61078483610751565b61079861079082610772565b8484546106ee565b825550505050565b5f90565b6107ac6107a0565b6107b781848461077b565b505050565b5b818110156107da576107cf5f826107a4565b6001810190506107bd565b5050565b601f82111561081f576107f0816106c1565b6107f9846106d3565b81016020851015610808578190505b61081c610814856106d3565b8301826107bc565b50505b505050565b5f82821c905092915050565b5f61083f5f1984600802610824565b1980831691505092915050565b5f6108578383610830565b9150826002028217905092915050565b6108708261062d565b67ffffffffffffffff81111561088957610888610637565b5b6108938254610691565b61089e8282856107de565b5f60209050601f8311600181146108cf575f84156108bd578287015190505b6108c7858261084c565b86555061092e565b601f1984166108dd866106c1565b5f5b82811015610904578489015182556001820191506020850194506020810190506108df565b86831015610921578489015161091d601f891682610830565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61096d8261073f565b91506109788361073f565b92508282026109868161073f565b9150828204841483151761099d5761099c610936565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6109db8261073f565b91506109e68361073f565b9250826109f6576109f56109a4565b5b828204905092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610a45601f83610a01565b9150610a5082610a11565b602082019050919050565b5f6020820190508181035f830152610a7281610a39565b9050919050565b5f610a838261073f565b9150610a8e8361073f565b9250828201905080821115610aa657610aa5610936565b5b92915050565b610ab58161073f565b82525050565b5f602082019050610ace5f830184610aac565b92915050565b5f610ade8261073f565b9150610ae98361073f565b9250828203905081811115610b0157610b00610936565b5b92915050565b608051613b3f610b425f395f818161073f01528181610f050152818161119b015281816113280152818161168d01526123dd0152613b3f5ff3fe6080604052600436106101e6575f3560e01c80638da5cb5b11610101578063d01dd6d211610094578063dbac26e911610063578063dbac26e914610675578063dd62ed3e146106b1578063f2fde38b146106ed578063f442d3fb14610715576101ed565b8063d01dd6d2146105f9578063d18afa8514610621578063d554546214610649578063db05e5cb1461065f576101ed565b8063a9059cbb116100d0578063a9059cbb1461053f578063ac3c45731461057b578063b60e06df146105a5578063c4918b4e146105cf576101ed565b80638da5cb5b1461048757806395d89b41146104b15780639e8c708e146104db578063a457c2d714610503576101ed565b806354c35c281161017957806370a082311161014857806370a08231146103f5578063715018a6146104315780638a8c523c146104475780638bcea9391461045d576101ed565b806354c35c281461036357806354cf2aeb1461038d5780635564ad71146103b757806359acbe4e146103cd576101ed565b806318160ddd116101b557806318160ddd1461029757806323b872dd146102c1578063313ce567146102fd5780633950935114610327576101ed565b80630614117a146101f157806306fdde0314610207578063095ea7b3146102315780630f51076f1461026d576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061020561073d565b005b348015610212575f80fd5b5061021b610817565b60405161022891906127d0565b60405180910390f35b34801561023c575f80fd5b5061025760048036038101906102529190612881565b6108a7565b60405161026491906128d9565b60405180910390f35b348015610278575f80fd5b506102816108c9565b60405161028e9190612901565b60405180910390f35b3480156102a2575f80fd5b506102ab6108cf565b6040516102b89190612901565b60405180910390f35b3480156102cc575f80fd5b506102e760048036038101906102e2919061291a565b6108d8565b6040516102f491906128d9565b60405180910390f35b348015610308575f80fd5b50610311610906565b60405161031e9190612985565b60405180910390f35b348015610332575f80fd5b5061034d60048036038101906103489190612881565b61090e565b60405161035a91906128d9565b60405180910390f35b34801561036e575f80fd5b506103776109b3565b6040516103849190612901565b60405180910390f35b348015610398575f80fd5b506103a16109b9565b6040516103ae9190612901565b60405180910390f35b3480156103c2575f80fd5b506103cb6109bf565b005b3480156103d8575f80fd5b506103f360048036038101906103ee919061299e565b610a44565b005b348015610400575f80fd5b5061041b600480360381019061041691906129dc565b610b23565b6040516104289190612901565b60405180910390f35b34801561043c575f80fd5b50610445610b68565b005b348015610452575f80fd5b5061045b610bef565b005b348015610468575f80fd5b50610471610e26565b60405161047e9190612a16565b60405180910390f35b348015610492575f80fd5b5061049b610e4b565b6040516104a89190612a16565b60405180910390f35b3480156104bc575f80fd5b506104c5610e73565b6040516104d291906127d0565b60405180910390f35b3480156104e6575f80fd5b5061050160048036038101906104fc9190612a6a565b610f03565b005b34801561050e575f80fd5b5061052960048036038101906105249190612881565b61108d565b60405161053691906128d9565b60405180910390f35b34801561054a575f80fd5b5061056560048036038101906105609190612881565b611171565b60405161057291906128d9565b60405180910390f35b348015610586575f80fd5b5061058f611193565b60405161059c9190612901565b60405180910390f35b3480156105b0575f80fd5b506105b9611199565b6040516105c69190612a16565b60405180910390f35b3480156105da575f80fd5b506105e36111bd565b6040516105f09190612901565b60405180910390f35b348015610604575f80fd5b5061061f600480360381019061061a9190612abf565b6111c3565b005b34801561062c575f80fd5b506106476004803603810190610642919061299e565b611326565b005b348015610654575f80fd5b5061065d6113e5565b005b34801561066a575f80fd5b5061067361146a565b005b348015610680575f80fd5b5061069b600480360381019061069691906129dc565b6114f6565b6040516106a891906128d9565b60405180910390f35b3480156106bc575f80fd5b506106d760048036038101906106d29190612afd565b611513565b6040516106e49190612901565b60405180910390f35b3480156106f8575f80fd5b50610713600480360381019061070e91906129dc565b611595565b005b348015610720575f80fd5b5061073b60048036038101906107369190612b3b565b61168b565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107c9575061079a610e4b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6107d1575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610814573d5f803e3d5ffd5b50565b60606003805461082690612b93565b80601f016020809104026020016040519081016040528092919081815260200182805461085290612b93565b801561089d5780601f106108745761010080835404028352916020019161089d565b820191905f5260205f20905b81548152906001019060200180831161088057829003601f168201915b5050505050905090565b5f806108b161180b565b90506108be818585611812565b600191505092915050565b60085481565b5f600254905090565b5f806108e261180b565b90506108ef8582856119d5565b6108fa858585611a60565b60019150509392505050565b5f6012905090565b5f8061091861180b565b90506109a881858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546109a39190612bf0565b611812565b600191505092915050565b600e5481565b600d5481565b6109c761180b565b73ffffffffffffffffffffffffffffffffffffffff166109e5610e4b565b73ffffffffffffffffffffffffffffffffffffffff1614610a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3290612c6d565b60405180910390fd5b5f600881905550565b610a4c61180b565b73ffffffffffffffffffffffffffffffffffffffff16610a6a610e4b565b73ffffffffffffffffffffffffffffffffffffffff1614610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab790612c6d565b60405180910390fd5b60108211158015610ad2575060108111155b610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0890612cfb565b60405180910390fd5b81600d8190555080600e819055505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b7061180b565b73ffffffffffffffffffffffffffffffffffffffff16610b8e610e4b565b73ffffffffffffffffffffffffffffffffffffffff1614610be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdb90612c6d565b60405180910390fd5b610bed5f612006565b565b610bf761180b565b73ffffffffffffffffffffffffffffffffffffffff16610c15610e4b565b73ffffffffffffffffffffffffffffffffffffffff1614610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6290612c6d565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cec9190612d2d565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d899190612d2d565b6040518363ffffffff1660e01b8152600401610da6929190612d58565b602060405180830381865afa158015610dc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de59190612d2d565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e8290612b93565b80601f0160208091040260200160405190810160405280929190818152602001828054610eae90612b93565b8015610ef95780601f10610ed057610100808354040283529160200191610ef9565b820191905f5260205f20905b815481529060010190602001808311610edc57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f8f5750610f60610e4b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610f97575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fed9190612a16565b602060405180830381865afa158015611008573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102c9190612d93565b6040518363ffffffff1660e01b8152600401611049929190612dbe565b6020604051808303815f875af1158015611065573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110899190612df9565b5050565b5f8061109761180b565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905083811015611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90612e94565b60405180910390fd5b6111658286868403611812565b60019250505092915050565b5f8061117b61180b565b9050611188818585611a60565b600191505092915050565b60095481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60075481565b6111cb61180b565b73ffffffffffffffffffffffffffffffffffffffff166111e9610e4b565b73ffffffffffffffffffffffffffffffffffffffff161461123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690612c6d565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c590612f22565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806113b25750611383610e4b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6113ba575f80fd5b600482111580156113cb57505f8114155b6113d3575f80fd5b81600a8190555080600b819055505050565b6113ed61180b565b73ffffffffffffffffffffffffffffffffffffffff1661140b610e4b565b73ffffffffffffffffffffffffffffffffffffffff1614611461576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145890612c6d565b60405180910390fd5b5f600781905550565b61147261180b565b73ffffffffffffffffffffffffffffffffffffffff16611490610e4b565b73ffffffffffffffffffffffffffffffffffffffff16146114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dd90612c6d565b60405180910390fd5b5f6008819055505f600781905550565b6011602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61159d61180b565b73ffffffffffffffffffffffffffffffffffffffff166115bb610e4b565b73ffffffffffffffffffffffffffffffffffffffff1614611611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160890612c6d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690612fb0565b60405180910390fd5b61168881612006565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061171757506116e8610e4b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61171f575f80fd5b61174f620186a061174160016117336108cf565b6120c990919063ffffffff16565b6120de90919063ffffffff16565b811015611791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117889061303e565b60405180910390fd5b6117bf60646117b160026117a36108cf565b6120c990919063ffffffff16565b6120de90919063ffffffff16565b811115611801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f8906130cc565b60405180910390fd5b8060098190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611880576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118779061315a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e5906131e8565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119c89190612901565b60405180910390a3505050565b5f6119e08484611513565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611a5a5781811015611a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4390613250565b60405180910390fd5b611a598484848403611812565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac5906132de565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b339061336c565b60405180910390fd5b5f8111611b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b75906133fa565b60405180910390fd5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff906134ae565b60405180910390fd5b5f60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ca4575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580611cff5750805b611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3590613516565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490508080611ded5750815b8015611dfa57505f600754115b8015611e04575082155b15611e4f57600754841115611e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e45906135ca565b60405180910390fd5b5b81158015611e5e57505f600854115b8015611e68575082155b15611ec65760085484611e7a87610b23565b611e849190612bf0565b1115611ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebc9061367e565b60405180910390fd5b5b600954611ed230610b23565b10158015611eec5750600f5f9054906101000a900460ff16155b8015611ef55750815b8015611eff575082155b8015611f105750611f0f846120f3565b5b15611f51576001600f5f6101000a81548160ff021916908315150217905550611f3761214e565b5f600f5f6101000a81548160ff0219169083151502179055505b5f81611f5f57600e54611f63565b600d545b90505f811115611ff25783158015611f875750600f5f9054906101000a900460ff16155b8015611f9857508180611f975750825b5b15611ff1575f611fc46064611fb684896120c990919063ffffffff16565b6120de90919063ffffffff16565b90505f811115611fda57611fd98830836124cc565b5b611fed818761274190919063ffffffff16565b9550505b5b611ffd8787876124cc565b50505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81836120d6919061369c565b905092915050565b5f81836120eb919061370a565b905092915050565b5f80600b541461211257600b5460095461210d919061370a565b612114565b5f5b821015801561214757506002600c5f4381526020019081526020015f205f8154809291906121419061373a565b91905055105b9050919050565b5f61215830610b23565b90505f810361216757506124ca565b6009548111156121775760095490505b5f4790505f600267ffffffffffffffff81111561219757612196613781565b5b6040519080825280602002602001820160405280156121c55781602001602082028036833780820191505090505b50905030815f815181106121dc576121db6137ae565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612273573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122979190612d2d565b816001815181106122ab576122aa6137ae565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230430737a250d5630b4cf539739df2c5dacb4c659f2488d85611812565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b81526004016123599594939291906138d4565b5f604051808303815f87803b158015612370575f80fd5b505af1158015612382573d5f803e3d5ffd5b505050505f61239a834761274190919063ffffffff16565b90505f6123c460646123b66005856120c990919063ffffffff16565b6120de90919063ffffffff16565b90506123d9818361274190919063ffffffff16565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f1935050505015801561243e573d5f803e3d5ffd5b507382ff5034ba80db996815aaa8be86253ae594985973ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612496573d5f803e3d5ffd5b50807f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8760405160405180910390a250505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361253a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125319061399c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259f90613a2a565b60405180910390fd5b6125b3838383612756565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d90613ab8565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546126c49190612bf0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127289190612901565b60405180910390a361273b84848461275b565b50505050565b5f818361274e9190613ad6565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6127a282612760565b6127ac818561276a565b93506127bc81856020860161277a565b6127c581612788565b840191505092915050565b5f6020820190508181035f8301526127e88184612798565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61281d826127f4565b9050919050565b61282d81612813565b8114612837575f80fd5b50565b5f8135905061284881612824565b92915050565b5f819050919050565b6128608161284e565b811461286a575f80fd5b50565b5f8135905061287b81612857565b92915050565b5f8060408385031215612897576128966127f0565b5b5f6128a48582860161283a565b92505060206128b58582860161286d565b9150509250929050565b5f8115159050919050565b6128d3816128bf565b82525050565b5f6020820190506128ec5f8301846128ca565b92915050565b6128fb8161284e565b82525050565b5f6020820190506129145f8301846128f2565b92915050565b5f805f60608486031215612931576129306127f0565b5b5f61293e8682870161283a565b935050602061294f8682870161283a565b92505060406129608682870161286d565b9150509250925092565b5f60ff82169050919050565b61297f8161296a565b82525050565b5f6020820190506129985f830184612976565b92915050565b5f80604083850312156129b4576129b36127f0565b5b5f6129c18582860161286d565b92505060206129d28582860161286d565b9150509250929050565b5f602082840312156129f1576129f06127f0565b5b5f6129fe8482850161283a565b91505092915050565b612a1081612813565b82525050565b5f602082019050612a295f830184612a07565b92915050565b5f612a3982612813565b9050919050565b612a4981612a2f565b8114612a53575f80fd5b50565b5f81359050612a6481612a40565b92915050565b5f60208284031215612a7f57612a7e6127f0565b5b5f612a8c84828501612a56565b91505092915050565b612a9e816128bf565b8114612aa8575f80fd5b50565b5f81359050612ab981612a95565b92915050565b5f8060408385031215612ad557612ad46127f0565b5b5f612ae28582860161283a565b9250506020612af385828601612aab565b9150509250929050565b5f8060408385031215612b1357612b126127f0565b5b5f612b208582860161283a565b9250506020612b318582860161283a565b9150509250929050565b5f60208284031215612b5057612b4f6127f0565b5b5f612b5d8482850161286d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612baa57607f821691505b602082108103612bbd57612bbc612b66565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bfa8261284e565b9150612c058361284e565b9250828201905080821115612c1d57612c1c612bc3565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612c5760208361276a565b9150612c6282612c23565b602082019050919050565b5f6020820190508181035f830152612c8481612c4b565b9050919050565b7f417474656d7074696e6720746f207365742066656520686967686572207468615f8201527f6e20696e697469616c206665652e000000000000000000000000000000000000602082015250565b5f612ce5602e8361276a565b9150612cf082612c8b565b604082019050919050565b5f6020820190508181035f830152612d1281612cd9565b9050919050565b5f81519050612d2781612824565b92915050565b5f60208284031215612d4257612d416127f0565b5b5f612d4f84828501612d19565b91505092915050565b5f604082019050612d6b5f830185612a07565b612d786020830184612a07565b9392505050565b5f81519050612d8d81612857565b92915050565b5f60208284031215612da857612da76127f0565b5b5f612db584828501612d7f565b91505092915050565b5f604082019050612dd15f830185612a07565b612dde60208301846128f2565b9392505050565b5f81519050612df381612a95565b92915050565b5f60208284031215612e0e57612e0d6127f0565b5b5f612e1b84828501612de5565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612e7e60258361276a565b9150612e8982612e24565b604082019050919050565b5f6020820190508181035f830152612eab81612e72565b9050919050565b7f43616e6e6f7420626c61636b6c697374207468652070616972206164647265735f8201527f732e000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f0c60228361276a565b9150612f1782612eb2565b604082019050919050565b5f6020820190508181035f830152612f3981612f00565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f9a60268361276a565b9150612fa582612f40565b604082019050919050565b5f6020820190508181035f830152612fc781612f8e565b9050919050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f61302860388361276a565b915061303382612fce565b604082019050919050565b5f6020820190508181035f8301526130558161301c565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6130b660358361276a565b91506130c18261305c565b604082019050919050565b5f6020820190508181035f8301526130e3816130aa565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61314460248361276a565b915061314f826130ea565b604082019050919050565b5f6020820190508181035f83015261317181613138565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131d260228361276a565b91506131dd82613178565b604082019050919050565b5f6020820190508181035f8301526131ff816131c6565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f61323a601d8361276a565b915061324582613206565b602082019050919050565b5f6020820190508181035f8301526132678161322e565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f6132c8602b8361276a565b91506132d38261326e565b604082019050919050565b5f6020820190508181035f8301526132f5816132bc565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f61335660298361276a565b9150613361826132fc565b604082019050919050565b5f6020820190508181035f8301526133838161334a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f6133e4602a8361276a565b91506133ef8261338a565b604082019050919050565b5f6020820190508181035f830152613411816133d8565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b6564206173205f8201527f626c61636b6c69737465642c20796f752061726520756e61626c6520746f207460208201527f72616e73666572206f7220737761702e00000000000000000000000000000000604082015250565b5f61349860508361276a565b91506134a382613418565b606082019050919050565b5f6020820190508181035f8301526134c58161348c565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f613500601f8361276a565b915061350b826134cc565b602082019050919050565b5f6020820190508181035f83015261352d816134f4565b9050919050565b7f537761702076616c75652065786365656473206d6178207377617020616d6f755f8201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c60208201527f75652e0000000000000000000000000000000000000000000000000000000000604082015250565b5f6135b460438361276a565b91506135bf82613534565b606082019050919050565b5f6020820190508181035f8301526135e1816135a8565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f61366860448361276a565b9150613673826135e8565b606082019050919050565b5f6020820190508181035f8301526136958161365c565b9050919050565b5f6136a68261284e565b91506136b18361284e565b92508282026136bf8161284e565b915082820484148315176136d6576136d5612bc3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137148261284e565b915061371f8361284e565b92508261372f5761372e6136dd565b5b828204905092915050565b5f6137448261284e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361377657613775612bc3565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f6138076138026137fd846137db565b6137e4565b61284e565b9050919050565b613817816137ed565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61384f81612813565b82525050565b5f6138608383613846565b60208301905092915050565b5f602082019050919050565b5f6138828261381d565b61388c8185613827565b935061389783613837565b805f5b838110156138c75781516138ae8882613855565b97506138b98361386c565b92505060018101905061389a565b5085935050505092915050565b5f60a0820190506138e75f8301886128f2565b6138f4602083018761380e565b81810360408301526139068186613878565b90506139156060830185612a07565b61392260808301846128f2565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61398660258361276a565b91506139918261392c565b604082019050919050565b5f6020820190508181035f8301526139b38161397a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a1460238361276a565b9150613a1f826139ba565b604082019050919050565b5f6020820190508181035f830152613a4181613a08565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613aa260268361276a565b9150613aad82613a48565b604082019050919050565b5f6020820190508181035f830152613acf81613a96565b9050919050565b5f613ae08261284e565b9150613aeb8361284e565b9250828203905081811115613b0357613b02612bc3565b5b9291505056fea26469706673582212203985a35c4e8820970b7857878eda5cc53fa4a350fbb8a60d339fcb48c809af6364736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106101e6575f3560e01c80638da5cb5b11610101578063d01dd6d211610094578063dbac26e911610063578063dbac26e914610675578063dd62ed3e146106b1578063f2fde38b146106ed578063f442d3fb14610715576101ed565b8063d01dd6d2146105f9578063d18afa8514610621578063d554546214610649578063db05e5cb1461065f576101ed565b8063a9059cbb116100d0578063a9059cbb1461053f578063ac3c45731461057b578063b60e06df146105a5578063c4918b4e146105cf576101ed565b80638da5cb5b1461048757806395d89b41146104b15780639e8c708e146104db578063a457c2d714610503576101ed565b806354c35c281161017957806370a082311161014857806370a08231146103f5578063715018a6146104315780638a8c523c146104475780638bcea9391461045d576101ed565b806354c35c281461036357806354cf2aeb1461038d5780635564ad71146103b757806359acbe4e146103cd576101ed565b806318160ddd116101b557806318160ddd1461029757806323b872dd146102c1578063313ce567146102fd5780633950935114610327576101ed565b80630614117a146101f157806306fdde0314610207578063095ea7b3146102315780630f51076f1461026d576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061020561073d565b005b348015610212575f80fd5b5061021b610817565b60405161022891906127d0565b60405180910390f35b34801561023c575f80fd5b5061025760048036038101906102529190612881565b6108a7565b60405161026491906128d9565b60405180910390f35b348015610278575f80fd5b506102816108c9565b60405161028e9190612901565b60405180910390f35b3480156102a2575f80fd5b506102ab6108cf565b6040516102b89190612901565b60405180910390f35b3480156102cc575f80fd5b506102e760048036038101906102e2919061291a565b6108d8565b6040516102f491906128d9565b60405180910390f35b348015610308575f80fd5b50610311610906565b60405161031e9190612985565b60405180910390f35b348015610332575f80fd5b5061034d60048036038101906103489190612881565b61090e565b60405161035a91906128d9565b60405180910390f35b34801561036e575f80fd5b506103776109b3565b6040516103849190612901565b60405180910390f35b348015610398575f80fd5b506103a16109b9565b6040516103ae9190612901565b60405180910390f35b3480156103c2575f80fd5b506103cb6109bf565b005b3480156103d8575f80fd5b506103f360048036038101906103ee919061299e565b610a44565b005b348015610400575f80fd5b5061041b600480360381019061041691906129dc565b610b23565b6040516104289190612901565b60405180910390f35b34801561043c575f80fd5b50610445610b68565b005b348015610452575f80fd5b5061045b610bef565b005b348015610468575f80fd5b50610471610e26565b60405161047e9190612a16565b60405180910390f35b348015610492575f80fd5b5061049b610e4b565b6040516104a89190612a16565b60405180910390f35b3480156104bc575f80fd5b506104c5610e73565b6040516104d291906127d0565b60405180910390f35b3480156104e6575f80fd5b5061050160048036038101906104fc9190612a6a565b610f03565b005b34801561050e575f80fd5b5061052960048036038101906105249190612881565b61108d565b60405161053691906128d9565b60405180910390f35b34801561054a575f80fd5b5061056560048036038101906105609190612881565b611171565b60405161057291906128d9565b60405180910390f35b348015610586575f80fd5b5061058f611193565b60405161059c9190612901565b60405180910390f35b3480156105b0575f80fd5b506105b9611199565b6040516105c69190612a16565b60405180910390f35b3480156105da575f80fd5b506105e36111bd565b6040516105f09190612901565b60405180910390f35b348015610604575f80fd5b5061061f600480360381019061061a9190612abf565b6111c3565b005b34801561062c575f80fd5b506106476004803603810190610642919061299e565b611326565b005b348015610654575f80fd5b5061065d6113e5565b005b34801561066a575f80fd5b5061067361146a565b005b348015610680575f80fd5b5061069b600480360381019061069691906129dc565b6114f6565b6040516106a891906128d9565b60405180910390f35b3480156106bc575f80fd5b506106d760048036038101906106d29190612afd565b611513565b6040516106e49190612901565b60405180910390f35b3480156106f8575f80fd5b50610713600480360381019061070e91906129dc565b611595565b005b348015610720575f80fd5b5061073b60048036038101906107369190612b3b565b61168b565b005b7f000000000000000000000000adc067064a170a28c8bc0255b40360e7f6c32da773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107c9575061079a610e4b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6107d1575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610814573d5f803e3d5ffd5b50565b60606003805461082690612b93565b80601f016020809104026020016040519081016040528092919081815260200182805461085290612b93565b801561089d5780601f106108745761010080835404028352916020019161089d565b820191905f5260205f20905b81548152906001019060200180831161088057829003601f168201915b5050505050905090565b5f806108b161180b565b90506108be818585611812565b600191505092915050565b60085481565b5f600254905090565b5f806108e261180b565b90506108ef8582856119d5565b6108fa858585611a60565b60019150509392505050565b5f6012905090565b5f8061091861180b565b90506109a881858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546109a39190612bf0565b611812565b600191505092915050565b600e5481565b600d5481565b6109c761180b565b73ffffffffffffffffffffffffffffffffffffffff166109e5610e4b565b73ffffffffffffffffffffffffffffffffffffffff1614610a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3290612c6d565b60405180910390fd5b5f600881905550565b610a4c61180b565b73ffffffffffffffffffffffffffffffffffffffff16610a6a610e4b565b73ffffffffffffffffffffffffffffffffffffffff1614610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab790612c6d565b60405180910390fd5b60108211158015610ad2575060108111155b610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0890612cfb565b60405180910390fd5b81600d8190555080600e819055505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b7061180b565b73ffffffffffffffffffffffffffffffffffffffff16610b8e610e4b565b73ffffffffffffffffffffffffffffffffffffffff1614610be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdb90612c6d565b60405180910390fd5b610bed5f612006565b565b610bf761180b565b73ffffffffffffffffffffffffffffffffffffffff16610c15610e4b565b73ffffffffffffffffffffffffffffffffffffffff1614610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6290612c6d565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cec9190612d2d565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d899190612d2d565b6040518363ffffffff1660e01b8152600401610da6929190612d58565b602060405180830381865afa158015610dc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de59190612d2d565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e8290612b93565b80601f0160208091040260200160405190810160405280929190818152602001828054610eae90612b93565b8015610ef95780601f10610ed057610100808354040283529160200191610ef9565b820191905f5260205f20905b815481529060010190602001808311610edc57829003601f168201915b5050505050905090565b7f000000000000000000000000adc067064a170a28c8bc0255b40360e7f6c32da773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f8f5750610f60610e4b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610f97575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fed9190612a16565b602060405180830381865afa158015611008573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102c9190612d93565b6040518363ffffffff1660e01b8152600401611049929190612dbe565b6020604051808303815f875af1158015611065573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110899190612df9565b5050565b5f8061109761180b565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905083811015611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90612e94565b60405180910390fd5b6111658286868403611812565b60019250505092915050565b5f8061117b61180b565b9050611188818585611a60565b600191505092915050565b60095481565b7f000000000000000000000000adc067064a170a28c8bc0255b40360e7f6c32da781565b60075481565b6111cb61180b565b73ffffffffffffffffffffffffffffffffffffffff166111e9610e4b565b73ffffffffffffffffffffffffffffffffffffffff161461123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690612c6d565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c590612f22565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000adc067064a170a28c8bc0255b40360e7f6c32da773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806113b25750611383610e4b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6113ba575f80fd5b600482111580156113cb57505f8114155b6113d3575f80fd5b81600a8190555080600b819055505050565b6113ed61180b565b73ffffffffffffffffffffffffffffffffffffffff1661140b610e4b565b73ffffffffffffffffffffffffffffffffffffffff1614611461576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145890612c6d565b60405180910390fd5b5f600781905550565b61147261180b565b73ffffffffffffffffffffffffffffffffffffffff16611490610e4b565b73ffffffffffffffffffffffffffffffffffffffff16146114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dd90612c6d565b60405180910390fd5b5f6008819055505f600781905550565b6011602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61159d61180b565b73ffffffffffffffffffffffffffffffffffffffff166115bb610e4b565b73ffffffffffffffffffffffffffffffffffffffff1614611611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160890612c6d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690612fb0565b60405180910390fd5b61168881612006565b50565b7f000000000000000000000000adc067064a170a28c8bc0255b40360e7f6c32da773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061171757506116e8610e4b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61171f575f80fd5b61174f620186a061174160016117336108cf565b6120c990919063ffffffff16565b6120de90919063ffffffff16565b811015611791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117889061303e565b60405180910390fd5b6117bf60646117b160026117a36108cf565b6120c990919063ffffffff16565b6120de90919063ffffffff16565b811115611801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f8906130cc565b60405180910390fd5b8060098190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611880576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118779061315a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e5906131e8565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119c89190612901565b60405180910390a3505050565b5f6119e08484611513565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611a5a5781811015611a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4390613250565b60405180910390fd5b611a598484848403611812565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac5906132de565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b339061336c565b60405180910390fd5b5f8111611b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b75906133fa565b60405180910390fd5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff906134ae565b60405180910390fd5b5f60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ca4575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580611cff5750805b611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3590613516565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490508080611ded5750815b8015611dfa57505f600754115b8015611e04575082155b15611e4f57600754841115611e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e45906135ca565b60405180910390fd5b5b81158015611e5e57505f600854115b8015611e68575082155b15611ec65760085484611e7a87610b23565b611e849190612bf0565b1115611ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebc9061367e565b60405180910390fd5b5b600954611ed230610b23565b10158015611eec5750600f5f9054906101000a900460ff16155b8015611ef55750815b8015611eff575082155b8015611f105750611f0f846120f3565b5b15611f51576001600f5f6101000a81548160ff021916908315150217905550611f3761214e565b5f600f5f6101000a81548160ff0219169083151502179055505b5f81611f5f57600e54611f63565b600d545b90505f811115611ff25783158015611f875750600f5f9054906101000a900460ff16155b8015611f9857508180611f975750825b5b15611ff1575f611fc46064611fb684896120c990919063ffffffff16565b6120de90919063ffffffff16565b90505f811115611fda57611fd98830836124cc565b5b611fed818761274190919063ffffffff16565b9550505b5b611ffd8787876124cc565b50505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81836120d6919061369c565b905092915050565b5f81836120eb919061370a565b905092915050565b5f80600b541461211257600b5460095461210d919061370a565b612114565b5f5b821015801561214757506002600c5f4381526020019081526020015f205f8154809291906121419061373a565b91905055105b9050919050565b5f61215830610b23565b90505f810361216757506124ca565b6009548111156121775760095490505b5f4790505f600267ffffffffffffffff81111561219757612196613781565b5b6040519080825280602002602001820160405280156121c55781602001602082028036833780820191505090505b50905030815f815181106121dc576121db6137ae565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612273573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122979190612d2d565b816001815181106122ab576122aa6137ae565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230430737a250d5630b4cf539739df2c5dacb4c659f2488d85611812565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b81526004016123599594939291906138d4565b5f604051808303815f87803b158015612370575f80fd5b505af1158015612382573d5f803e3d5ffd5b505050505f61239a834761274190919063ffffffff16565b90505f6123c460646123b66005856120c990919063ffffffff16565b6120de90919063ffffffff16565b90506123d9818361274190919063ffffffff16565b91507f000000000000000000000000adc067064a170a28c8bc0255b40360e7f6c32da773ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f1935050505015801561243e573d5f803e3d5ffd5b507382ff5034ba80db996815aaa8be86253ae594985973ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612496573d5f803e3d5ffd5b50807f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8760405160405180910390a250505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361253a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125319061399c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259f90613a2a565b60405180910390fd5b6125b3838383612756565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d90613ab8565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546126c49190612bf0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127289190612901565b60405180910390a361273b84848461275b565b50505050565b5f818361274e9190613ad6565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6127a282612760565b6127ac818561276a565b93506127bc81856020860161277a565b6127c581612788565b840191505092915050565b5f6020820190508181035f8301526127e88184612798565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61281d826127f4565b9050919050565b61282d81612813565b8114612837575f80fd5b50565b5f8135905061284881612824565b92915050565b5f819050919050565b6128608161284e565b811461286a575f80fd5b50565b5f8135905061287b81612857565b92915050565b5f8060408385031215612897576128966127f0565b5b5f6128a48582860161283a565b92505060206128b58582860161286d565b9150509250929050565b5f8115159050919050565b6128d3816128bf565b82525050565b5f6020820190506128ec5f8301846128ca565b92915050565b6128fb8161284e565b82525050565b5f6020820190506129145f8301846128f2565b92915050565b5f805f60608486031215612931576129306127f0565b5b5f61293e8682870161283a565b935050602061294f8682870161283a565b92505060406129608682870161286d565b9150509250925092565b5f60ff82169050919050565b61297f8161296a565b82525050565b5f6020820190506129985f830184612976565b92915050565b5f80604083850312156129b4576129b36127f0565b5b5f6129c18582860161286d565b92505060206129d28582860161286d565b9150509250929050565b5f602082840312156129f1576129f06127f0565b5b5f6129fe8482850161283a565b91505092915050565b612a1081612813565b82525050565b5f602082019050612a295f830184612a07565b92915050565b5f612a3982612813565b9050919050565b612a4981612a2f565b8114612a53575f80fd5b50565b5f81359050612a6481612a40565b92915050565b5f60208284031215612a7f57612a7e6127f0565b5b5f612a8c84828501612a56565b91505092915050565b612a9e816128bf565b8114612aa8575f80fd5b50565b5f81359050612ab981612a95565b92915050565b5f8060408385031215612ad557612ad46127f0565b5b5f612ae28582860161283a565b9250506020612af385828601612aab565b9150509250929050565b5f8060408385031215612b1357612b126127f0565b5b5f612b208582860161283a565b9250506020612b318582860161283a565b9150509250929050565b5f60208284031215612b5057612b4f6127f0565b5b5f612b5d8482850161286d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612baa57607f821691505b602082108103612bbd57612bbc612b66565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bfa8261284e565b9150612c058361284e565b9250828201905080821115612c1d57612c1c612bc3565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612c5760208361276a565b9150612c6282612c23565b602082019050919050565b5f6020820190508181035f830152612c8481612c4b565b9050919050565b7f417474656d7074696e6720746f207365742066656520686967686572207468615f8201527f6e20696e697469616c206665652e000000000000000000000000000000000000602082015250565b5f612ce5602e8361276a565b9150612cf082612c8b565b604082019050919050565b5f6020820190508181035f830152612d1281612cd9565b9050919050565b5f81519050612d2781612824565b92915050565b5f60208284031215612d4257612d416127f0565b5b5f612d4f84828501612d19565b91505092915050565b5f604082019050612d6b5f830185612a07565b612d786020830184612a07565b9392505050565b5f81519050612d8d81612857565b92915050565b5f60208284031215612da857612da76127f0565b5b5f612db584828501612d7f565b91505092915050565b5f604082019050612dd15f830185612a07565b612dde60208301846128f2565b9392505050565b5f81519050612df381612a95565b92915050565b5f60208284031215612e0e57612e0d6127f0565b5b5f612e1b84828501612de5565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612e7e60258361276a565b9150612e8982612e24565b604082019050919050565b5f6020820190508181035f830152612eab81612e72565b9050919050565b7f43616e6e6f7420626c61636b6c697374207468652070616972206164647265735f8201527f732e000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f0c60228361276a565b9150612f1782612eb2565b604082019050919050565b5f6020820190508181035f830152612f3981612f00565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f9a60268361276a565b9150612fa582612f40565b604082019050919050565b5f6020820190508181035f830152612fc781612f8e565b9050919050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f61302860388361276a565b915061303382612fce565b604082019050919050565b5f6020820190508181035f8301526130558161301c565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6130b660358361276a565b91506130c18261305c565b604082019050919050565b5f6020820190508181035f8301526130e3816130aa565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61314460248361276a565b915061314f826130ea565b604082019050919050565b5f6020820190508181035f83015261317181613138565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131d260228361276a565b91506131dd82613178565b604082019050919050565b5f6020820190508181035f8301526131ff816131c6565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f61323a601d8361276a565b915061324582613206565b602082019050919050565b5f6020820190508181035f8301526132678161322e565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f6132c8602b8361276a565b91506132d38261326e565b604082019050919050565b5f6020820190508181035f8301526132f5816132bc565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f61335660298361276a565b9150613361826132fc565b604082019050919050565b5f6020820190508181035f8301526133838161334a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f6133e4602a8361276a565b91506133ef8261338a565b604082019050919050565b5f6020820190508181035f830152613411816133d8565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b6564206173205f8201527f626c61636b6c69737465642c20796f752061726520756e61626c6520746f207460208201527f72616e73666572206f7220737761702e00000000000000000000000000000000604082015250565b5f61349860508361276a565b91506134a382613418565b606082019050919050565b5f6020820190508181035f8301526134c58161348c565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f613500601f8361276a565b915061350b826134cc565b602082019050919050565b5f6020820190508181035f83015261352d816134f4565b9050919050565b7f537761702076616c75652065786365656473206d6178207377617020616d6f755f8201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c60208201527f75652e0000000000000000000000000000000000000000000000000000000000604082015250565b5f6135b460438361276a565b91506135bf82613534565b606082019050919050565b5f6020820190508181035f8301526135e1816135a8565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f61366860448361276a565b9150613673826135e8565b606082019050919050565b5f6020820190508181035f8301526136958161365c565b9050919050565b5f6136a68261284e565b91506136b18361284e565b92508282026136bf8161284e565b915082820484148315176136d6576136d5612bc3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137148261284e565b915061371f8361284e565b92508261372f5761372e6136dd565b5b828204905092915050565b5f6137448261284e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361377657613775612bc3565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f6138076138026137fd846137db565b6137e4565b61284e565b9050919050565b613817816137ed565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61384f81612813565b82525050565b5f6138608383613846565b60208301905092915050565b5f602082019050919050565b5f6138828261381d565b61388c8185613827565b935061389783613837565b805f5b838110156138c75781516138ae8882613855565b97506138b98361386c565b92505060018101905061389a565b5085935050505092915050565b5f60a0820190506138e75f8301886128f2565b6138f4602083018761380e565b81810360408301526139068186613878565b90506139156060830185612a07565b61392260808301846128f2565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61398660258361276a565b91506139918261392c565b604082019050919050565b5f6020820190508181035f8301526139b38161397a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a1460238361276a565b9150613a1f826139ba565b604082019050919050565b5f6020820190508181035f830152613a4181613a08565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613aa260268361276a565b9150613aad82613a48565b604082019050919050565b5f6020820190508181035f830152613acf81613a96565b9050919050565b5f613ae08261284e565b9150613aeb8361284e565b9250828203905081811115613b0357613b02612bc3565b5b9291505056fea26469706673582212203985a35c4e8820970b7857878eda5cc53fa4a350fbb8a60d339fcb48c809af6364736f6c634300081a0033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Groggo is the only blue frog in all of his books, adding him to his collection of endearing frogs that we all love. Due to his resemblance to Pepe, some call him The Blue Pepe.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.