ETH Price: $2,356.47 (+1.88%)

Contract

0x2A770fAD9F0CFB5b49f0eDA4FFaE259aEAC60d0c
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve207189452024-09-10 8:13:114 hrs ago1725955991IN
Mercurelab: MCL Token
0 ETH0.000176553.81945864
Transfer207155122024-09-09 20:42:4716 hrs ago1725914567IN
Mercurelab: MCL Token
0 ETH0.000224695.16209789
Transfer207116552024-09-09 7:46:4729 hrs ago1725868007IN
Mercurelab: MCL Token
0 ETH0.00038446.60074795
Transfer207116512024-09-09 7:45:5929 hrs ago1725867959IN
Mercurelab: MCL Token
0 ETH0.000425726.54587426
Set Swap Back Se...207116092024-09-09 7:37:3529 hrs ago1725867455IN
Mercurelab: MCL Token
0 ETH0.000332996.68798083
Clear Stuck ERC2...207116062024-09-09 7:36:5929 hrs ago1725867419IN
Mercurelab: MCL Token
0 ETH0.000414926.70928853
Set Swap Back Se...207116032024-09-09 7:36:2329 hrs ago1725867383IN
Mercurelab: MCL Token
0 ETH0.000189156.7850983
Transfer207098812024-09-09 1:50:5934 hrs ago1725846659IN
Mercurelab: MCL Token
0 ETH0.000057111.37534511
Transfer206797182024-09-04 20:50:475 days ago1725483047IN
Mercurelab: MCL Token
0 ETH0.0006596815.15948807
Approve206322502024-08-29 5:47:2312 days ago1724910443IN
Mercurelab: MCL Token
0 ETH0.000082121.76430894
Approve206303772024-08-28 23:29:5912 days ago1724887799IN
Mercurelab: MCL Token
0 ETH0.000093262.00354165
Transfer206303622024-08-28 23:26:5912 days ago1724887619IN
Mercurelab: MCL Token
0 ETH0.000194611.04463509
Approve206303372024-08-28 23:21:5912 days ago1724887319IN
Mercurelab: MCL Token
0 ETH0.000044310.95754075
Approve206124042024-08-26 11:15:5915 days ago1724670959IN
Mercurelab: MCL Token
0 ETH0.000118332.55999585
Approve205784012024-08-21 17:10:5919 days ago1724260259IN
Mercurelab: MCL Token
0 ETH0.000135275.13177717
Approve205783992024-08-21 17:10:3519 days ago1724260235IN
Mercurelab: MCL Token
0 ETH0.000240135.19101353
Approve205755862024-08-21 7:44:4720 days ago1724226287IN
Mercurelab: MCL Token
0 ETH0.000087861.89003773
Approve205245162024-08-14 4:35:2327 days ago1723610123IN
Mercurelab: MCL Token
0 ETH0.000084171.80831065
Approve205119922024-08-12 10:39:2329 days ago1723459163IN
Mercurelab: MCL Token
0 ETH0.000214424.61258065
Approve204710382024-08-06 17:31:2334 days ago1722965483IN
Mercurelab: MCL Token
0 ETH0.000328057.0860014
Approve204633562024-08-05 15:47:2335 days ago1722872843IN
Mercurelab: MCL Token
0 ETH0.0015524133.57593942
Transfer204623902024-08-05 12:33:2336 days ago1722861203IN
Mercurelab: MCL Token
0 ETH0.0017199139.51285995
Approve204550242024-08-04 11:54:3537 days ago1722772475IN
Mercurelab: MCL Token
0 ETH0.000145233.12407093
Approve204470642024-08-03 9:17:3538 days ago1722676655IN
Mercurelab: MCL Token
0 ETH0.000071161.53073328
Approve204184312024-07-30 9:18:3542 days ago1722331115IN
Mercurelab: MCL Token
0 ETH0.000195514.23192732
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
207148292024-09-09 18:25:2318 hrs ago1725906323
Mercurelab: MCL Token
0.01778823 ETH
207148292024-09-09 18:25:2318 hrs ago1725906323
Mercurelab: MCL Token
0.0595281 ETH
207148292024-09-09 18:25:2318 hrs ago1725906323
Mercurelab: MCL Token
0.07731634 ETH
207062412024-09-08 13:38:4747 hrs ago1725802727
Mercurelab: MCL Token
0.02749272 ETH
207062412024-09-08 13:38:4747 hrs ago1725802727
Mercurelab: MCL Token
0.09841881 ETH
207062412024-09-08 13:38:4747 hrs ago1725802727
Mercurelab: MCL Token
0.12591153 ETH
206544862024-09-01 8:19:479 days ago1725178787
Mercurelab: MCL Token
0.0415408 ETH
206544862024-09-01 8:19:479 days ago1725178787
Mercurelab: MCL Token
0.16616321 ETH
206544862024-09-01 8:19:479 days ago1725178787
Mercurelab: MCL Token
0.20770401 ETH
206303622024-08-28 23:26:5912 days ago1724887619
Mercurelab: MCL Token
0.04740016 ETH
206303622024-08-28 23:26:5912 days ago1724887619
Mercurelab: MCL Token
0.14812727 ETH
206303622024-08-28 23:26:5912 days ago1724887619
Mercurelab: MCL Token
0.19552743 ETH
205632082024-08-19 14:15:5921 days ago1724076959
Mercurelab: MCL Token
0.03620849 ETH
205632082024-08-19 14:15:5921 days ago1724076959
Mercurelab: MCL Token
0.14483399 ETH
205632082024-08-19 14:15:5921 days ago1724076959
Mercurelab: MCL Token
0.18104249 ETH
205469642024-08-17 7:50:4724 days ago1723881047
Mercurelab: MCL Token
0.02379716 ETH
205469642024-08-17 7:50:4724 days ago1723881047
Mercurelab: MCL Token
0.08751591 ETH
205469642024-08-17 7:50:4724 days ago1723881047
Mercurelab: MCL Token
0.11131307 ETH
204773612024-08-07 14:41:5933 days ago1723041719
Mercurelab: MCL Token
0.05284344 ETH
204773612024-08-07 14:41:5933 days ago1723041719
Mercurelab: MCL Token
0.21137376 ETH
204773612024-08-07 14:41:5933 days ago1723041719
Mercurelab: MCL Token
0.2642172 ETH
204710472024-08-06 17:33:1134 days ago1722965591
Mercurelab: MCL Token
0.03978881 ETH
204710472024-08-06 17:33:1134 days ago1722965591
Mercurelab: MCL Token
0.11720636 ETH
204710472024-08-06 17:33:1134 days ago1722965591
Mercurelab: MCL Token
0.15699517 ETH
204623242024-08-05 12:20:1136 days ago1722860411
Mercurelab: MCL Token
0.08082466 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MercureLab

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-01
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.22;

/*
Mercurelab is a Web3 ecosystem dedicated to adoption, from the smartcontract 
generator to the most advanced on-chain analysis tools, enhanced with data 
visualization to understand certain complex indicators in complete transparency.

Website: https://www.mercurelab.io/
Twitter: https://twitter.com/MercureLabEn/
Telegram: https://t.me/mercurelaboff/
*/

/**
 * ERC20 standard interface.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address _owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

/**
 * Factory standard interface.
 */
interface IDEXFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

/**
 * Router standard interface.
 */
interface IDEXRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping(address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "You are not the owner");
        _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "You are not authorized");
        _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address account) public onlyOwner {
        authorizations[account] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address account) public onlyOwner {
        authorizations[account] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address account) public view returns (bool) {
        return authorizations[account];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable account) public onlyOwner {
        owner = account;
        authorizations[account] = true;
        emit OwnershipTransferred(account);
    }

    event OwnershipTransferred(address owner);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

contract MercureLab is IERC20, Auth {
    using SafeMath for uint256;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "MercureLab";
    string constant _symbol = "MCL";
    uint8 constant _decimals = 18;

    uint256 _totalSupply = 100_000_000_000 ether;

    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;

    event FeeReceiversUpdated(
        address ecosystemFeeReceiver,
        address burnFeeReceiver
    );
    event SwapBackSettingsUpdated(bool swapEnabled, uint256 swapThreshold);
    event ExcludeFromFee(address account, bool exempt);

    event BuyFeesUpdated(
        uint256 ecosystemFee,
        uint256 burnFee,
        uint256 feeDenominator
    );
    event SellFeesUpdated(
        uint256 ecosystemFee,
        uint256 burnFee,
        uint256 feeDenominator
    );

    struct Fees {
        uint256 ecosystem;
        uint256 burn;
        uint256 denominator;
        uint256 total;
    }

    struct FeeAmounts {
        uint256 ecosystem;
        uint256 burn;
    }

    FeeAmounts public feeAmounts;
    FeeAmounts public paidFeeAmounts;
    Fees public buyFee = Fees(5, 2, 100, 7);
    Fees public sellFee = Fees(8, 2, 100, 10);

    address public ecosystemFeeReceiver;
    address public burnFeeReceiver;

    mapping(address => bool) isFeeExempt;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000;
    bool inSwap;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    IDEXRouter public router;
    address public pair;

    event StuckETHCleared(address account, uint256 amount);
    event StuckERC20Cleared(address token, address account, uint256 amount);

    constructor() Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );
        _allowances[address(this)][address(router)] = ~uint256(0);

        ecosystemFeeReceiver = msg.sender;
        burnFeeReceiver = msg.sender;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

    function getOwner() external view override returns (address) {
        return owner;
    }

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

    function allowance(address holder, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowances[holder][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, ~uint256(0));
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != ~uint256(0)) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        if (shouldSwapBack()) {
            swapBack();
        }
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );

        uint256 amountReceived = shouldTakeFee(sender)
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeAmount = 0;
        if (sender == pair) {
            addFee(buyFee, amount);
            feeAmount = (amount * buyFee.total) / buyFee.denominator;
        } else if (recipient == pair) {
            addFee(sellFee, amount);
            feeAmount = (amount * sellFee.total) / sellFee.denominator;
        }
        if (feeAmount == 0) {
            return amount;
        }

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount - feeAmount;
    }

    function addFee(Fees storage fees, uint256 amount) internal {
        if (fees.ecosystem > 0) {
            uint256 ecosystemFee = (amount * fees.ecosystem) / fees.denominator;
            feeAmounts.ecosystem = feeAmounts.ecosystem.add(ecosystemFee);
        }
        if (fees.burn > 0) {
            uint256 burnFee = (amount * fees.burn) / fees.denominator;
            feeAmounts.burn = feeAmounts.burn.add(burnFee);
        }
    }

    /// @notice Updated buy fees
    /// @dev emits a BuyFeesUpdated event
    /// @dev reverts if the total fee is greater than 10%.
    /// @param _ecosystemFee The new value of the ecosystem tax
    /// @param _burnFee The new value of the burn tax
    /// @param _feeDenominator The new value of the buy denominator
    function setBuyFees(
        uint256 _ecosystemFee,
        uint256 _burnFee,
        uint256 _feeDenominator
    ) external authorized {
        buyFee.ecosystem = _ecosystemFee;
        buyFee.burn = _burnFee;
        buyFee.denominator = _feeDenominator;
        buyFee.total = _ecosystemFee.add(_burnFee);
        require(
            buyFee.total <= (buyFee.denominator * 7) / 100,
            "Buy fee can not be over 7%"
        );
        require(
            buyFee.denominator > 0,
            "Fee denominator can not be null"
        );
        emit BuyFeesUpdated(_ecosystemFee, _burnFee, _feeDenominator);
    }

    /// @notice Updated sell fees
    /// @dev emits a SellFeesUpdated event
    /// @dev reverts if the total fee is greater than 10%.
    /// @param _ecosystemFee The new value of the ecosystem tax
    /// @param _burnFee The new value of the burn tax
    /// @param _feeDenominator The new value of the sell denominator
    function setSellFees(
        uint256 _ecosystemFee,
        uint256 _burnFee,
        uint256 _feeDenominator
    ) external authorized {
        sellFee.ecosystem = _ecosystemFee;
        sellFee.burn = _burnFee;
        sellFee.denominator = _feeDenominator;
        sellFee.total = _ecosystemFee.add(_burnFee);
        require(
            sellFee.total <= (sellFee.denominator * 10) / 100,
            "Buy fee can not be over 10%"
        );
        require(
            sellFee.denominator > 0,
            "Fee denominator can not be null"
        );
        emit SellFeesUpdated(_ecosystemFee, _burnFee, _feeDenominator);
    }

    /// @notice Update fees receivers addresses
    /// @dev emits a FeeReceiversUpdated event
    /// @param _ecosystemFeeReceiver The new address of the ecosystem wallet
    /// @param _burnFeeReceiver The new address of the burn wallet
    function setFeeReceivers(
        address _ecosystemFeeReceiver,
        address _burnFeeReceiver
    ) external authorized {
        ecosystemFeeReceiver = _ecosystemFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        emit FeeReceiversUpdated(ecosystemFeeReceiver, burnFeeReceiver);
    }

    /// @notice Update swapback (sale of taxes by contract) settings
    /// @dev emits a SwapBackSettingsUpdated event
    /// @param _enabled Swapback status (active or not)
    /// @param _amount Threshold in number of tokens at which swapback is executed
    function setSwapBackSettings(bool _enabled, uint256 _amount)
        external
        authorized
    {
        swapEnabled = _enabled;
        swapThreshold = _amount;
        emit SwapBackSettingsUpdated(swapEnabled, swapThreshold);
    }

    /// @notice Check swapback requirements
    function shouldSwapBack() internal view returns (bool) {
        return
            msg.sender != pair &&
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold;
    }

    /// @notice Swapback (sale of taxes by contract and ditribution to receiver wallets)
    function swapBack() internal swapping {
        uint256 amountToSwap = feeAmounts.ecosystem.add(feeAmounts.burn);
        if (amountToSwap == 0) {
            return;
        }

        uint256 balanceBefore = address(this).balance;
        swapTokenETH(amountToSwap);
        uint256 amountETH = address(this).balance.sub(balanceBefore);

        if (amountETH > 0) {
            uint256 amountETHBurn = amountETH.mul(feeAmounts.burn).div(
                amountToSwap
            );
            uint256 amountETHEcosystem = amountETH.sub(amountETHBurn);

            if (amountETHEcosystem > 0) {
                (bool tmpSuccessEcosystem, ) = payable(ecosystemFeeReceiver)
                    .call{value: amountETHEcosystem, gas: 30000}("");
                tmpSuccessEcosystem = false;
                paidFeeAmounts.ecosystem = paidFeeAmounts.ecosystem.add(
                    amountETHEcosystem
                );
                feeAmounts.ecosystem = 0;
            }
            if (amountETHBurn > 0) {
                (bool tmpSuccessBurn, ) = payable(burnFeeReceiver).call{
                    value: amountETHBurn,
                    gas: 30000
                }("");
                tmpSuccessBurn = false;
                paidFeeAmounts.burn = paidFeeAmounts.burn.add(amountETHBurn);
                feeAmounts.burn = 0;
            }
        }
    }

    function swapTokenETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    /// @notice Recovers ETH blocked on the contract
    /// @dev emits a StuckETHCleared event
    /// @param account Address of wallet receiving blocked ETHs
    function clearStuckETH(address account) public authorized {
        uint256 amount = address(this).balance;
        (bool sent, ) = payable(account).call{value: (amount)}("");
        require(sent);
        emit StuckETHCleared(account, amount);
    }

    /// @notice Recovers ERC20 token blocked on the contract
    /// @dev emits a StuckERC20Cleared event
    /// @param token Address of the token blocked
    /// @param account Address of wallet receiving blocked token
    function clearStuckERC20(address token, address account) public authorized {
        uint256 amount = IERC20(token).balanceOf(address(this));
        IERC20(token).transfer(account, amount);
        emit StuckERC20Cleared(token, account, amount);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"ecosystemFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeDenominator","type":"uint256"}],"name":"BuyFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"ExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ecosystemFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"burnFeeReceiver","type":"address"}],"name":"FeeReceiversUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"ecosystemFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeDenominator","type":"uint256"}],"name":"SellFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"StuckERC20Cleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"StuckETHCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"swapEnabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"swapThreshold","type":"uint256"}],"name":"SwapBackSettingsUpdated","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":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"ecosystem","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"clearStuckERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"ecosystemFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeAmounts","outputs":[{"internalType":"uint256","name":"ecosystem","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"paidFeeAmounts","outputs":[{"internalType":"uint256","name":"ecosystem","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"ecosystem","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ecosystemFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ecosystemFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ecosystemFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600280546001600160a01b031990811661dead1782556003805490911690556c01431e0fae6d7217caa000000060048190556005608081905260a0839052606460c0819052600760e0819052600b92909255600c849055600d819055600e919091556101806040526008610100819052610120849052610140829052600a610160819052600f919091556010939093556011556012919091556016805460ff19166001179055620000b4906103e8906200034f565b601755348015620000c3575f80fd5b505f80546001600160a01b031916339081178255815260016020818152604092839020805460ff191690921790915560188054747a250d5630b4cf539739df2c5dacb4c659f2488d00610100600160a81b03199091161790819055825163c45a015560e01b815292516101009091046001600160a01b03169263c45a01559260048083019391928290030181865afa15801562000162573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200018891906200036f565b6001600160a01b031663c9c65396601860019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200020e91906200036f565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af115801562000258573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200027e91906200036f565b601980546001600160a01b03199081166001600160a01b0393841617909155305f818152600660209081526040808320601854610100900490961683529481528482205f1990556013805433908616811790915560148054909516811790945583825260158152848220805460ff19908116600190811790925593835285832080549094161790925560045483825260058352848220819055935193845291927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200039e565b5f826200036a57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000380575f80fd5b81516001600160a01b038116811462000397575f80fd5b9392505050565b611b0180620003ac5f395ff3fe6080604052600436106101e8575f3560e01c806370a0823111610108578063b20ae67f1161009d578063e3763ded1161006d578063e3763ded14610604578063f0b37c0414610623578063f2fde38b14610642578063f887ea4014610661578063fe9fbb8014610685575f80fd5b8063b20ae67f14610563578063b6a5d7de14610582578063dd62ed3e146105a1578063df20fd49146105e5575f80fd5b8063a477ae2e116100d8578063a477ae2e146104e7578063a4b45c0014610506578063a8aa1b3114610525578063a9059cbb14610544575f80fd5b806370a0823114610439578063893d20e81461046d57806390be88281461049d57806395d89b41146104bc575f80fd5b80632b112e491161017e5780633f17b1611161014e5780633f17b161146103c557806347062402146103df578063571ac8b0146104015780636ddd171314610420575f80fd5b80632b112e49146103275780632b14ca561461033b5780632f54bf6e1461037d578063313ce567146103aa575f80fd5b80630d075d9c116101b95780630d075d9c146102b45780630f683e90146102d557806318160ddd146102f457806323b872dd14610308575f80fd5b8062223ec9146101f35780630445b6671461022757806306fdde031461024a578063095ea7b314610285575f80fd5b366101ef57005b5f80fd5b3480156101fe575f80fd5b50600954600a5461020d919082565b604080519283526020830191909152015b60405180910390f35b348015610232575f80fd5b5061023c60175481565b60405190815260200161021e565b348015610255575f80fd5b5060408051808201909152600a81526926b2b931bab932a630b160b11b60208201525b60405161021e91906117bb565b348015610290575f80fd5b506102a461029f36600461181e565b6106a4565b604051901515815260200161021e565b3480156102bf575f80fd5b506102d36102ce366004611848565b610710565b005b3480156102e0575f80fd5b506102d36102ef366004611848565b61085c565b3480156102ff575f80fd5b5060045461023c565b348015610313575f80fd5b506102a4610322366004611871565b610996565b348015610332575f80fd5b5061023c610a54565b348015610346575f80fd5b50600f5460105460115460125461035d9392919084565b60408051948552602085019390935291830152606082015260800161021e565b348015610388575f80fd5b506102a46103973660046118af565b5f546001600160a01b0391821691161490565b3480156103b5575f80fd5b506040516012815260200161021e565b3480156103d0575f80fd5b5060075460085461020d919082565b3480156103ea575f80fd5b50600b54600c54600d54600e5461035d9392919084565b34801561040c575f80fd5b506102a461041b3660046118af565b610aa4565b34801561042b575f80fd5b506016546102a49060ff1681565b348015610444575f80fd5b5061023c6104533660046118af565b6001600160a01b03165f9081526005602052604090205490565b348015610478575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161021e565b3480156104a8575f80fd5b506102d36104b73660046118ca565b610ab0565b3480156104c7575f80fd5b506040805180820190915260038152621350d360ea1b6020820152610278565b3480156104f2575f80fd5b506102d36105013660046118af565b610bfa565b348015610511575f80fd5b506102d36105203660046118ca565b610cba565b348015610530575f80fd5b50601954610485906001600160a01b031681565b34801561054f575f80fd5b506102a461055e36600461181e565b610d4e565b34801561056e575f80fd5b50601354610485906001600160a01b031681565b34801561058d575f80fd5b506102d361059c3660046118af565b610d5a565b3480156105ac575f80fd5b5061023c6105bb3660046118ca565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b3480156105f0575f80fd5b506102d36105ff36600461190e565b610da9565b34801561060f575f80fd5b50601454610485906001600160a01b031681565b34801561062e575f80fd5b506102d361063d3660046118af565b610e20565b34801561064d575f80fd5b506102d361065c3660046118af565b610e69565b34801561066c575f80fd5b506018546104859061010090046001600160a01b031681565b348015610690575f80fd5b506102a461069f3660046118af565b610efd565b335f8181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106fe9086815260200190565b60405180910390a35060015b92915050565b61071933610efd565b61073e5760405162461bcd60e51b81526004016107359061192a565b60405180910390fd5b600b839055600c829055600d8190556107578383610f1a565b600e55600d5460649061076b90600761196e565b6107759190611985565b600e5411156107c65760405162461bcd60e51b815260206004820152601a60248201527f427579206665652063616e206e6f74206265206f7665722037250000000000006044820152606401610735565b600d546108155760405162461bcd60e51b815260206004820152601f60248201527f4665652064656e6f6d696e61746f722063616e206e6f74206265206e756c6c006044820152606401610735565b60408051848152602081018490529081018290527fa7266bdfb6dddf05c6d4c2b1c0a92e32c7f0a8815840290ee04b4dab3c6ff01d906060015b60405180910390a1505050565b61086533610efd565b6108815760405162461bcd60e51b81526004016107359061192a565b600f8390556010829055601181905561089a8383610f1a565b6012556011546064906108ae90600a61196e565b6108b89190611985565b60125411156109095760405162461bcd60e51b815260206004820152601b60248201527f427579206665652063616e206e6f74206265206f7665722031302500000000006044820152606401610735565b6011546109585760405162461bcd60e51b815260206004820152601f60248201527f4665652064656e6f6d696e61746f722063616e206e6f74206265206e756c6c006044820152606401610735565b60408051848152602081018490529081018290527f448e0e14dd61faacf0f8f7dded9eb48b249502327415f15dc735243d76a858629060600161084f565b6001600160a01b0383165f9081526006602090815260408083203384529091528120545f1914610a3f576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600682528381203382529091529190912054610a1b918490610f78565b6001600160a01b0385165f9081526006602090815260408083203384529091529020555b610a4a848484610fb0565b90505b9392505050565b6003546001600160a01b03165f90815260056020526040812054610a9f906002546001600160a01b03165f90815260056020526040902054610a9990600454906110ff565b906110ff565b905090565b5f61070a825f196106a4565b610ab933610efd565b610ad55760405162461bcd60e51b81526004016107359061192a565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610b19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3d91906119a4565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af1158015610b8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb191906119bb565b50604080516001600160a01b038086168252841660208201529081018290527f7951787b557e2aae1d3b111d1dd95c84d28f804006269ecc3b5fa16ba2da4a3c9060600161084f565b610c0333610efd565b610c1f5760405162461bcd60e51b81526004016107359061192a565b60405147905f906001600160a01b0384169083908381818185875af1925050503d805f8114610c69576040519150601f19603f3d011682016040523d82523d5f602084013e610c6e565b606091505b5050905080610c7b575f80fd5b604080516001600160a01b0385168152602081018490527f059704367911b8f56b61d088763fe1919f60831c4f198becc9723cf7f99897a0910161084f565b610cc333610efd565b610cdf5760405162461bcd60e51b81526004016107359061192a565b601380546001600160a01b038481166001600160a01b03199283168117909355601480549185169190921681179091556040805192835260208301919091527f9fba4a27b77afdf6c68deb1d99abfd909cb0c2bfa6a148fae3c6b8414e58aef991015b60405180910390a15050565b5f610a4d338484610fb0565b5f546001600160a01b03163314610d835760405162461bcd60e51b8152600401610735906119d6565b6001600160a01b03165f908152600160208190526040909120805460ff19169091179055565b610db233610efd565b610dce5760405162461bcd60e51b81526004016107359061192a565b6016805460ff191683151590811790915560178290556040805160ff90921615158252602082018390527f30e0f7c488b6c70123097f13cf387e140b0e0b8c9d9e3473e502f35b035d377c9101610d42565b5f546001600160a01b03163314610e495760405162461bcd60e51b8152600401610735906119d6565b6001600160a01b03165f908152600160205260409020805460ff19169055565b5f546001600160a01b03163314610e925760405162461bcd60e51b8152600401610735906119d6565b5f80546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6001600160a01b03165f9081526001602052604090205460ff1690565b5f80610f268385611a05565b905083811015610a4d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610735565b5f8184841115610f9b5760405162461bcd60e51b815260040161073591906117bb565b505f610fa78486611a18565b95945050505050565b6018545f9060ff1615610fcf57610fc8848484611140565b9050610a4d565b610fd7611223565b15610fe457610fe4611270565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260059091529190912054611035918490610f78565b6001600160a01b0385165f90815260056020908152604080832093909355601590529081205460ff16156110695782611074565b6110748585856113ec565b6001600160a01b0385165f908152600560205260409020549091506110999082610f1a565b6001600160a01b038086165f8181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110ec9085815260200190565b60405180910390a3506001949350505050565b5f610a4d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f78565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600590915291822054611190918490610f78565b6001600160a01b038086165f9081526005602052604080822093909355908516815220546111be9083610f1a565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112119086815260200190565b60405180910390a35060019392505050565b6019545f906001600160a01b03163314801590611243575060185460ff16155b8015611251575060165460ff165b8015610a9f575050601754305f90815260056020526040902054101590565b6018805460ff191660011790556008546007545f9161128f9190610f1a565b9050805f0361129e57506113e0565b476112a8826114fb565b5f6112b347836110ff565b905080156113dc575f6112de846112d86007600101548561165390919063ffffffff16565b906116d1565b90505f6112eb83836110ff565b90508015611363576013546040515f916001600160a01b03169061753090849084818181858888f193505050503d805f8114611342576040519150601f19603f3d011682016040523d82523d5f602084013e611347565b606091505b50506009545f925061135a915083610f1a565b600955505f6007555b81156113d9576014546040515f916001600160a01b03169061753090859084818181858888f193505050503d805f81146113b8576040519150601f19603f3d011682016040523d82523d5f602084013e6113bd565b606091505b5050600a545f92506113d0915084610f1a565b600a55505f6008555b50505b5050505b6018805460ff19169055565b6019545f9081906001600160a01b039081169086160361143257611411600b84611712565b600d54600e54611421908561196e565b61142b9190611985565b9050611470565b6019546001600160a01b039081169085160361147057611453600f84611712565b601154601254611463908561196e565b61146d9190611985565b90505b805f036114805782915050610a4d565b305f908152600560205260409020546114999082610f1a565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114e99085815260200190565b60405180910390a3610fa78184611a18565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061152e5761152e611a2b565b60200260200101906001600160a01b031690816001600160a01b031681525050601860019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c39190611a3f565b816001815181106115d6576115d6611a2b565b6001600160a01b03928316602091820292909201015260185460405163791ac94760e01b81526101009091049091169063791ac947906116229085905f90869030904290600401611a5a565b5f604051808303815f87803b158015611639575f80fd5b505af115801561164b573d5f803e3d5ffd5b505050505050565b5f825f0361166257505f61070a565b5f61166d838561196e565b90508261167a8583611985565b14610a4d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610735565b5f610a4d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061178f565b81541561174c57600282015482545f919061172d908461196e565b6117379190611985565b6007549091506117479082610f1a565b600755505b60018201541561178b575f826002015483600101548361176c919061196e565b6117769190611985565b6008549091506117869082610f1a565b600855505b5050565b5f81836117af5760405162461bcd60e51b815260040161073591906117bb565b505f610fa78486611985565b5f602080835283518060208501525f5b818110156117e7578581018301518582016040015282016117cb565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461181b575f80fd5b50565b5f806040838503121561182f575f80fd5b823561183a81611807565b946020939093013593505050565b5f805f6060848603121561185a575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215611883575f80fd5b833561188e81611807565b9250602084013561189e81611807565b929592945050506040919091013590565b5f602082840312156118bf575f80fd5b8135610a4d81611807565b5f80604083850312156118db575f80fd5b82356118e681611807565b915060208301356118f681611807565b809150509250929050565b801515811461181b575f80fd5b5f806040838503121561191f575f80fd5b823561183a81611901565b602080825260169082015275165bdd48185c99481b9bdd08185d5d1a1bdc9a5e995960521b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761070a5761070a61195a565b5f8261199f57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156119b4575f80fd5b5051919050565b5f602082840312156119cb575f80fd5b8151610a4d81611901565b6020808252601590820152742cb7ba9030b932903737ba103a34329037bbb732b960591b604082015260600190565b8082018082111561070a5761070a61195a565b8181038181111561070a5761070a61195a565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611a4f575f80fd5b8151610a4d81611807565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611aaa5784516001600160a01b031683529383019391830191600101611a85565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122013ae2b6d3aa07f662a790754d3c4b96216d124a46db0de36f39266c52fc14f8e64736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101e8575f3560e01c806370a0823111610108578063b20ae67f1161009d578063e3763ded1161006d578063e3763ded14610604578063f0b37c0414610623578063f2fde38b14610642578063f887ea4014610661578063fe9fbb8014610685575f80fd5b8063b20ae67f14610563578063b6a5d7de14610582578063dd62ed3e146105a1578063df20fd49146105e5575f80fd5b8063a477ae2e116100d8578063a477ae2e146104e7578063a4b45c0014610506578063a8aa1b3114610525578063a9059cbb14610544575f80fd5b806370a0823114610439578063893d20e81461046d57806390be88281461049d57806395d89b41146104bc575f80fd5b80632b112e491161017e5780633f17b1611161014e5780633f17b161146103c557806347062402146103df578063571ac8b0146104015780636ddd171314610420575f80fd5b80632b112e49146103275780632b14ca561461033b5780632f54bf6e1461037d578063313ce567146103aa575f80fd5b80630d075d9c116101b95780630d075d9c146102b45780630f683e90146102d557806318160ddd146102f457806323b872dd14610308575f80fd5b8062223ec9146101f35780630445b6671461022757806306fdde031461024a578063095ea7b314610285575f80fd5b366101ef57005b5f80fd5b3480156101fe575f80fd5b50600954600a5461020d919082565b604080519283526020830191909152015b60405180910390f35b348015610232575f80fd5b5061023c60175481565b60405190815260200161021e565b348015610255575f80fd5b5060408051808201909152600a81526926b2b931bab932a630b160b11b60208201525b60405161021e91906117bb565b348015610290575f80fd5b506102a461029f36600461181e565b6106a4565b604051901515815260200161021e565b3480156102bf575f80fd5b506102d36102ce366004611848565b610710565b005b3480156102e0575f80fd5b506102d36102ef366004611848565b61085c565b3480156102ff575f80fd5b5060045461023c565b348015610313575f80fd5b506102a4610322366004611871565b610996565b348015610332575f80fd5b5061023c610a54565b348015610346575f80fd5b50600f5460105460115460125461035d9392919084565b60408051948552602085019390935291830152606082015260800161021e565b348015610388575f80fd5b506102a46103973660046118af565b5f546001600160a01b0391821691161490565b3480156103b5575f80fd5b506040516012815260200161021e565b3480156103d0575f80fd5b5060075460085461020d919082565b3480156103ea575f80fd5b50600b54600c54600d54600e5461035d9392919084565b34801561040c575f80fd5b506102a461041b3660046118af565b610aa4565b34801561042b575f80fd5b506016546102a49060ff1681565b348015610444575f80fd5b5061023c6104533660046118af565b6001600160a01b03165f9081526005602052604090205490565b348015610478575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161021e565b3480156104a8575f80fd5b506102d36104b73660046118ca565b610ab0565b3480156104c7575f80fd5b506040805180820190915260038152621350d360ea1b6020820152610278565b3480156104f2575f80fd5b506102d36105013660046118af565b610bfa565b348015610511575f80fd5b506102d36105203660046118ca565b610cba565b348015610530575f80fd5b50601954610485906001600160a01b031681565b34801561054f575f80fd5b506102a461055e36600461181e565b610d4e565b34801561056e575f80fd5b50601354610485906001600160a01b031681565b34801561058d575f80fd5b506102d361059c3660046118af565b610d5a565b3480156105ac575f80fd5b5061023c6105bb3660046118ca565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b3480156105f0575f80fd5b506102d36105ff36600461190e565b610da9565b34801561060f575f80fd5b50601454610485906001600160a01b031681565b34801561062e575f80fd5b506102d361063d3660046118af565b610e20565b34801561064d575f80fd5b506102d361065c3660046118af565b610e69565b34801561066c575f80fd5b506018546104859061010090046001600160a01b031681565b348015610690575f80fd5b506102a461069f3660046118af565b610efd565b335f8181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106fe9086815260200190565b60405180910390a35060015b92915050565b61071933610efd565b61073e5760405162461bcd60e51b81526004016107359061192a565b60405180910390fd5b600b839055600c829055600d8190556107578383610f1a565b600e55600d5460649061076b90600761196e565b6107759190611985565b600e5411156107c65760405162461bcd60e51b815260206004820152601a60248201527f427579206665652063616e206e6f74206265206f7665722037250000000000006044820152606401610735565b600d546108155760405162461bcd60e51b815260206004820152601f60248201527f4665652064656e6f6d696e61746f722063616e206e6f74206265206e756c6c006044820152606401610735565b60408051848152602081018490529081018290527fa7266bdfb6dddf05c6d4c2b1c0a92e32c7f0a8815840290ee04b4dab3c6ff01d906060015b60405180910390a1505050565b61086533610efd565b6108815760405162461bcd60e51b81526004016107359061192a565b600f8390556010829055601181905561089a8383610f1a565b6012556011546064906108ae90600a61196e565b6108b89190611985565b60125411156109095760405162461bcd60e51b815260206004820152601b60248201527f427579206665652063616e206e6f74206265206f7665722031302500000000006044820152606401610735565b6011546109585760405162461bcd60e51b815260206004820152601f60248201527f4665652064656e6f6d696e61746f722063616e206e6f74206265206e756c6c006044820152606401610735565b60408051848152602081018490529081018290527f448e0e14dd61faacf0f8f7dded9eb48b249502327415f15dc735243d76a858629060600161084f565b6001600160a01b0383165f9081526006602090815260408083203384529091528120545f1914610a3f576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600682528381203382529091529190912054610a1b918490610f78565b6001600160a01b0385165f9081526006602090815260408083203384529091529020555b610a4a848484610fb0565b90505b9392505050565b6003546001600160a01b03165f90815260056020526040812054610a9f906002546001600160a01b03165f90815260056020526040902054610a9990600454906110ff565b906110ff565b905090565b5f61070a825f196106a4565b610ab933610efd565b610ad55760405162461bcd60e51b81526004016107359061192a565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610b19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3d91906119a4565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af1158015610b8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb191906119bb565b50604080516001600160a01b038086168252841660208201529081018290527f7951787b557e2aae1d3b111d1dd95c84d28f804006269ecc3b5fa16ba2da4a3c9060600161084f565b610c0333610efd565b610c1f5760405162461bcd60e51b81526004016107359061192a565b60405147905f906001600160a01b0384169083908381818185875af1925050503d805f8114610c69576040519150601f19603f3d011682016040523d82523d5f602084013e610c6e565b606091505b5050905080610c7b575f80fd5b604080516001600160a01b0385168152602081018490527f059704367911b8f56b61d088763fe1919f60831c4f198becc9723cf7f99897a0910161084f565b610cc333610efd565b610cdf5760405162461bcd60e51b81526004016107359061192a565b601380546001600160a01b038481166001600160a01b03199283168117909355601480549185169190921681179091556040805192835260208301919091527f9fba4a27b77afdf6c68deb1d99abfd909cb0c2bfa6a148fae3c6b8414e58aef991015b60405180910390a15050565b5f610a4d338484610fb0565b5f546001600160a01b03163314610d835760405162461bcd60e51b8152600401610735906119d6565b6001600160a01b03165f908152600160208190526040909120805460ff19169091179055565b610db233610efd565b610dce5760405162461bcd60e51b81526004016107359061192a565b6016805460ff191683151590811790915560178290556040805160ff90921615158252602082018390527f30e0f7c488b6c70123097f13cf387e140b0e0b8c9d9e3473e502f35b035d377c9101610d42565b5f546001600160a01b03163314610e495760405162461bcd60e51b8152600401610735906119d6565b6001600160a01b03165f908152600160205260409020805460ff19169055565b5f546001600160a01b03163314610e925760405162461bcd60e51b8152600401610735906119d6565b5f80546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6001600160a01b03165f9081526001602052604090205460ff1690565b5f80610f268385611a05565b905083811015610a4d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610735565b5f8184841115610f9b5760405162461bcd60e51b815260040161073591906117bb565b505f610fa78486611a18565b95945050505050565b6018545f9060ff1615610fcf57610fc8848484611140565b9050610a4d565b610fd7611223565b15610fe457610fe4611270565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260059091529190912054611035918490610f78565b6001600160a01b0385165f90815260056020908152604080832093909355601590529081205460ff16156110695782611074565b6110748585856113ec565b6001600160a01b0385165f908152600560205260409020549091506110999082610f1a565b6001600160a01b038086165f8181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110ec9085815260200190565b60405180910390a3506001949350505050565b5f610a4d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f78565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600590915291822054611190918490610f78565b6001600160a01b038086165f9081526005602052604080822093909355908516815220546111be9083610f1a565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112119086815260200190565b60405180910390a35060019392505050565b6019545f906001600160a01b03163314801590611243575060185460ff16155b8015611251575060165460ff165b8015610a9f575050601754305f90815260056020526040902054101590565b6018805460ff191660011790556008546007545f9161128f9190610f1a565b9050805f0361129e57506113e0565b476112a8826114fb565b5f6112b347836110ff565b905080156113dc575f6112de846112d86007600101548561165390919063ffffffff16565b906116d1565b90505f6112eb83836110ff565b90508015611363576013546040515f916001600160a01b03169061753090849084818181858888f193505050503d805f8114611342576040519150601f19603f3d011682016040523d82523d5f602084013e611347565b606091505b50506009545f925061135a915083610f1a565b600955505f6007555b81156113d9576014546040515f916001600160a01b03169061753090859084818181858888f193505050503d805f81146113b8576040519150601f19603f3d011682016040523d82523d5f602084013e6113bd565b606091505b5050600a545f92506113d0915084610f1a565b600a55505f6008555b50505b5050505b6018805460ff19169055565b6019545f9081906001600160a01b039081169086160361143257611411600b84611712565b600d54600e54611421908561196e565b61142b9190611985565b9050611470565b6019546001600160a01b039081169085160361147057611453600f84611712565b601154601254611463908561196e565b61146d9190611985565b90505b805f036114805782915050610a4d565b305f908152600560205260409020546114999082610f1a565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114e99085815260200190565b60405180910390a3610fa78184611a18565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061152e5761152e611a2b565b60200260200101906001600160a01b031690816001600160a01b031681525050601860019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c39190611a3f565b816001815181106115d6576115d6611a2b565b6001600160a01b03928316602091820292909201015260185460405163791ac94760e01b81526101009091049091169063791ac947906116229085905f90869030904290600401611a5a565b5f604051808303815f87803b158015611639575f80fd5b505af115801561164b573d5f803e3d5ffd5b505050505050565b5f825f0361166257505f61070a565b5f61166d838561196e565b90508261167a8583611985565b14610a4d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610735565b5f610a4d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061178f565b81541561174c57600282015482545f919061172d908461196e565b6117379190611985565b6007549091506117479082610f1a565b600755505b60018201541561178b575f826002015483600101548361176c919061196e565b6117769190611985565b6008549091506117869082610f1a565b600855505b5050565b5f81836117af5760405162461bcd60e51b815260040161073591906117bb565b505f610fa78486611985565b5f602080835283518060208501525f5b818110156117e7578581018301518582016040015282016117cb565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461181b575f80fd5b50565b5f806040838503121561182f575f80fd5b823561183a81611807565b946020939093013593505050565b5f805f6060848603121561185a575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215611883575f80fd5b833561188e81611807565b9250602084013561189e81611807565b929592945050506040919091013590565b5f602082840312156118bf575f80fd5b8135610a4d81611807565b5f80604083850312156118db575f80fd5b82356118e681611807565b915060208301356118f681611807565b809150509250929050565b801515811461181b575f80fd5b5f806040838503121561191f575f80fd5b823561183a81611901565b602080825260169082015275165bdd48185c99481b9bdd08185d5d1a1bdc9a5e995960521b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761070a5761070a61195a565b5f8261199f57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156119b4575f80fd5b5051919050565b5f602082840312156119cb575f80fd5b8151610a4d81611901565b6020808252601590820152742cb7ba9030b932903737ba103a34329037bbb732b960591b604082015260600190565b8082018082111561070a5761070a61195a565b8181038181111561070a5761070a61195a565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611a4f575f80fd5b8151610a4d81611807565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611aaa5784516001600160a01b031683529383019391830191600101611a85565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122013ae2b6d3aa07f662a790754d3c4b96216d124a46db0de36f39266c52fc14f8e64736f6c63430008160033

Deployed Bytecode Sourcemap

5235:13083:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6477:32;;;;;;;;;;-1:-1:-1;6477:32:0;;;;;;;;;;;;;188:25:1;;;244:2;229:18;;222:34;;;;161:18;6477:32:0;;;;;;;;6775:50;;;;;;;;;;;;;;;;;;;413:25:1;;;401:2;386:18;6775:50:0;267:177:1;8095:94:0;;;;;;;;;;-1:-1:-1;8176:5:0;;;;;;;;;;;;-1:-1:-1;;;8176:5:0;;;;8095:94;;;;;;;:::i;8620:248::-;;;;;;;;;;-1:-1:-1;8620:248:0;;;;;:::i;:::-;;:::i;:::-;;;1623:14:1;;1616:22;1598:41;;1586:2;1571:18;8620:248:0;1458:187:1;12378:643:0;;;;;;;;;;-1:-1:-1;12378:643:0;;;;;:::i;:::-;;:::i;:::-;;13358:654;;;;;;;;;;-1:-1:-1;13358:654:0;;;;;:::i;:::-;;:::i;7777:102::-;;;;;;;;;;-1:-1:-1;7859:12:0;;7777:102;;9605:416;;;;;;;;;;-1:-1:-1;9605:416:0;;;;;:::i;:::-;;:::i;18173:142::-;;;;;;;;;;;;;:::i;6562:41::-;;;;;;;;;;-1:-1:-1;6562:41:0;;;;;;;;;;;;;;;;;;;2663:25:1;;;2719:2;2704:18;;2697:34;;;;2747:18;;;2740:34;2805:2;2790:18;;2783:34;2650:3;2635:19;6562:41:0;2432:391:1;3206:103:0;;;;;;;;;;-1:-1:-1;3206:103:0;;;;;:::i;:::-;3261:4;3296:5;-1:-1:-1;;;;;3285:16:0;;;3296:5;;3285:16;;3206:103;7887:94;;;;;;;;;;-1:-1:-1;7887:94:0;;5549:2;3222:36:1;;3210:2;3195:18;7887:94:0;3080:184:1;6442:28:0;;;;;;;;;;-1:-1:-1;6442:28:0;;;;;;;;;6516:39;;;;;;;;;;-1:-1:-1;6516:39:0;;;;;;;;;;;;;;;8876:116;;;;;;;;;;-1:-1:-1;8876:116:0;;;;;:::i;:::-;;:::i;6738:30::-;;;;;;;;;;-1:-1:-1;6738:30:0;;;;;;;;8297:119;;;;;;;;;;-1:-1:-1;8297:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8390:18:0;8363:7;8390:18;;;:9;:18;;;;;;;8297:119;8197:92;;;;;;;;;;-1:-1:-1;8249:7:0;8276:5;-1:-1:-1;;;;;8276:5:0;8197:92;;;-1:-1:-1;;;;;3433:32:1;;;3415:51;;3403:2;3388:18;8197:92:0;3269:203:1;17909:256:0;;;;;;;;;;-1:-1:-1;17909:256:0;;;;;:::i;:::-;;:::i;7989:98::-;;;;;;;;;;-1:-1:-1;8072:7:0;;;;;;;;;;;;-1:-1:-1;;;8072:7:0;;;;7989:98;;17420:256;;;;;;;;;;-1:-1:-1;17420:256:0;;;;;:::i;:::-;;:::i;14263:309::-;;;;;;;;;;-1:-1:-1;14263:309:0;;;;;:::i;:::-;;:::i;6978:19::-;;;;;;;;;;-1:-1:-1;6978:19:0;;;;-1:-1:-1;;;;;6978:19:0;;;9000:188;;;;;;;;;;-1:-1:-1;9000:188:0;;;;;:::i;:::-;;:::i;6612:35::-;;;;;;;;;;-1:-1:-1;6612:35:0;;;;-1:-1:-1;;;;;6612:35:0;;;2863:102;;;;;;;;;;-1:-1:-1;2863:102:0;;;;;:::i;:::-;;:::i;8424:188::-;;;;;;;;;;-1:-1:-1;8424:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;8576:19:0;;;8544:7;8576:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8424:188;14843:246;;;;;;;;;;-1:-1:-1;14843:246:0;;;;;:::i;:::-;;:::i;6654:30::-;;;;;;;;;;-1:-1:-1;6654:30:0;;;;-1:-1:-1;;;;;6654:30:0;;;3041:105;;;;;;;;;;-1:-1:-1;3041:105:0;;;;;:::i;:::-;;:::i;3614:189::-;;;;;;;;;;-1:-1:-1;3614:189:0;;;;;:::i;:::-;;:::i;6947:24::-;;;;;;;;;;-1:-1:-1;6947:24:0;;;;;;;-1:-1:-1;;;;;6947:24:0;;;3380:115;;;;;;;;;;-1:-1:-1;3380:115:0;;;;;:::i;:::-;;:::i;8620:248::-;8756:10;8722:4;8744:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8744:32:0;;;;;;;;;;:41;;;8801:37;8722:4;;8744:32;;8801:37;;;;8779:6;413:25:1;;401:2;386:18;;267:177;8801:37:0;;;;;;;;-1:-1:-1;8856:4:0;8620:248;;;;;:::o;12378:643::-;2728:24;2741:10;2728:12;:24::i;:::-;2720:59;;;;-1:-1:-1;;;2720:59:0;;;;;;;:::i;:::-;;;;;;;;;12529:6:::1;:32:::0;;;12572:11;:22;;;12605:18;:36;;;12667:27:::1;12548:13:::0;12586:8;12667:17:::1;:27::i;:::-;12652:12:::0;:42;12744:18;;12770:3:::1;::::0;12744:22:::1;::::0;12765:1:::1;12744:22;:::i;:::-;12743:30;;;;:::i;:::-;12727:12:::0;;:46:::1;;12705:122;;;::::0;-1:-1:-1;;;12705:122:0;;5873:2:1;12705:122:0::1;::::0;::::1;5855:21:1::0;5912:2;5892:18;;;5885:30;5951:28;5931:18;;;5924:56;5997:18;;12705:122:0::1;5671:350:1::0;12705:122:0::1;12860:18:::0;;12838:103:::1;;;::::0;-1:-1:-1;;;12838:103:0;;6228:2:1;12838:103:0::1;::::0;::::1;6210:21:1::0;6267:2;6247:18;;;6240:30;6306:33;6286:18;;;6279:61;6357:18;;12838:103:0::1;6026:355:1::0;12838:103:0::1;12957:56;::::0;;6588:25:1;;;6644:2;6629:18;;6622:34;;;6672:18;;;6665:34;;;12957:56:0::1;::::0;6576:2:1;6561:18;12957:56:0::1;;;;;;;;12378:643:::0;;;:::o;13358:654::-;2728:24;2741:10;2728:12;:24::i;:::-;2720:59;;;;-1:-1:-1;;;2720:59:0;;;;;;;:::i;:::-;13510:7:::1;:33:::0;;;13554:12;:23;;;13588:19;:37;;;13652:27:::1;13530:13:::0;13569:8;13652:17:::1;:27::i;:::-;13636:13:::0;:43;13730:19;;13758:3:::1;::::0;13730:24:::1;::::0;13752:2:::1;13730:24;:::i;:::-;13729:32;;;;:::i;:::-;13712:13:::0;;:49:::1;;13690:126;;;::::0;-1:-1:-1;;;13690:126:0;;6912:2:1;13690:126:0::1;::::0;::::1;6894:21:1::0;6951:2;6931:18;;;6924:30;6990:29;6970:18;;;6963:57;7037:18;;13690:126:0::1;6710:351:1::0;13690:126:0::1;13849:19:::0;;13827:104:::1;;;::::0;-1:-1:-1;;;13827:104:0;;6228:2:1;13827:104:0::1;::::0;::::1;6210:21:1::0;6267:2;6247:18;;;6240:30;6306:33;6286:18;;;6279:61;6357:18;;13827:104:0::1;6026:355:1::0;13827:104:0::1;13947:57;::::0;;6588:25:1;;;6644:2;6629:18;;6622:34;;;6672:18;;;6665:34;;;13947:57:0::1;::::0;6576:2:1;6561:18;13947:57:0::1;6386:319:1::0;9605:416:0;-1:-1:-1;;;;;9760:19:0;;9739:4;9760:19;;;:11;:19;;;;;;;;9780:10;9760:31;;;;;;;;-1:-1:-1;;9760:46:0;9756:200;;9857:87;;;;;;;;;;;-1:-1:-1;;;9857:87:0;;;;;;;;-1:-1:-1;;;;;9857:19:0;;-1:-1:-1;9857:19:0;;;:11;:19;;;;;9877:10;9857:31;;;;;;;;;;:87;;9911:6;;9857:53;:87::i;:::-;-1:-1:-1;;;;;9823:19:0;;;;;;:11;:19;;;;;;;;9843:10;9823:31;;;;;;;:121;9756:200;9973:40;9987:6;9995:9;10006:6;9973:13;:40::i;:::-;9966:47;;9605:416;;;;;;:::o;18173:142::-;18301:4;;-1:-1:-1;;;;;18301:4:0;18226:7;8390:18;;;:9;:18;;;;;;18253:54;;18280:4;;-1:-1:-1;;;;;18280:4:0;8363:7;8390:18;;;:9;:18;;;;;;18253:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;18246:61;;18173:142;:::o;8876:116::-;8931:4;8955:29;8963:7;-1:-1:-1;;8955:7:0;:29::i;17909:256::-;2728:24;2741:10;2728:12;:24::i;:::-;2720:59;;;;-1:-1:-1;;;2720:59:0;;;;;;;:::i;:::-;18012:38:::1;::::0;-1:-1:-1;;;18012:38:0;;18044:4:::1;18012:38;::::0;::::1;3415:51:1::0;17995:14:0::1;::::0;-1:-1:-1;;;;;18012:23:0;::::1;::::0;::::1;::::0;3388:18:1;;18012:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18061:39;::::0;-1:-1:-1;;;18061:39:0;;-1:-1:-1;;;;;7447:32:1;;;18061:39:0::1;::::0;::::1;7429:51:1::0;7496:18;;;7489:34;;;17995:55:0;;-1:-1:-1;18061:22:0;;::::1;::::0;::::1;::::0;7402:18:1;;18061:39:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18116:41:0::1;::::0;;-1:-1:-1;;;;;8042:15:1;;;8024:34;;8094:15;;8089:2;8074:18;;8067:43;8126:18;;;8119:34;;;18116:41:0::1;::::0;7974:2:1;7959:18;18116:41:0::1;7784:375:1::0;17420:256:0;2728:24;2741:10;2728:12;:24::i;:::-;2720:59;;;;-1:-1:-1;;;2720:59:0;;;;;;;:::i;:::-;17554:42:::1;::::0;17506:21:::1;::::0;17489:14:::1;::::0;-1:-1:-1;;;;;17554:21:0;::::1;::::0;17506;;17489:14;17554:42;17489:14;17554:42;17506:21;17554;:42:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17538:58;;;17615:4;17607:13;;;::::0;::::1;;17636:32;::::0;;-1:-1:-1;;;;;7447:32:1;;7429:51;;7511:2;7496:18;;7489:34;;;17636:32:0::1;::::0;7402:18:1;17636:32:0::1;7255:274:1::0;14263:309:0;2728:24;2741:10;2728:12;:24::i;:::-;2720:59;;;;-1:-1:-1;;;2720:59:0;;;;;;;:::i;:::-;14401:20:::1;:44:::0;;-1:-1:-1;;;;;14401:44:0;;::::1;-1:-1:-1::0;;;;;;14401:44:0;;::::1;::::0;::::1;::::0;;;14456:15:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;14506:58:::1;::::0;;8586:34:1;;;8651:2;8636:18;;8629:43;;;;14506:58:0::1;::::0;8521:18:1;14506:58:0::1;;;;;;;;14263:309:::0;;:::o;9000:188::-;9107:4;9136:44;9150:10;9162:9;9173:6;9136:13;:44::i;2863:102::-;3261:4;3296:5;-1:-1:-1;;;;;3296:5:0;2543:10;3285:16;2527:53;;;;-1:-1:-1;;;2527:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2927:23:0::1;;::::0;;;2953:4:::1;2927:23;::::0;;;;;;;:30;;-1:-1:-1;;2927:30:0::1;::::0;;::::1;::::0;;2863:102::o;14843:246::-;2728:24;2741:10;2728:12;:24::i;:::-;2720:59;;;;-1:-1:-1;;;2720:59:0;;;;;;;:::i;:::-;14958:11:::1;:22:::0;;-1:-1:-1;;14958:22:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14991:13:::1;:23:::0;;;15030:51:::1;::::0;;14958:22:::1;15054:11:::0;;;9226:14:1;9219:22;9201:41;;9273:2;9258:18;;9251:34;;;15030:51:0::1;::::0;9174:18:1;15030:51:0::1;9033:258:1::0;3041:105:0;3261:4;3296:5;-1:-1:-1;;;;;3296:5:0;2543:10;3285:16;2527:53;;;;-1:-1:-1;;;2527:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3107:23:0::1;3133:5;3107:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;3107:31:0::1;::::0;;3041:105::o;3614:189::-;3261:4;3296:5;-1:-1:-1;;;;;3296:5:0;2543:10;3285:16;2527:53;;;;-1:-1:-1;;;2527:53:0;;;;;;;:::i;:::-;3694:5:::1;:15:::0;;-1:-1:-1;;;;;;3694:15:0::1;-1:-1:-1::0;;;;;3694:15:0;::::1;::::0;;::::1;::::0;;3720:23;;;-1:-1:-1;3720:23:0::1;::::0;;;;;;;;:30;;-1:-1:-1;;3720:30:0::1;::::0;;::::1;::::0;;;3766:29;;3415:51:1;;;3766:29:0::1;::::0;3388:18:1;3766:29:0::1;;;;;;;3614:189:::0;:::o;3380:115::-;-1:-1:-1;;;;;3464:23:0;3440:4;3464:23;;;:14;:23;;;;;;;;;3380:115::o;3884:181::-;3942:7;;3974:5;3978:1;3974;:5;:::i;:::-;3962:17;;4003:1;3998;:6;;3990:46;;;;-1:-1:-1;;;3990:46:0;;9844:2:1;3990:46:0;;;9826:21:1;9883:2;9863:18;;;9856:30;9922:29;9902:18;;;9895:57;9969:18;;3990:46:0;9642:351:1;4217:226:0;4337:7;4373:12;4365:6;;;;4357:29;;;;-1:-1:-1;;;4357:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4397:9:0;4409:5;4413:1;4409;:5;:::i;:::-;4397:17;4217:226;-1:-1:-1;;;;;4217:226:0:o;10029:715::-;10176:6;;10155:4;;10176:6;;10172:87;;;10206:41;10221:6;10229:9;10240:6;10206:14;:41::i;:::-;10199:48;;;;10172:87;10273:16;:14;:16::i;:::-;10269:59;;;10306:10;:8;:10::i;:::-;10358:90;;;;;;;;;;;-1:-1:-1;;;10358:90:0;;;;;;;;-1:-1:-1;;;;;10358:17:0;;-1:-1:-1;10358:17:0;;;:9;:17;;;;;;;;:90;;10394:6;;10358:21;:90::i;:::-;-1:-1:-1;;;;;10338:17:0;;;;;;:9;:17;;;;;;;;:110;;;;10839:11;:19;;;;;;;;10838:20;10486:93;;10573:6;10486:93;;;10523:34;10531:6;10539:9;10550:6;10523:7;:34::i;:::-;-1:-1:-1;;;;;10613:20:0;;;;;;:9;:20;;;;;;10461:118;;-1:-1:-1;10613:40:0;;10461:118;10613:24;:40::i;:::-;-1:-1:-1;;;;;10590:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10671:43;;;;;;;;;;10699:14;413:25:1;;401:2;386:18;;267:177;10671:43:0;;;;;;;;-1:-1:-1;10732:4:0;;10029:715;-1:-1:-1;;;;10029:715:0:o;4073:136::-;4131:7;4158:43;4162:1;4165;4158:43;;;;;;;;;;;;;;;;;:3;:43::i;9196:401::-;9360:90;;;;;;;;;;;-1:-1:-1;;;9360:90:0;;;;;;;;-1:-1:-1;;;;;9360:17:0;;9323:4;9360:17;;;:9;:17;;;;;;;:90;;9396:6;;9360:21;:90::i;:::-;-1:-1:-1;;;;;9340:17:0;;;;;;;:9;:17;;;;;;:110;;;;9484:20;;;;;;;:32;;9509:6;9484:24;:32::i;:::-;-1:-1:-1;;;;;9461:20:0;;;;;;;:9;:20;;;;;;;:55;;;;9532:35;;;;;;;;;;9560:6;413:25:1;;401:2;386:18;;267:177;9532:35:0;;;;;;;;-1:-1:-1;9585:4:0;9196:401;;;;;:::o;15142:222::-;15242:4;;15191;;-1:-1:-1;;;;;15242:4:0;15228:10;:18;;;;:42;;-1:-1:-1;15264:6:0;;;;15263:7;15228:42;:70;;;;-1:-1:-1;15287:11:0;;;;15228:70;:128;;;;-1:-1:-1;;15343:13:0;;15333:4;15315:24;;;;:9;:24;;;;;;:41;;;15142:222::o;15462:1403::-;6881:6;:13;;-1:-1:-1;;6881:13:0;6890:4;6881:13;;;15559:15;;:10:::1;15534:20:::0;6881:6;;15534:41:::1;::::0;:20;:24:::1;:41::i;:::-;15511:64;;15590:12;15606:1;15590:17:::0;15586:56:::1;;15624:7;;;15586:56;15678:21;15710:26;15723:12:::0;15710::::1;:26::i;:::-;15747:17;15767:40;:21;15793:13:::0;15767:25:::1;:40::i;:::-;15747:60:::0;-1:-1:-1;15824:13:0;;15820:1038:::1;;15854:21;15878:80;15931:12;15878:30;15892:10;:15;;;15878:9;:13;;:30;;;;:::i;:::-;:34:::0;::::1;:80::i;:::-;15854:104:::0;-1:-1:-1;15973:26:0::1;16002:28;:9:::0;15854:104;16002:13:::1;:28::i;:::-;15973:57:::0;-1:-1:-1;16051:22:0;;16047:416:::1;;16133:20;::::0;16125:99:::1;::::0;16095:24:::1;::::0;-1:-1:-1;;;;;16133:20:0::1;::::0;16214:5:::1;::::0;16189:18;;16095:24;16125:99;16095:24;16125:99;16189:18;16133:20;16214:5;16125:99:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16316:14:0::1;:24:::0;16265:5:::1;::::0;-1:-1:-1;16316:88:0::1;::::0;-1:-1:-1;16367:18:0;16316:28:::1;:88::i;:::-;16289:14;:115:::0;-1:-1:-1;16289:24:0::1;16423:10;:24:::0;16047:416:::1;16481:17:::0;;16477:370:::1;;16553:15;::::0;16545:128:::1;::::0;16520:19:::1;::::0;-1:-1:-1;;;;;16553:15:0::1;::::0;16645:5:::1;::::0;16604:13;;16520:19;16545:128;16520:19;16545:128;16604:13;16553:15;16645:5;16545:128:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16755:19:0;;16709:5:::1;::::0;-1:-1:-1;16755:38:0::1;::::0;-1:-1:-1;16779:13:0;16755:23:::1;:38::i;:::-;16733:19:::0;:60;-1:-1:-1;16830:1:0::1;16812:15:::0;:19;16477:370:::1;15839:1019;;15820:1038;15500:1365;;;6905:1;6917:6:::0;:14;;-1:-1:-1;;6917:14:0;;;15462:1403::o;10874:716::-;11060:4;;10994:7;;;;-1:-1:-1;;;;;11060:4:0;;;11050:14;;;;11046:292;;11081:22;11088:6;11096;11081;:22::i;:::-;11156:18;;11140:12;;11131:21;;:6;:21;:::i;:::-;11130:44;;;;:::i;:::-;11118:56;;11046:292;;;11209:4;;-1:-1:-1;;;;;11209:4:0;;;11196:17;;;;11192:146;;11230:23;11237:7;11246:6;11230;:23::i;:::-;11307:19;;11290:13;;11281:22;;:6;:22;:::i;:::-;11280:46;;;;:::i;:::-;11268:58;;11192:146;11352:9;11365:1;11352:14;11348:60;;11390:6;11383:13;;;;;11348:60;11465:4;11447:24;;;;:9;:24;;;;;;:39;;11476:9;11447:28;:39::i;:::-;11438:4;11420:24;;;;:9;:24;;;;;;;:66;;;;11502:42;;-1:-1:-1;;;;;11502:42:0;;;;;;;11534:9;413:25:1;;401:2;386:18;;267:177;11502:42:0;;;;;;;;11564:18;11573:9;11564:6;:18;:::i;16873:376::-;16959:16;;;16973:1;16959:16;;;;;;;;16935:21;;16959:16;;;;;;;;;;-1:-1:-1;16959:16:0;16935:40;;17004:4;16986;16991:1;16986:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;16986:23:0;;;-1:-1:-1;;;;;16986:23:0;;;;;17030:6;;;;;;;;;-1:-1:-1;;;;;17030:6:0;-1:-1:-1;;;;;17030:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17020:4;17025:1;17020:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17020:23:0;;;:7;;;;;;;;;:23;17054:6;;:187;;-1:-1:-1;;;17054:187:0;;:6;;;;;;;;:57;;:187;;17126:11;;17152:1;;17168:4;;17195;;17215:15;;17054:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16924:325;16873:376;:::o;4451:250::-;4509:7;4533:1;4538;4533:6;4529:47;;-1:-1:-1;4563:1:0;4556:8;;4529:47;4588:9;4600:5;4604:1;4600;:5;:::i;:::-;4588:17;-1:-1:-1;4633:1:0;4624:5;4628:1;4588:17;4624:5;:::i;:::-;:10;4616:56;;;;-1:-1:-1;;;4616:56:0;;11838:2:1;4616:56:0;;;11820:21:1;11877:2;11857:18;;;11850:30;11916:34;11896:18;;;11889:62;-1:-1:-1;;;11967:18:1;;;11960:31;12008:19;;4616:56:0;11636:397:1;4709:132:0;4767:7;4794:39;4798:1;4801;4794:39;;;;;;;;;;;;;;;;;:3;:39::i;11598:446::-;11673:14;;:18;11669:194;;11759:16;;;;11741:14;;11708:20;;11759:16;11732:23;;:6;:23;:::i;:::-;11731:44;;;;:::i;:::-;11813:10;:20;11708:67;;-1:-1:-1;11813:38:0;;11708:67;11813:24;:38::i;:::-;11790:10;:61;-1:-1:-1;11669:194:0;11877:9;;;;:13;11873:164;;11907:15;11948:4;:16;;;11935:4;:9;;;11926:6;:18;;;;:::i;:::-;11925:39;;;;:::i;:::-;11997:15;;11907:57;;-1:-1:-1;11997:28:0;;11907:57;11997:19;:28::i;:::-;11979:15;:46;-1:-1:-1;11873:164:0;11598:446;;:::o;4849:379::-;4969:7;5071:12;5064:5;5056:28;;;;-1:-1:-1;;;5056:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5095:9:0;5107:5;5111:1;5107;:5;:::i;449:548:1:-;561:4;590:2;619;608:9;601:21;651:6;645:13;694:6;689:2;678:9;674:18;667:34;719:1;729:140;743:6;740:1;737:13;729:140;;;838:14;;;834:23;;828:30;804:17;;;823:2;800:26;793:66;758:10;;729:140;;;733:3;918:1;913:2;904:6;893:9;889:22;885:31;878:42;988:2;981;977:7;972:2;964:6;960:15;956:29;945:9;941:45;937:54;929:62;;;;449:548;;;;:::o;1002:131::-;-1:-1:-1;;;;;1077:31:1;;1067:42;;1057:70;;1123:1;1120;1113:12;1057:70;1002:131;:::o;1138:315::-;1206:6;1214;1267:2;1255:9;1246:7;1242:23;1238:32;1235:52;;;1283:1;1280;1273:12;1235:52;1322:9;1309:23;1341:31;1366:5;1341:31;:::i;:::-;1391:5;1443:2;1428:18;;;;1415:32;;-1:-1:-1;;;1138:315:1:o;1650:316::-;1727:6;1735;1743;1796:2;1784:9;1775:7;1771:23;1767:32;1764:52;;;1812:1;1809;1802:12;1764:52;-1:-1:-1;;1835:23:1;;;1905:2;1890:18;;1877:32;;-1:-1:-1;1956:2:1;1941:18;;;1928:32;;1650:316;-1:-1:-1;1650:316:1:o;1971:456::-;2048:6;2056;2064;2117:2;2105:9;2096:7;2092:23;2088:32;2085:52;;;2133:1;2130;2123:12;2085:52;2172:9;2159:23;2191:31;2216:5;2191:31;:::i;:::-;2241:5;-1:-1:-1;2298:2:1;2283:18;;2270:32;2311:33;2270:32;2311:33;:::i;:::-;1971:456;;2363:7;;-1:-1:-1;;;2417:2:1;2402:18;;;;2389:32;;1971:456::o;2828:247::-;2887:6;2940:2;2928:9;2919:7;2915:23;2911:32;2908:52;;;2956:1;2953;2946:12;2908:52;2995:9;2982:23;3014:31;3039:5;3014:31;:::i;3477:388::-;3545:6;3553;3606:2;3594:9;3585:7;3581:23;3577:32;3574:52;;;3622:1;3619;3612:12;3574:52;3661:9;3648:23;3680:31;3705:5;3680:31;:::i;:::-;3730:5;-1:-1:-1;3787:2:1;3772:18;;3759:32;3800:33;3759:32;3800:33;:::i;:::-;3852:7;3842:17;;;3477:388;;;;;:::o;3870:118::-;3956:5;3949:13;3942:21;3935:5;3932:32;3922:60;;3978:1;3975;3968:12;3993:309;4058:6;4066;4119:2;4107:9;4098:7;4094:23;4090:32;4087:52;;;4135:1;4132;4125:12;4087:52;4174:9;4161:23;4193:28;4215:5;4193:28;:::i;4793:346::-;4995:2;4977:21;;;5034:2;5014:18;;;5007:30;-1:-1:-1;;;5068:2:1;5053:18;;5046:52;5130:2;5115:18;;4793:346::o;5144:127::-;5205:10;5200:3;5196:20;5193:1;5186:31;5236:4;5233:1;5226:15;5260:4;5257:1;5250:15;5276:168;5349:9;;;5380;;5397:15;;;5391:22;;5377:37;5367:71;;5418:18;;:::i;5449:217::-;5489:1;5515;5505:132;;5559:10;5554:3;5550:20;5547:1;5540:31;5594:4;5591:1;5584:15;5622:4;5619:1;5612:15;5505:132;-1:-1:-1;5651:9:1;;5449:217::o;7066:184::-;7136:6;7189:2;7177:9;7168:7;7164:23;7160:32;7157:52;;;7205:1;7202;7195:12;7157:52;-1:-1:-1;7228:16:1;;7066:184;-1:-1:-1;7066:184:1:o;7534:245::-;7601:6;7654:2;7642:9;7633:7;7629:23;7625:32;7622:52;;;7670:1;7667;7660:12;7622:52;7702:9;7696:16;7721:28;7743:5;7721:28;:::i;8683:345::-;8885:2;8867:21;;;8924:2;8904:18;;;8897:30;-1:-1:-1;;;8958:2:1;8943:18;;8936:51;9019:2;9004:18;;8683:345::o;9512:125::-;9577:9;;;9598:10;;;9595:36;;;9611:18;;:::i;9998:128::-;10065:9;;;10086:11;;;10083:37;;;10100:18;;:::i;10263:127::-;10324:10;10319:3;10315:20;10312:1;10305:31;10355:4;10352:1;10345:15;10379:4;10376:1;10369:15;10395:251;10465:6;10518:2;10506:9;10497:7;10493:23;10489:32;10486:52;;;10534:1;10531;10524:12;10486:52;10566:9;10560:16;10585:31;10610:5;10585:31;:::i;10651:980::-;10913:4;10961:3;10950:9;10946:19;10992:6;10981:9;10974:25;11018:2;11056:6;11051:2;11040:9;11036:18;11029:34;11099:3;11094:2;11083:9;11079:18;11072:31;11123:6;11158;11152:13;11189:6;11181;11174:22;11227:3;11216:9;11212:19;11205:26;;11266:2;11258:6;11254:15;11240:29;;11287:1;11297:195;11311:6;11308:1;11305:13;11297:195;;;11376:13;;-1:-1:-1;;;;;11372:39:1;11360:52;;11467:15;;;;11432:12;;;;11408:1;11326:9;11297:195;;;-1:-1:-1;;;;;;;11548:32:1;;;;11543:2;11528:18;;11521:60;-1:-1:-1;;;11612:3:1;11597:19;11590:35;11509:3;10651:980;-1:-1:-1;;;10651:980:1:o

Swarm Source

ipfs://13ae2b6d3aa07f662a790754d3c4b96216d124a46db0de36f39266c52fc14f8e

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

Complex Behind & Simple up Front , Mercurelab is an On-chain data project that provides interractive data visualization dashboard to onboard people to their due diligence.

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.