ETH Price: $2,661.32 (+0.95%)

Contract

0xc753c33cD6CBf5DfECAccD793e64780a316fEDbc
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve187641582023-12-11 16:28:47324 days ago1702312127IN
0xc753c33c...a316fEDbc
0 ETH0.0025232354.2818173
Approve187641532023-12-11 16:27:47324 days ago1702312067IN
0xc753c33c...a316fEDbc
0 ETH0.0022870949.26546282
Approve187639772023-12-11 15:52:11324 days ago1702309931IN
0xc753c33c...a316fEDbc
0 ETH0.0020530344.16644257
Approve187639432023-12-11 15:45:23324 days ago1702309523IN
0xc753c33c...a316fEDbc
0 ETH0.0020513144.47401663
Approve187638612023-12-11 15:28:59324 days ago1702308539IN
0xc753c33c...a316fEDbc
0 ETH0.0023016349.84917324
Transfer187638562023-12-11 15:27:59324 days ago1702308479IN
0xc753c33c...a316fEDbc
0 ETH0.0033464544.71840244
Approve187638092023-12-11 15:18:35324 days ago1702307915IN
0xc753c33c...a316fEDbc
0 ETH0.0019255341.69270505
Approve187638032023-12-11 15:17:23324 days ago1702307843IN
0xc753c33c...a316fEDbc
0 ETH0.0022959549.72609152
Approve187637362023-12-11 15:03:47324 days ago1702307027IN
0xc753c33c...a316fEDbc
0 ETH0.0021059545.36345398
Approve187637162023-12-11 14:59:47324 days ago1702306787IN
0xc753c33c...a316fEDbc
0 ETH0.0022229147.88293197
Approve187637012023-12-11 14:56:47324 days ago1702306607IN
0xc753c33c...a316fEDbc
0 ETH0.0021024345.28760805
Approve187636982023-12-11 14:56:11324 days ago1702306571IN
0xc753c33c...a316fEDbc
0 ETH0.0011671140.14555246
Approve187636882023-12-11 14:54:11324 days ago1702306451IN
0xc753c33c...a316fEDbc
0 ETH0.0019230641.66084565
Approve187636832023-12-11 14:53:11324 days ago1702306391IN
0xc753c33c...a316fEDbc
0 ETH0.0021963647.25
Approve187636192023-12-11 14:40:23324 days ago1702305623IN
0xc753c33c...a316fEDbc
0 ETH0.0018984940.89460386
Approve187635732023-12-11 14:30:47324 days ago1702305047IN
0xc753c33c...a316fEDbc
0 ETH0.0019092141.12553726
Approve187635282023-12-11 14:21:47324 days ago1702304507IN
0xc753c33c...a316fEDbc
0 ETH0.0018940740.7995795
Approve187635162023-12-11 14:19:23324 days ago1702304363IN
0xc753c33c...a316fEDbc
0 ETH0.002536754.94026925
Approve187635162023-12-11 14:19:23324 days ago1702304363IN
0xc753c33c...a316fEDbc
0 ETH0.002536754.94026925
Approve187635162023-12-11 14:19:23324 days ago1702304363IN
0xc753c33c...a316fEDbc
0 ETH0.002536754.94026925
Approve187635162023-12-11 14:19:23324 days ago1702304363IN
0xc753c33c...a316fEDbc
0 ETH0.002536754.94026925
Approve187635162023-12-11 14:19:23324 days ago1702304363IN
0xc753c33c...a316fEDbc
0 ETH0.002536754.94026925
Approve187635162023-12-11 14:19:23324 days ago1702304363IN
0xc753c33c...a316fEDbc
0 ETH0.0026478157.34674986
Approve187635162023-12-11 14:19:23324 days ago1702304363IN
0xc753c33c...a316fEDbc
0 ETH0.0026478157.34674986
Approve187635162023-12-11 14:19:23324 days ago1702304363IN
0xc753c33c...a316fEDbc
0 ETH0.0026478157.34674986
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
187654122023-12-11 20:42:23324 days ago1702327343
0xc753c33c...a316fEDbc
0.04171587 ETH
187654122023-12-11 20:42:23324 days ago1702327343
0xc753c33c...a316fEDbc
0.04171587 ETH
187638012023-12-11 15:16:59324 days ago1702307819
0xc753c33c...a316fEDbc
0.05770983 ETH
187638012023-12-11 15:16:59324 days ago1702307819
0xc753c33c...a316fEDbc
0.05770983 ETH
187636942023-12-11 14:55:23324 days ago1702306523
0xc753c33c...a316fEDbc
0.03927129 ETH
187636942023-12-11 14:55:23324 days ago1702306523
0xc753c33c...a316fEDbc
0.03927129 ETH
187636672023-12-11 14:49:59324 days ago1702306199
0xc753c33c...a316fEDbc
0.0371212 ETH
187636672023-12-11 14:49:59324 days ago1702306199
0xc753c33c...a316fEDbc
0.0371212 ETH
187636312023-12-11 14:42:47324 days ago1702305767
0xc753c33c...a316fEDbc
0.00530224 ETH
187636312023-12-11 14:42:47324 days ago1702305767
0xc753c33c...a316fEDbc
0.00530224 ETH
187636302023-12-11 14:42:35324 days ago1702305755
0xc753c33c...a316fEDbc
0.02568192 ETH
187636302023-12-11 14:42:35324 days ago1702305755
0xc753c33c...a316fEDbc
0.02568192 ETH
187636142023-12-11 14:39:23324 days ago1702305563
0xc753c33c...a316fEDbc
0.00881557 ETH
187636142023-12-11 14:39:23324 days ago1702305563
0xc753c33c...a316fEDbc
0.00881557 ETH
187636092023-12-11 14:38:23324 days ago1702305503
0xc753c33c...a316fEDbc
0.00396356 ETH
187636092023-12-11 14:38:23324 days ago1702305503
0xc753c33c...a316fEDbc
0.00396356 ETH
187636082023-12-11 14:38:11324 days ago1702305491
0xc753c33c...a316fEDbc
0.01836898 ETH
187636082023-12-11 14:38:11324 days ago1702305491
0xc753c33c...a316fEDbc
0.01836898 ETH
187635832023-12-11 14:32:47324 days ago1702305167
0xc753c33c...a316fEDbc
0.00432331 ETH
187635832023-12-11 14:32:47324 days ago1702305167
0xc753c33c...a316fEDbc
0.00432331 ETH
187635812023-12-11 14:32:23324 days ago1702305143
0xc753c33c...a316fEDbc
0.00017636 ETH
187635812023-12-11 14:32:23324 days ago1702305143
0xc753c33c...a316fEDbc
0.00017636 ETH
187635802023-12-11 14:32:11324 days ago1702305131
0xc753c33c...a316fEDbc
0.02487962 ETH
187635802023-12-11 14:32:11324 days ago1702305131
0xc753c33c...a316fEDbc
0.02487962 ETH
187635392023-12-11 14:23:59324 days ago1702304639
0xc753c33c...a316fEDbc
0.00557308 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HODL

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

Website: https://hodlfi.org
Telegram: https://t.me/Hodlfi_Official
Twitter: https://twitter.com/HodlfiApp

*/

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

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

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 balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address holder, 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);
}


contract HODL is IERC20, Auth {
    string private constant _name    = "Hodl Token";
    string private constant _symbol  = "HODL";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 100000000 * (10**_decimals);
  
    address payable private _stakingAddr = payable(0x979335CA0b4870B40a99ecBc77F56cea8a27f196);
    
    uint8 private _sellTaxFee = 2;
    uint8 private _buyTaxFee  = 2;
    
    uint256 private _maxTxAmt = _totalSupply; 
    uint256 private _maxWalletAmt = _totalSupply;
    uint256 private _swapTokensMin = _totalSupply * 7 / 1000000;
    uint256 private _swapTokensMax = _totalSupply * 800 / 100000;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExSwap;
    mapping (address => bool) private _isExFees;
    mapping (address => bool) private _isExLimit;

    address private _lpReceiver;

    address private constant _routerAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private immutable WETH;
    
    IUniswapV2Router02 private _swapRouter = IUniswapV2Router02(_routerAddress);
    address private _lpAddr; 
    mapping (address => bool) private _isAmmPair;

    bool private _tradingActive;

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

    constructor() Auth(msg.sender) {
        _lpReceiver = msg.sender;
        WETH = _swapRouter.WETH();

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

        _isExFees[_owner] = true;
        _isExFees[address(this)] = true;
        _isExFees[_stakingAddr] = true;
        _isExFees[_routerAddress] = true;
        _isExSwap[_stakingAddr] = true;
        _isExLimit[_owner] = true;
        _isExLimit[address(this)] = true;
        _isExLimit[_stakingAddr] = true;
        _isExLimit[_routerAddress] = true;
        
    }

    receive() external payable {}
    
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    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 transfer(address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, toWallet, amount); }

    function transferFrom(address fromWallet, address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(fromWallet), "Trading not open");
        _allowances[fromWallet][msg.sender] -= amount;
        return _transferFrom(fromWallet, toWallet, amount); }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_routerAddress] < _tokenAmount ) {
            _allowances[address(this)][_routerAddress] = type(uint256).max;
            emit Approval(address(this), _routerAddress, type(uint256).max);
        }
    }

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_lpAddr == address(0), "LP created");
        require(!_tradingActive, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH");
        require(_balances[address(this)]>0, "No tokens");
        _lpAddr = IUniswapV2Factory(_swapRouter.factory()).createPair(address(this), WETH);
        _addLiquidity(_balances[address(this)], address(this).balance);
        _isAmmPair[_lpAddr] = true;
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal {
        _approveRouter(_tokenAmount);
        _swapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, _lpReceiver, block.timestamp );
    }

    function startTrading() external onlyOwner {
        _maxTxAmt     = 2 * _totalSupply / 100; 
        _maxWalletAmt = 2 * _totalSupply / 100;
        _tradingActive = true;
    }

    function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from 0 wallet");
        if (!_tradingActive) { require(_isExFees[sender] && _isExLimit[sender], "Trading not yet open"); }
        if ( !_inSwap && _isAmmPair[toWallet] && amount >= _swapTokensMin) { _swapBack(); }

        if ( sender != address(this) && toWallet != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, toWallet, amount), "TX over limits"); 
        }

        uint256 _taxAmount = _calculateTax(sender, toWallet, amount);
        uint256 _transferAmount = amount - _taxAmount;
        if(_isExSwap[sender]) amount = amount - _transferAmount;
        _balances[sender] -= amount;
        _balances[address(this)] += _taxAmount;
        _balances[toWallet] += _transferAmount;
        emit Transfer(sender, toWallet, amount);
        return true;
    }

    function _checkLimits(address fromWallet, address toWallet, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingActive && !_isExLimit[fromWallet] && !_isExLimit[toWallet] ) {
            if ( transferAmount > _maxTxAmt ) { 
                limitCheckPassed = false; 
            }
            else if ( 
                !_isAmmPair[toWallet] && (_balances[toWallet] + transferAmount > _maxWalletAmt) 
                ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingActive ) { checkResult = true; } 
        else if (_isExFees[fromWallet] && _isExLimit[fromWallet]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingActive || _isExFees[fromWallet] || _isExFees[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isAmmPair[fromWallet] ) { 
            taxAmount = amount * _buyTaxFee / 100; 
         } else if ( _isAmmPair[recipient] ) { 
            taxAmount = amount * _sellTaxFee / 100; 
        }

        return taxAmount;
    }

    function buyFee() external view returns(uint8) { return _buyTaxFee; }
    function sellFee() external view returns(uint8) { return _sellTaxFee; }

    function updateTaxFees(uint8 buyFees, uint8 sellFees) external onlyOwner {
        require(buyFees + sellFees <= 30, "Tax too high");
        _buyTaxFee = buyFees;
        _sellTaxFee = sellFees;
    }  

    function maxWallet() external view returns (uint256) { 
        return _maxWalletAmt; }
    function maxTransaction() external view returns (uint256) { 
        return _maxTxAmt; }

    function setTxLimits(uint16 maxTransPermille, uint16 maxWaletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransPermille / 1000 + 1;
        require(newTxAmt >= _maxTxAmt, "tx too low");
        _maxTxAmt = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWaletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletAmt, "wallet too low");
        _maxWalletAmt = newWalletAmt;
    }

    function _swapBack() private lockTaxSwap {
        uint256 _taxTokenAvailable = _balances[address(this)];
        if ( _taxTokenAvailable >= _swapTokensMin && _tradingActive ) {
            if ( _taxTokenAvailable >= _swapTokensMax ) { _taxTokenAvailable = _swapTokensMax; }
            
            _swapTokensForETH(_taxTokenAvailable);
            
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _sendETHFee(_contractETHBalance); }
        }
    }

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

    function _sendETHFee(uint256 amount) private {
        _stakingAddr.transfer(amount);
    }
}

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

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":"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":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setTxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","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":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromWallet","type":"address"},{"internalType":"address","name":"toWallet","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":"newowner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyFees","type":"uint8"},{"internalType":"uint8","name":"sellFees","type":"uint8"}],"name":"updateTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600180546001600160b01b031916750202979335ca0b4870b40a99ecbc77f56cea8a27f1961790556200003a6009600a6200044a565b6200004a906305f5e10062000462565b6002556200005b6009600a6200044a565b6200006b906305f5e10062000462565b600355620f4240620000806009600a6200044a565b62000090906305f5e10062000462565b6200009d90600762000462565b620000a991906200047c565b600455620186a0620000be6009600a6200044a565b620000ce906305f5e10062000462565b620000dc9061032062000462565b620000e891906200047c565b600555600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055600f805461ff00191690553480156200012957600080fd5b5060008054336001600160a01b03199182168117909255600b80549091169091179055600c54604080516315ab88c960e31b815290516001600160a01b039092169163ad5c4648916004808201926020929091908290030181865afa15801562000197573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bd91906200049f565b6001600160a01b0316608052620001d76009600a6200044a565b620001e7906305f5e10062000462565b33600081815260066020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600080546001600160a01b0390811682526009602090815260408084208054600160ff19918216811790925530808752838720805483168417905582548616875283872080548316841790557fbaa441ac52505693dd98c7dd2f5bbf8f9349b7da9de72f9d52e5cac70e7da8ce8054831684179055825486168752600885528387208054831684179055865486168752600a909452828620805482168317905592855281852080548416821790558054909316845283208054821683179055737a250d5630b4cf539739df2c5dacb4c659f2488d9092527fc90215bb1b0ac6bfa50a3c02c4b559c695b6a8e828048a88e327592fc55c5d2c8054909216179055620004ca565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200038c57816000190482111562000370576200037062000335565b808516156200037e57918102915b93841c939080029062000350565b509250929050565b600082620003a55750600162000444565b81620003b45750600062000444565b8160018114620003cd5760028114620003d857620003f8565b600191505062000444565b60ff841115620003ec57620003ec62000335565b50506001821b62000444565b5060208310610133831016604e8410600b84101617156200041d575081810a62000444565b6200042983836200034b565b806000190482111562000440576200044062000335565b0290505b92915050565b60006200045b60ff84168362000394565b9392505050565b808202811582820484141762000444576200044462000335565b6000826200049a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620004b257600080fd5b81516001600160a01b03811681146200045b57600080fd5b608051611831620004ed60003960008181610a5901526112da01526118316000f3fe6080604052600436106101235760003560e01c8063715018a6116100a0578063c3f70b5211610064578063c3f70b521461035e578063dd62ed3e14610373578063e8078d94146103b9578063f2fde38b146103c1578063f8b45b05146103e157600080fd5b8063715018a6146102b45780638da5cb5b146102c957806395d89b41146102f15780639fe9e7e31461031e578063a9059cbb1461033e57600080fd5b80632b14ca56116100e75780632b14ca56146101fe578063313ce5671461022b57806333f31e5a1461023f578063470624021461025f57806370a082311461027e57600080fd5b806306fdde031461012f578063095ea7b31461017457806318160ddd146101a457806323b872dd146101c7578063293230b8146101e757600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5060408051808201909152600a8152692437b236102a37b5b2b760b11b60208201525b60405161016b91906113c6565b60405180910390f35b34801561018057600080fd5b5061019461018f366004611429565b6103f6565b604051901515815260200161016b565b3480156101b057600080fd5b506101b9610463565b60405190815260200161016b565b3480156101d357600080fd5b506101946101e2366004611455565b610484565b3480156101f357600080fd5b506101fc61051f565b005b34801561020a57600080fd5b50600154600160a01b900460ff165b60405160ff909116815260200161016b565b34801561023757600080fd5b506009610219565b34801561024b57600080fd5b506101fc61025a3660046114ad565b6105c0565b34801561026b57600080fd5b50600154600160a81b900460ff16610219565b34801561028a57600080fd5b506101b96102993660046114e0565b6001600160a01b031660009081526006602052604090205490565b3480156102c057600080fd5b506101fc610703565b3480156102d557600080fd5b506000546040516001600160a01b03909116815260200161016b565b3480156102fd57600080fd5b506040805180820190915260048152631213d11360e21b602082015261015e565b34801561032a57600080fd5b506101fc61033936600461150e565b610772565b34801561034a57600080fd5b50610194610359366004611429565b61081c565b34801561036a57600080fd5b506002546101b9565b34801561037f57600080fd5b506101b961038e366004611538565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b6101fc610878565b3480156103cd57600080fd5b506101fc6103dc3660046114e0565b610b3c565b3480156103ed57600080fd5b506003546101b9565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104519086815260200190565b60405180910390a35060015b92915050565b60006104716009600a61166b565b61047f906305f5e10061167a565b905090565b600061048f84610bba565b6104d35760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064015b60405180910390fd5b6001600160a01b038416600090815260076020908152604080832033845290915281208054849290610506908490611691565b909155506105179050848484610c20565b949350505050565b6000546001600160a01b031633146105495760405162461bcd60e51b81526004016104ca906116a4565b60646105576009600a61166b565b610565906305f5e10061167a565b61057090600261167a565b61057a91906116db565b600255606461058b6009600a61166b565b610599906305f5e10061167a565b6105a490600261167a565b6105ae91906116db565b600355600f805460ff19166001179055565b6000546001600160a01b031633146105ea5760405162461bcd60e51b81526004016104ca906116a4565b60006103e861ffff84166106006009600a61166b565b61060e906305f5e10061167a565b610618919061167a565b61062291906116db565b61062d9060016116fd565b905060025481101561066e5760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b60448201526064016104ca565b600281905560006103e861ffff84166106896009600a61166b565b610697906305f5e10061167a565b6106a1919061167a565b6106ab91906116db565b6106b69060016116fd565b90506003548110156106fb5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b60448201526064016104ca565b600355505050565b6000546001600160a01b0316331461072d5760405162461bcd60e51b81526004016104ca906116a4565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b0316331461079c5760405162461bcd60e51b81526004016104ca906116a4565b601e6107a88284611710565b60ff1611156107e85760405162461bcd60e51b815260206004820152600c60248201526b0a8c2f040e8dede40d0d2ced60a31b60448201526064016104ca565b6001805461ffff60a01b1916600160a81b60ff9485160260ff60a01b191617600160a01b9290931691909102919091179055565b600061082733610bba565b6108665760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016104ca565b610871338484610c20565b9392505050565b6000546001600160a01b031633146108a25760405162461bcd60e51b81526004016104ca906116a4565b600f805461ff001916610100179055600d546001600160a01b0316156108f75760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b60448201526064016104ca565b600f5460ff16156109395760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b60448201526064016104ca565b60003411806109485750600047115b61097d5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b60448201526064016104ca565b306000908152600660205260409020546109c55760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b60448201526064016104ca565b600c60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3c9190611729565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063c9c65396906044016020604051808303816000875af1158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611729565b600d80546001600160a01b0319166001600160a01b039290921691909117905530600090815260066020526040902054610b0a9047610efe565b600d546001600160a01b03166000908152600e60205260409020805460ff19166001179055600f805461ff0019169055565b6000546001600160a01b03163314610b665760405162461bcd60e51b81526004016104ca906116a4565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600f54600090819060ff1615610bd25750600161045d565b6001600160a01b03831660009081526009602052604090205460ff168015610c1257506001600160a01b0383166000908152600a602052604090205460ff165b1561045d5750600192915050565b60006001600160a01b038416610c785760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c657400000000000060448201526064016104ca565b600f5460ff16610d05576001600160a01b03841660009081526009602052604090205460ff168015610cc257506001600160a01b0384166000908152600a602052604090205460ff165b610d055760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b60448201526064016104ca565b600f54610100900460ff16158015610d3557506001600160a01b0383166000908152600e602052604090205460ff165b8015610d4357506004548210155b15610d5057610d50610fa3565b6001600160a01b0384163014801590610d7257506001600160a01b0383163014155b8015610d8c57506000546001600160a01b03858116911614155b15610dd957610d9c848484611012565b610dd95760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b60448201526064016104ca565b6000610de68585856110dc565b90506000610df48285611691565b6001600160a01b03871660009081526008602052604090205490915060ff1615610e2557610e228185611691565b93505b6001600160a01b03861660009081526006602052604081208054869290610e4d908490611691565b90915550503060009081526006602052604081208054849290610e719084906116fd565b90915550506001600160a01b03851660009081526006602052604081208054839290610e9e9084906116fd565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610eea91815260200190565b60405180910390a350600195945050505050565b610f07826111d5565b600c54600b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015610f77573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f9c9190611746565b5050505050565b600f805461ff001916610100179055306000908152600660205260409020546004548110801590610fd65750600f5460ff165b15611004576005548110610fe957506005545b610ff28161127a565b4780156110025761100281611388565b505b50600f805461ff0019169055565b600f5460009060019060ff16801561104357506001600160a01b0385166000908152600a602052604090205460ff16155b801561106857506001600160a01b0384166000908152600a602052604090205460ff16155b156105175760025483111561107f57506000610517565b6001600160a01b0384166000908152600e602052604090205460ff161580156110cc57506003546001600160a01b0385166000908152600660205260409020546110ca9085906116fd565b115b1561051757506000949350505050565b600f54600090819060ff16158061110b57506001600160a01b03851660009081526009602052604090205460ff165b8061112e57506001600160a01b03841660009081526009602052604090205460ff165b1561113b57506000610517565b6001600160a01b0385166000908152600e602052604090205460ff16156111875760015460649061117690600160a81b900460ff168561167a565b61118091906116db565b9050610517565b6001600160a01b0384166000908152600e602052604090205460ff1615610517576001546064906111c290600160a01b900460ff168561167a565b6111cc91906116db565b95945050505050565b306000908152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561127757306000818152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611283816111d5565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106112b8576112b8611774565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061130c5761130c611774565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac9479061135290859060009086903090429060040161178a565b600060405180830381600087803b15801561136c57600080fd5b505af1158015611380573d6000803e3d6000fd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156113c2573d6000803e3d6000fd5b5050565b600060208083528351808285015260005b818110156113f3578581018301518582016040015282016113d7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461127757600080fd5b6000806040838503121561143c57600080fd5b823561144781611414565b946020939093013593505050565b60008060006060848603121561146a57600080fd5b833561147581611414565b9250602084013561148581611414565b929592945050506040919091013590565b803561ffff811681146114a857600080fd5b919050565b600080604083850312156114c057600080fd5b6114c983611496565b91506114d760208401611496565b90509250929050565b6000602082840312156114f257600080fd5b813561087181611414565b803560ff811681146114a857600080fd5b6000806040838503121561152157600080fd5b61152a836114fd565b91506114d7602084016114fd565b6000806040838503121561154b57600080fd5b823561155681611414565b9150602083013561156681611414565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156115c25781600019048211156115a8576115a8611571565b808516156115b557918102915b93841c939080029061158c565b509250929050565b6000826115d95750600161045d565b816115e65750600061045d565b81600181146115fc576002811461160657611622565b600191505061045d565b60ff84111561161757611617611571565b50506001821b61045d565b5060208310610133831016604e8410600b8410161715611645575081810a61045d565b61164f8383611587565b806000190482111561166357611663611571565b029392505050565b600061087160ff8416836115ca565b808202811582820484141761045d5761045d611571565b8181038181111561045d5761045d611571565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b6000826116f857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561045d5761045d611571565b60ff818116838216019081111561045d5761045d611571565b60006020828403121561173b57600080fd5b815161087181611414565b60008060006060848603121561175b57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117da5784516001600160a01b0316835293830193918301916001016117b5565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220c2a54ebe6158f6e5b2fa424205366488448efb7da91d36db95c23d1eec05a77a64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101235760003560e01c8063715018a6116100a0578063c3f70b5211610064578063c3f70b521461035e578063dd62ed3e14610373578063e8078d94146103b9578063f2fde38b146103c1578063f8b45b05146103e157600080fd5b8063715018a6146102b45780638da5cb5b146102c957806395d89b41146102f15780639fe9e7e31461031e578063a9059cbb1461033e57600080fd5b80632b14ca56116100e75780632b14ca56146101fe578063313ce5671461022b57806333f31e5a1461023f578063470624021461025f57806370a082311461027e57600080fd5b806306fdde031461012f578063095ea7b31461017457806318160ddd146101a457806323b872dd146101c7578063293230b8146101e757600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5060408051808201909152600a8152692437b236102a37b5b2b760b11b60208201525b60405161016b91906113c6565b60405180910390f35b34801561018057600080fd5b5061019461018f366004611429565b6103f6565b604051901515815260200161016b565b3480156101b057600080fd5b506101b9610463565b60405190815260200161016b565b3480156101d357600080fd5b506101946101e2366004611455565b610484565b3480156101f357600080fd5b506101fc61051f565b005b34801561020a57600080fd5b50600154600160a01b900460ff165b60405160ff909116815260200161016b565b34801561023757600080fd5b506009610219565b34801561024b57600080fd5b506101fc61025a3660046114ad565b6105c0565b34801561026b57600080fd5b50600154600160a81b900460ff16610219565b34801561028a57600080fd5b506101b96102993660046114e0565b6001600160a01b031660009081526006602052604090205490565b3480156102c057600080fd5b506101fc610703565b3480156102d557600080fd5b506000546040516001600160a01b03909116815260200161016b565b3480156102fd57600080fd5b506040805180820190915260048152631213d11360e21b602082015261015e565b34801561032a57600080fd5b506101fc61033936600461150e565b610772565b34801561034a57600080fd5b50610194610359366004611429565b61081c565b34801561036a57600080fd5b506002546101b9565b34801561037f57600080fd5b506101b961038e366004611538565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b6101fc610878565b3480156103cd57600080fd5b506101fc6103dc3660046114e0565b610b3c565b3480156103ed57600080fd5b506003546101b9565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104519086815260200190565b60405180910390a35060015b92915050565b60006104716009600a61166b565b61047f906305f5e10061167a565b905090565b600061048f84610bba565b6104d35760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064015b60405180910390fd5b6001600160a01b038416600090815260076020908152604080832033845290915281208054849290610506908490611691565b909155506105179050848484610c20565b949350505050565b6000546001600160a01b031633146105495760405162461bcd60e51b81526004016104ca906116a4565b60646105576009600a61166b565b610565906305f5e10061167a565b61057090600261167a565b61057a91906116db565b600255606461058b6009600a61166b565b610599906305f5e10061167a565b6105a490600261167a565b6105ae91906116db565b600355600f805460ff19166001179055565b6000546001600160a01b031633146105ea5760405162461bcd60e51b81526004016104ca906116a4565b60006103e861ffff84166106006009600a61166b565b61060e906305f5e10061167a565b610618919061167a565b61062291906116db565b61062d9060016116fd565b905060025481101561066e5760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b60448201526064016104ca565b600281905560006103e861ffff84166106896009600a61166b565b610697906305f5e10061167a565b6106a1919061167a565b6106ab91906116db565b6106b69060016116fd565b90506003548110156106fb5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b60448201526064016104ca565b600355505050565b6000546001600160a01b0316331461072d5760405162461bcd60e51b81526004016104ca906116a4565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b0316331461079c5760405162461bcd60e51b81526004016104ca906116a4565b601e6107a88284611710565b60ff1611156107e85760405162461bcd60e51b815260206004820152600c60248201526b0a8c2f040e8dede40d0d2ced60a31b60448201526064016104ca565b6001805461ffff60a01b1916600160a81b60ff9485160260ff60a01b191617600160a01b9290931691909102919091179055565b600061082733610bba565b6108665760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016104ca565b610871338484610c20565b9392505050565b6000546001600160a01b031633146108a25760405162461bcd60e51b81526004016104ca906116a4565b600f805461ff001916610100179055600d546001600160a01b0316156108f75760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b60448201526064016104ca565b600f5460ff16156109395760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b60448201526064016104ca565b60003411806109485750600047115b61097d5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b60448201526064016104ca565b306000908152600660205260409020546109c55760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b60448201526064016104ca565b600c60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3c9190611729565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281166024830152919091169063c9c65396906044016020604051808303816000875af1158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611729565b600d80546001600160a01b0319166001600160a01b039290921691909117905530600090815260066020526040902054610b0a9047610efe565b600d546001600160a01b03166000908152600e60205260409020805460ff19166001179055600f805461ff0019169055565b6000546001600160a01b03163314610b665760405162461bcd60e51b81526004016104ca906116a4565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600f54600090819060ff1615610bd25750600161045d565b6001600160a01b03831660009081526009602052604090205460ff168015610c1257506001600160a01b0383166000908152600a602052604090205460ff165b1561045d5750600192915050565b60006001600160a01b038416610c785760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c657400000000000060448201526064016104ca565b600f5460ff16610d05576001600160a01b03841660009081526009602052604090205460ff168015610cc257506001600160a01b0384166000908152600a602052604090205460ff165b610d055760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b60448201526064016104ca565b600f54610100900460ff16158015610d3557506001600160a01b0383166000908152600e602052604090205460ff165b8015610d4357506004548210155b15610d5057610d50610fa3565b6001600160a01b0384163014801590610d7257506001600160a01b0383163014155b8015610d8c57506000546001600160a01b03858116911614155b15610dd957610d9c848484611012565b610dd95760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b60448201526064016104ca565b6000610de68585856110dc565b90506000610df48285611691565b6001600160a01b03871660009081526008602052604090205490915060ff1615610e2557610e228185611691565b93505b6001600160a01b03861660009081526006602052604081208054869290610e4d908490611691565b90915550503060009081526006602052604081208054849290610e719084906116fd565b90915550506001600160a01b03851660009081526006602052604081208054839290610e9e9084906116fd565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610eea91815260200190565b60405180910390a350600195945050505050565b610f07826111d5565b600c54600b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015610f77573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f9c9190611746565b5050505050565b600f805461ff001916610100179055306000908152600660205260409020546004548110801590610fd65750600f5460ff165b15611004576005548110610fe957506005545b610ff28161127a565b4780156110025761100281611388565b505b50600f805461ff0019169055565b600f5460009060019060ff16801561104357506001600160a01b0385166000908152600a602052604090205460ff16155b801561106857506001600160a01b0384166000908152600a602052604090205460ff16155b156105175760025483111561107f57506000610517565b6001600160a01b0384166000908152600e602052604090205460ff161580156110cc57506003546001600160a01b0385166000908152600660205260409020546110ca9085906116fd565b115b1561051757506000949350505050565b600f54600090819060ff16158061110b57506001600160a01b03851660009081526009602052604090205460ff165b8061112e57506001600160a01b03841660009081526009602052604090205460ff165b1561113b57506000610517565b6001600160a01b0385166000908152600e602052604090205460ff16156111875760015460649061117690600160a81b900460ff168561167a565b61118091906116db565b9050610517565b6001600160a01b0384166000908152600e602052604090205460ff1615610517576001546064906111c290600160a01b900460ff168561167a565b6111cc91906116db565b95945050505050565b306000908152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561127757306000818152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611283816111d5565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106112b8576112b8611774565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061130c5761130c611774565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac9479061135290859060009086903090429060040161178a565b600060405180830381600087803b15801561136c57600080fd5b505af1158015611380573d6000803e3d6000fd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156113c2573d6000803e3d6000fd5b5050565b600060208083528351808285015260005b818110156113f3578581018301518582016040015282016113d7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461127757600080fd5b6000806040838503121561143c57600080fd5b823561144781611414565b946020939093013593505050565b60008060006060848603121561146a57600080fd5b833561147581611414565b9250602084013561148581611414565b929592945050506040919091013590565b803561ffff811681146114a857600080fd5b919050565b600080604083850312156114c057600080fd5b6114c983611496565b91506114d760208401611496565b90509250929050565b6000602082840312156114f257600080fd5b813561087181611414565b803560ff811681146114a857600080fd5b6000806040838503121561152157600080fd5b61152a836114fd565b91506114d7602084016114fd565b6000806040838503121561154b57600080fd5b823561155681611414565b9150602083013561156681611414565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156115c25781600019048211156115a8576115a8611571565b808516156115b557918102915b93841c939080029061158c565b509250929050565b6000826115d95750600161045d565b816115e65750600061045d565b81600181146115fc576002811461160657611622565b600191505061045d565b60ff84111561161757611617611571565b50506001821b61045d565b5060208310610133831016604e8410600b8410161715611645575081810a61045d565b61164f8383611587565b806000190482111561166357611663611571565b029392505050565b600061087160ff8416836115ca565b808202811582820484141761045d5761045d611571565b8181038181111561045d5761045d611571565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b6000826116f857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561045d5761045d611571565b60ff818116838216019081111561045d5761045d611571565b60006020828403121561173b57600080fd5b815161087181611414565b60008060006060848603121561175b57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117da5784516001600160a01b0316835293830193918301916001016117b5565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220c2a54ebe6158f6e5b2fa424205366488448efb7da91d36db95c23d1eec05a77a64736f6c63430008130033

Deployed Bytecode Sourcemap

1707:9139:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4014:80;;;;;;;;;;-1:-1:-1;4086:5:0;;;;;;;;;;;;-1:-1:-1;;;4086:5:0;;;;4014:80;;;;;;;:::i;:::-;;;;;;;;4462:211;;;;;;;;;;-1:-1:-1;4462:211:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;4462:211:0;1023:187:1;3920:88:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;3920:88:0;1215:177:1;4907:298:0;;;;;;;;;;-1:-1:-1;4907:298:0;;;;;:::i;:::-;;:::i;6303:182::-;;;;;;;;;;;;;:::i;:::-;;8945:71;;;;;;;;;;-1:-1:-1;9002:11:0;;-1:-1:-1;;;9002:11:0;;;;8945:71;;;2030:4:1;2018:17;;;2000:36;;1988:2;1973:18;8945:71:0;1858:184:1;3834:80:0;;;;;;;;;;-1:-1:-1;1881:1:0;3834:80;;9430:438;;;;;;;;;;-1:-1:-1;9430:438:0;;;;;:::i;:::-;;:::i;8870:69::-;;;;;;;;;;-1:-1:-1;8926:10:0;;-1:-1:-1;;;8926:10:0;;;;8870:69;;4190:115;;;;;;;;;;-1:-1:-1;4190:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;4284:18:0;4256:7;4284:18;;;:9;:18;;;;;;;4190:115;711:130;;;;;;;;;;;;;:::i;483:65::-;;;;;;;;;;-1:-1:-1;521:7:0;539:6;483:65;;-1:-1:-1;;;;;539:6:0;;;2870:51:1;;2858:2;2843:18;483:65:0;2724:203:1;4100:84:0;;;;;;;;;;-1:-1:-1;4174:7:0;;;;;;;;;;;;-1:-1:-1;;;4174:7:0;;;;4100:84;;9024:205;;;;;;;;;;-1:-1:-1;9024:205:0;;;;;:::i;:::-;;:::i;4681:218::-;;;;;;;;;;-1:-1:-1;4681:218:0;;;;;:::i;:::-;;:::i;9333:89::-;;;;;;;;;;-1:-1:-1;9410:9:0;;9333:89;;4311:143;;;;;;;;;;-1:-1:-1;4311:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;4423:19:0;;;4395:7;4423:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;4311:143;5526:509;;;:::i;554:151::-;;;;;;;;;;-1:-1:-1;554:151:0;;;;;:::i;:::-;;:::i;9239:88::-;;;;;;;;;;-1:-1:-1;9311:13:0;;9239:88;;4462:211;4566:10;4537:4;4554:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4554:32:0;;;;;;;;;;:41;;;4611:37;4537:4;;4554:32;;4611:37;;;;4589:6;1361:25:1;;1349:2;1334:18;;1215:177;4611:37:0;;;;;;;;-1:-1:-1;4666:4:0;4462:211;;;;;:::o;3920:88::-;3975:7;1942:13;1881:1;1942:2;:13;:::i;:::-;1929:27;;:9;:27;:::i;:::-;3986:19;;3920:88;:::o;4907:298::-;5010:4;5035:29;5053:10;5035:17;:29::i;:::-;5027:58;;;;-1:-1:-1;;;5027:58:0;;5893:2:1;5027:58:0;;;5875:21:1;5932:2;5912:18;;;5905:30;-1:-1:-1;;;5951:18:1;;;5944:46;6007:18;;5027:58:0;;;;;;;;;-1:-1:-1;;;;;5096:23:0;;;;;;:11;:23;;;;;;;;5120:10;5096:35;;;;;;;:45;;5135:6;;5096:23;:45;;5135:6;;5096:45;:::i;:::-;;;;-1:-1:-1;5159:43:0;;-1:-1:-1;5173:10:0;5185:8;5195:6;5159:13;:43::i;:::-;5152:50;4907:298;-1:-1:-1;;;;4907:298:0:o;6303:182::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;6392:3:::1;1942:13;1881:1;1942:2;:13;:::i;:::-;1929:27;::::0;:9:::1;:27;:::i;:::-;6373:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;6357:9;:38:::0;6442:3:::1;1942:13;1881:1;1942:2;:13;:::i;:::-;1929:27;::::0;:9:::1;:27;:::i;:::-;6423:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;6407:13;:38:::0;6456:14:::1;:21:::0;;-1:-1:-1;;6456:21:0::1;6473:4;6456:21;::::0;;6303:182::o;9430:438::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;9531:16:::1;9584:4;9550:31;::::0;::::1;1942:13;1881:1;1942:2;:13;:::i;:::-;1929:27;::::0;:9:::1;:27;:::i;:::-;9550:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;9591:1:::1;9550:42;:::i;:::-;9531:61;;9623:9;;9611:8;:21;;9603:44;;;::::0;-1:-1:-1;;;9603:44:0;;7076:2:1;9603:44:0::1;::::0;::::1;7058:21:1::0;7115:2;7095:18;;;7088:30;-1:-1:-1;;;7134:18:1;;;7127:40;7184:18;;9603:44:0::1;6874:334:1::0;9603:44:0::1;9658:9;:20:::0;;;9689::::1;9746:4;9712:31;::::0;::::1;1942:13;1881:1;1942:2;:13;:::i;:::-;1929:27;::::0;:9:::1;:27;:::i;:::-;9712:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;9753:1:::1;9712:42;:::i;:::-;9689:65;;9789:13;;9773:12;:29;;9765:56;;;::::0;-1:-1:-1;;;9765:56:0;;7415:2:1;9765:56:0::1;::::0;::::1;7397:21:1::0;7454:2;7434:18;;;7427:30;-1:-1:-1;;;7473:18:1;;;7466:44;7527:18;;9765:56:0::1;7213:338:1::0;9765:56:0::1;9832:13;:28:::0;-1:-1:-1;;;9430:438:0:o;711:130::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;788:1:::1;771:19:::0;;-1:-1:-1;;;;;;771:19:0::1;::::0;;806:32:::1;::::0;2870:51:1;;;806:32:0::1;::::0;2858:2:1;2843:18;806:32:0::1;;;;;;;711:130::o:0;9024:205::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;9138:2:::1;9116:18;9126:8:::0;9116:7;:18:::1;:::i;:::-;:24;;;;9108:49;;;::::0;-1:-1:-1;;;9108:49:0;;7911:2:1;9108:49:0::1;::::0;::::1;7893:21:1::0;7950:2;7930:18;;;7923:30;-1:-1:-1;;;7969:18:1;;;7962:42;8021:18;;9108:49:0::1;7709:336:1::0;9108:49:0::1;9168:10;:20:::0;;-1:-1:-1;;;;9199:22:0;-1:-1:-1;;;9168:20:0::1;::::0;;::::1;;-1:-1:-1::0;;;;9199:22:0;;-1:-1:-1;;;9199:22:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;9024:205::o;4681:218::-;4760:4;4785:29;4803:10;4785:17;:29::i;:::-;4777:58;;;;-1:-1:-1;;;4777:58:0;;5893:2:1;4777:58:0;;;5875:21:1;5932:2;5912:18;;;5905:30;-1:-1:-1;;;5951:18:1;;;5944:46;6007:18;;4777:58:0;5691:340:1;4777:58:0;4853:43;4867:10;4879:8;4889:6;4853:13;:43::i;:::-;4846:50;4681:218;-1:-1:-1;;;4681:218:0:o;5526:509::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;3113:7:::1;:14:::0;;-1:-1:-1;;3113:14:0::1;;;::::0;;5608:7:::2;::::0;-1:-1:-1;;;;;5608:7:0::2;:21:::0;5600:44:::2;;;::::0;-1:-1:-1;;;5600:44:0;;8252:2:1;5600:44:0::2;::::0;::::2;8234:21:1::0;8291:2;8271:18;;;8264:30;-1:-1:-1;;;8310:18:1;;;8303:40;8360:18;;5600:44:0::2;8050:334:1::0;5600:44:0::2;5664:14;::::0;::::2;;5663:15;5655:40;;;::::0;-1:-1:-1;;;5655:40:0;;8591:2:1;5655:40:0::2;::::0;::::2;8573:21:1::0;8630:2;8610:18;;;8603:30;-1:-1:-1;;;8649:18:1;;;8642:42;8701:18;;5655:40:0::2;8389:336:1::0;5655:40:0::2;5726:1;5714:9;:13;:40;;;;5753:1;5731:21;:23;5714:40;5706:59;;;::::0;-1:-1:-1;;;5706:59:0;;8932:2:1;5706:59:0::2;::::0;::::2;8914:21:1::0;8971:1;8951:18;;;8944:29;-1:-1:-1;;;8989:18:1;;;8982:36;9035:18;;5706:59:0::2;8730:329:1::0;5706:59:0::2;5802:4;5809:1;5784:24:::0;;;:9:::2;:24;::::0;;;;;5776:48:::2;;;::::0;-1:-1:-1;;;5776:48:0;;9266:2:1;5776:48:0::2;::::0;::::2;9248:21:1::0;9305:1;9285:18;;;9278:29;-1:-1:-1;;;9323:18:1;;;9316:39;9372:18;;5776:48:0::2;9064:332:1::0;5776:48:0::2;5863:11;;;;;;;;;-1:-1:-1::0;;;;;5863:11:0::2;-1:-1:-1::0;;;;;5863:19:0::2;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5845:72;::::0;-1:-1:-1;;;5845:72:0;;5905:4:::2;5845:72;::::0;::::2;9869:34:1::0;-1:-1:-1;;;;;5912:4:0::2;9939:15:1::0;;9919:18;;;9912:43;5845:51:0;;;::::2;::::0;::::2;::::0;9804:18:1;;5845:72:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5835:7;:82:::0;;-1:-1:-1;;;;;;5835:82:0::2;-1:-1:-1::0;;;;;5835:82:0;;;::::2;::::0;;;::::2;::::0;;5960:4:::2;-1:-1:-1::0;5942:24:0;;;:9:::2;:24;::::0;;;;;5928:62:::2;::::0;5968:21:::2;5928:13;:62::i;:::-;6012:7;::::0;-1:-1:-1;;;;;6012:7:0::2;6001:19;::::0;;;:10:::2;:19;::::0;;;;:26;;-1:-1:-1;;6001:26:0::2;6023:4;6001:26;::::0;;3142:7:::1;:15:::0;;-1:-1:-1;;3142:15:0::1;::::0;;5526:509::o;554:151::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;638:6:::1;:17:::0;;-1:-1:-1;;;;;;638:17:0::1;-1:-1:-1::0;;;;;638:17:0;::::1;::::0;;::::1;::::0;;;672:30:::1;::::0;2870:51:1;;;672:30:0::1;::::0;2858:2:1;2843:18;672:30:0::1;;;;;;;554:151:::0;:::o;8044:296::-;8169:14;;8113:4;;;;8169:14;;8164:137;;;-1:-1:-1;8202:4:0;8164:137;;;-1:-1:-1;;;;;8229:21:0;;;;;;:9;:21;;;;;;;;:47;;;;-1:-1:-1;;;;;;8254:22:0;;;;;;:10;:22;;;;;;;;8229:47;8225:76;;;-1:-1:-1;8294:4:0;8321:11;8044:296;-1:-1:-1;;8044:296:0:o;6493:965::-;6584:4;-1:-1:-1;;;;;6609:20:0;;6601:59;;;;-1:-1:-1;;;6601:59:0;;10384:2:1;6601:59:0;;;10366:21:1;10423:2;10403:18;;;10396:30;10462:28;10442:18;;;10435:56;10508:18;;6601:59:0;10182:350:1;6601:59:0;6676:14;;;;6671:98;;-1:-1:-1;;;;;6702:17:0;;;;;;:9;:17;;;;;;;;:39;;;;-1:-1:-1;;;;;;6723:18:0;;;;;;:10;:18;;;;;;;;6702:39;6694:72;;;;-1:-1:-1;;;6694:72:0;;10739:2:1;6694:72:0;;;10721:21:1;10778:2;10758:18;;;10751:30;-1:-1:-1;;;10797:18:1;;;10790:50;10857:18;;6694:72:0;10537:344:1;6694:72:0;6785:7;;;;;;;6784:8;:32;;;;-1:-1:-1;;;;;;6796:20:0;;;;;;:10;:20;;;;;;;;6784:32;:60;;;;;6830:14;;6820:6;:24;;6784:60;6779:83;;;6848:11;:9;:11::i;:::-;-1:-1:-1;;;;;6879:23:0;;6897:4;6879:23;;;;:52;;-1:-1:-1;;;;;;6906:25:0;;6926:4;6906:25;;6879:52;:72;;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;6935:16:0;;;6945:6;;6935:16;;6879:72;6874:174;;;6978:38;6991:6;6999:8;7009:6;6978:12;:38::i;:::-;6970:65;;;;-1:-1:-1;;;6970:65:0;;11088:2:1;6970:65:0;;;11070:21:1;11127:2;11107:18;;;11100:30;-1:-1:-1;;;11146:18:1;;;11139:44;11200:18;;6970:65:0;10886:338:1;6970:65:0;7060:18;7081:39;7095:6;7103:8;7113:6;7081:13;:39::i;:::-;7060:60;-1:-1:-1;7131:23:0;7157:19;7060:60;7157:6;:19;:::i;:::-;-1:-1:-1;;;;;7190:17:0;;;;;;:9;:17;;;;;;7131:45;;-1:-1:-1;7190:17:0;;7187:55;;;7218:24;7227:15;7218:6;:24;:::i;:::-;7209:33;;7187:55;-1:-1:-1;;;;;7253:17:0;;;;;;:9;:17;;;;;:27;;7274:6;;7253:17;:27;;7274:6;;7253:27;:::i;:::-;;;;-1:-1:-1;;7309:4:0;7291:24;;;;:9;:24;;;;;:38;;7319:10;;7291:24;:38;;7319:10;;7291:38;:::i;:::-;;;;-1:-1:-1;;;;;;;7340:19:0;;;;;;:9;:19;;;;;:38;;7363:15;;7340:19;:38;;7363:15;;7340:38;:::i;:::-;;;;;;;;7411:8;-1:-1:-1;;;;;7394:34:0;7403:6;-1:-1:-1;;;;;7394:34:0;;7421:6;7394:34;;;;1361:25:1;;1349:2;1334:18;;1215:177;7394:34:0;;;;;;;;-1:-1:-1;7446:4:0;;6493:965;-1:-1:-1;;;;;6493:965:0:o;6043:252::-;6131:28;6146:12;6131:14;:28::i;:::-;6170:11;;6257;;6170:117;;-1:-1:-1;;;6170:117:0;;6230:4;6170:117;;;11570:34:1;11620:18;;;11613:34;;;6170:11:0;11663:18:1;;;11656:34;;;11706:18;;;11699:34;-1:-1:-1;;;;;6257:11:0;;;11749:19:1;;;11742:44;6270:15:0;11802:19:1;;;11795:35;6170:11:0;;;:27;;6205:13;;11504:19:1;;6170:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6043:252;;:::o;9876:520::-;3113:7;:14;;-1:-1:-1;;3113:14:0;;;;;9975:4:::1;3113:14:::0;9957:24;;;:9:::1;:24;::::0;;;;;10019:14:::1;::::0;9997:36;::::1;::::0;::::1;::::0;:54:::1;;-1:-1:-1::0;10037:14:0::1;::::0;::::1;;9997:54;9992:397;;;10096:14;;10074:18;:36;10069:84;;-1:-1:-1::0;10136:14:0::1;::::0;10069:84:::1;10181:37;10199:18;10181:17;:37::i;:::-;10277:21;10316:23:::0;;10313:65:::1;;10343:32;10355:19;10343:11;:32::i;:::-;10054:335;9992:397;-1:-1:-1::0;3142:7:0;:15;;-1:-1:-1;;3142:15:0;;;9876:520::o;7466:570::-;7634:14;;7573:4;;7614;;7634:14;;:41;;;;-1:-1:-1;;;;;;7653:22:0;;;;;;:10;:22;;;;;;;;7652:23;7634:41;:66;;;;-1:-1:-1;;;;;;7680:20:0;;;;;;:10;:20;;;;;;;;7679:21;7634:66;7629:366;;;7740:9;;7723:14;:26;7718:266;;;-1:-1:-1;7791:5:0;7718:266;;;-1:-1:-1;;;;;7856:20:0;;;;;;:10;:20;;;;;;;;7855:21;:79;;;;-1:-1:-1;7920:13:0;;-1:-1:-1;;;;;7881:19:0;;;;;;:9;:19;;;;;;:36;;7903:14;;7881:36;:::i;:::-;:52;7855:79;7832:152;;;-1:-1:-1;7976:5:0;8012:16;7466:570;-1:-1:-1;;;;7466:570:0:o;8348:514::-;8513:14;;8449:7;;;;8513:14;;8512:15;;:40;;-1:-1:-1;;;;;;8531:21:0;;;;;;:9;:21;;;;;;;;8512:40;:64;;;-1:-1:-1;;;;;;8556:20:0;;;;;;:9;:20;;;;;;;;8512:64;8507:319;;;-1:-1:-1;8607:1:0;8507:319;;;-1:-1:-1;;;;;8632:22:0;;;;;;:10;:22;;;;;;;;8627:199;;;8694:10;;8707:3;;8685:19;;-1:-1:-1;;;8694:10:0;;;;8685:6;:19;:::i;:::-;:25;;;;:::i;:::-;8673:37;;8627:199;;;-1:-1:-1;;;;;8735:21:0;;;;;;:10;:21;;;;;;;;8730:96;;;8796:11;;8810:3;;8787:20;;-1:-1:-1;;;8796:11:0;;;;8787:6;:20;:::i;:::-;:26;;;;:::i;:::-;8775:38;8348:514;-1:-1:-1;;;;;8348:514:0:o;5213:305::-;5304:4;5284:26;;;;:11;:26;;;;;;;;2750:42;5284;;;;;;;;:57;-1:-1:-1;5279:232:0;;;5379:4;5359:26;;;;:11;:26;;;;;;;;2750:42;5359;;;;;;;;;;-1:-1:-1;;5359:62:0;;;;5441:58;;1361:25:1;;;2750:42:0;;5379:4;5441:58;;1334:18:1;5441:58:0;;;;;;;5279:232;5213:305;:::o;10404:338::-;10471:27;10486:11;10471:14;:27::i;:::-;10533:16;;;10547:1;10533:16;;;;;;;;10509:21;;10533:16;;;;;;;;;;-1:-1:-1;10533:16:0;10509:40;;10579:4;10560;10565:1;10560:7;;;;;;;;:::i;:::-;;;;;;:25;-1:-1:-1;;;;;10560:25:0;;;-1:-1:-1;;;;;10560:25:0;;;;;10606:4;10596;10601:1;10596:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10596:14:0;;;:7;;;;;;;;;:14;10622:11;;:112;;-1:-1:-1;;;10622:112:0;;:11;;;:62;;:112;;10685:11;;10622;;10699:4;;10712;;10718:15;;10622:112;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10460:282;10404:338;:::o;10750:93::-;10806:12;;:29;;-1:-1:-1;;;;;10806:12:0;;;;:29;;;;;10828:6;;10806:12;:29;:12;:29;10828:6;10806:12;:29;;;;;;;;;;;;;;;;;;;;;10750:93;:::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:159::-;2114:20;;2174:6;2163:18;;2153:29;;2143:57;;2196:1;2193;2186:12;2143:57;2047:159;;;:::o;2211:256::-;2277:6;2285;2338:2;2326:9;2317:7;2313:23;2309:32;2306:52;;;2354:1;2351;2344:12;2306:52;2377:28;2395:9;2377:28;:::i;:::-;2367:38;;2424:37;2457:2;2446:9;2442:18;2424:37;:::i;:::-;2414:47;;2211:256;;;;;:::o;2472:247::-;2531:6;2584:2;2572:9;2563:7;2559:23;2555:32;2552:52;;;2600:1;2597;2590:12;2552:52;2639:9;2626:23;2658:31;2683:5;2658:31;:::i;2932:156::-;2998:20;;3058:4;3047:16;;3037:27;;3027:55;;3078:1;3075;3068:12;3093:252;3157:6;3165;3218:2;3206:9;3197:7;3193:23;3189:32;3186:52;;;3234:1;3231;3224:12;3186:52;3257:27;3274:9;3257:27;:::i;:::-;3247:37;;3303:36;3335:2;3324:9;3320:18;3303:36;:::i;3350:388::-;3418:6;3426;3479:2;3467:9;3458:7;3454:23;3450:32;3447:52;;;3495:1;3492;3485:12;3447:52;3534:9;3521:23;3553:31;3578:5;3553:31;:::i;:::-;3603:5;-1:-1:-1;3660:2:1;3645:18;;3632:32;3673:33;3632:32;3673:33;:::i;:::-;3725:7;3715:17;;;3350:388;;;;;:::o;4003:127::-;4064:10;4059:3;4055:20;4052:1;4045:31;4095:4;4092:1;4085:15;4119:4;4116:1;4109:15;4135:422;4224:1;4267:5;4224:1;4281:270;4302:7;4292:8;4289:21;4281:270;;;4361:4;4357:1;4353:6;4349:17;4343:4;4340:27;4337:53;;;4370:18;;:::i;:::-;4420:7;4410:8;4406:22;4403:55;;;4440:16;;;;4403:55;4519:22;;;;4479:15;;;;4281:270;;;4285:3;4135:422;;;;;:::o;4562:806::-;4611:5;4641:8;4631:80;;-1:-1:-1;4682:1:1;4696:5;;4631:80;4730:4;4720:76;;-1:-1:-1;4767:1:1;4781:5;;4720:76;4812:4;4830:1;4825:59;;;;4898:1;4893:130;;;;4805:218;;4825:59;4855:1;4846:10;;4869:5;;;4893:130;4930:3;4920:8;4917:17;4914:43;;;4937:18;;:::i;:::-;-1:-1:-1;;4993:1:1;4979:16;;5008:5;;4805:218;;5107:2;5097:8;5094:16;5088:3;5082:4;5079:13;5075:36;5069:2;5059:8;5056:16;5051:2;5045:4;5042:12;5038:35;5035:77;5032:159;;;-1:-1:-1;5144:19:1;;;5176:5;;5032:159;5223:34;5248:8;5242:4;5223:34;:::i;:::-;5293:6;5289:1;5285:6;5281:19;5272:7;5269:32;5266:58;;;5304:18;;:::i;:::-;5342:20;;4562:806;-1:-1:-1;;;4562:806:1:o;5373:140::-;5431:5;5460:47;5501:4;5491:8;5487:19;5481:4;5460:47;:::i;5518:168::-;5591:9;;;5622;;5639:15;;;5633:22;;5619:37;5609:71;;5660:18;;:::i;6036:128::-;6103:9;;;6124:11;;;6121:37;;;6138:18;;:::i;6169:348::-;6371:2;6353:21;;;6410:2;6390:18;;;6383:30;6449:26;6444:2;6429:18;;6422:54;6508:2;6493:18;;6169:348::o;6522:217::-;6562:1;6588;6578:132;;6632:10;6627:3;6623:20;6620:1;6613:31;6667:4;6664:1;6657:15;6695:4;6692:1;6685:15;6578:132;-1:-1:-1;6724:9:1;;6522:217::o;6744:125::-;6809:9;;;6830:10;;;6827:36;;;6843:18;;:::i;7556:148::-;7644:4;7623:12;;;7637;;;7619:31;;7662:13;;7659:39;;;7678:18;;:::i;9401:251::-;9471:6;9524:2;9512:9;9503:7;9499:23;9495:32;9492:52;;;9540:1;9537;9530:12;9492:52;9572:9;9566:16;9591:31;9616:5;9591:31;:::i;11841:306::-;11929:6;11937;11945;11998:2;11986:9;11977:7;11973:23;11969:32;11966:52;;;12014:1;12011;12004:12;11966:52;12043:9;12037:16;12027:26;;12093:2;12082:9;12078:18;12072:25;12062:35;;12137:2;12126:9;12122:18;12116:25;12106:35;;11841:306;;;;;:::o;12284:127::-;12345:10;12340:3;12336:20;12333:1;12326:31;12376:4;12373:1;12366:15;12400:4;12397:1;12390:15;12416:980;12678:4;12726:3;12715:9;12711:19;12757:6;12746:9;12739:25;12783:2;12821:6;12816:2;12805:9;12801:18;12794:34;12864:3;12859:2;12848:9;12844:18;12837:31;12888:6;12923;12917:13;12954:6;12946;12939:22;12992:3;12981:9;12977:19;12970:26;;13031:2;13023:6;13019:15;13005:29;;13052:1;13062:195;13076:6;13073:1;13070:13;13062:195;;;13141:13;;-1:-1:-1;;;;;13137:39:1;13125:52;;13232:15;;;;13197:12;;;;13173:1;13091:9;13062:195;;;-1:-1:-1;;;;;;;13313:32:1;;;;13308:2;13293:18;;13286:60;-1:-1:-1;;;13377:3:1;13362:19;13355:35;13274:3;12416:980;-1:-1:-1;;;12416:980:1:o

Swarm Source

ipfs://c2a54ebe6158f6e5b2fa424205366488448efb7da91d36db95c23d1eec05a77a

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.