ETH Price: $2,942.73 (-4.07%)
Gas: 2 Gwei

Contract

0xc706eF3C72935469BbB72f4d38A836c19DDF681e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve201547822024-06-23 13:47:2314 days ago1719150443IN
0xc706eF3C...19DDF681e
0 ETH0.00011622.49816195
Approve201531322024-06-23 8:13:4714 days ago1719130427IN
0xc706eF3C...19DDF681e
0 ETH0.000162383.51356665
Approve201468472024-06-22 11:08:1115 days ago1719054491IN
0xc706eF3C...19DDF681e
0 ETH0.00011952.58506698
Approve201285952024-06-19 21:53:3518 days ago1718834015IN
0xc706eF3C...19DDF681e
0 ETH0.000456949.88435305
Approve201221762024-06-19 0:19:5918 days ago1718756399IN
0xc706eF3C...19DDF681e
0 ETH0.0009045719.42112907
Approve200743912024-06-12 7:55:4725 days ago1718178947IN
0xc706eF3C...19DDF681e
0 ETH0.000303836.52332213
Approve200591302024-06-10 4:45:4727 days ago1717994747IN
0xc706eF3C...19DDF681e
0 ETH0.000163093.50609407
Approve200148812024-06-04 0:29:4733 days ago1717460987IN
0xc706eF3C...19DDF681e
0 ETH0.000304956.55586939
Approve199575712024-05-27 0:16:3541 days ago1716768995IN
0xc706eF3C...19DDF681e
0 ETH0.000178313.85726843
Approve199415302024-05-24 18:28:4744 days ago1716575327IN
0xc706eF3C...19DDF681e
0 ETH0.0005228911.22647894
Approve198970332024-05-18 13:09:3550 days ago1716037775IN
0xc706eF3C...19DDF681e
0 ETH0.000082723.40511347
Approve198512762024-05-12 3:31:3556 days ago1715484695IN
0xc706eF3C...19DDF681e
0 ETH0.000139733
Approve198248222024-05-08 10:43:2360 days ago1715165003IN
0xc706eF3C...19DDF681e
0 ETH0.00028736.17645146
Approve198138932024-05-06 22:02:1162 days ago1715032931IN
0xc706eF3C...19DDF681e
0 ETH0.000304056.53635707
Approve198096992024-05-06 7:58:1162 days ago1714982291IN
0xc706eF3C...19DDF681e
0 ETH0.000295396.34204637
Approve197641042024-04-29 23:00:2369 days ago1714431623IN
0xc706eF3C...19DDF681e
0 ETH0.000301036.47157762
Approve197223032024-04-24 2:36:3574 days ago1713926195IN
0xc706eF3C...19DDF681e
0 ETH0.0007082115.22495201
Approve197175482024-04-23 10:38:3575 days ago1713868715IN
0xc706eF3C...19DDF681e
0 ETH0.0005425311.64804957
Approve197154852024-04-23 3:43:2375 days ago1713843803IN
0xc706eF3C...19DDF681e
0 ETH0.000400088.58977046
Approve196760752024-04-17 15:25:4781 days ago1713367547IN
0xc706eF3C...19DDF681e
0 ETH0.0022879249.41405595
Approve196712272024-04-16 23:10:5982 days ago1713309059IN
0xc706eF3C...19DDF681e
0 ETH0.000360867.74764702
Approve196509472024-04-14 2:57:5984 days ago1713063479IN
0xc706eF3C...19DDF681e
0 ETH0.0006033312.95356779
Approve196284982024-04-10 23:25:3587 days ago1712791535IN
0xc706eF3C...19DDF681e
0 ETH0.0006998115.13799591
Approve196251492024-04-10 12:12:2388 days ago1712751143IN
0xc706eF3C...19DDF681e
0 ETH0.0004467516.78441568
Approve196251462024-04-10 12:11:4788 days ago1712751107IN
0xc706eF3C...19DDF681e
0 ETH0.0007064915.18796681
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
185653072023-11-13 20:17:11237 days ago1699906631
0xc706eF3C...19DDF681e
0.05116037 ETH
185653072023-11-13 20:17:11237 days ago1699906631
0xc706eF3C...19DDF681e
0.05116037 ETH
185653042023-11-13 20:16:35237 days ago1699906595
0xc706eF3C...19DDF681e
0.02623462 ETH
185653042023-11-13 20:16:35237 days ago1699906595
0xc706eF3C...19DDF681e
0.02623462 ETH
185653032023-11-13 20:16:23237 days ago1699906583
0xc706eF3C...19DDF681e
0.06743399 ETH
185653032023-11-13 20:16:23237 days ago1699906583
0xc706eF3C...19DDF681e
0.06743399 ETH
185652752023-11-13 20:10:35237 days ago1699906235
0xc706eF3C...19DDF681e
0 ETH
185652752023-11-13 20:10:35237 days ago1699906235
0xc706eF3C...19DDF681e
0 ETH
185652742023-11-13 20:10:23237 days ago1699906223
0xc706eF3C...19DDF681e
0.01352425 ETH
185652742023-11-13 20:10:23237 days ago1699906223
0xc706eF3C...19DDF681e
0.01352425 ETH
185652592023-11-13 20:07:23237 days ago1699906043
0xc706eF3C...19DDF681e
0.04941464 ETH
185652592023-11-13 20:07:23237 days ago1699906043
0xc706eF3C...19DDF681e
0.04941464 ETH
185652572023-11-13 20:06:59237 days ago1699906019
0xc706eF3C...19DDF681e
0.05308742 ETH
185652572023-11-13 20:06:59237 days ago1699906019
0xc706eF3C...19DDF681e
0.05308742 ETH
185652552023-11-13 20:06:35237 days ago1699905995
0xc706eF3C...19DDF681e
0.05900038 ETH
185652552023-11-13 20:06:35237 days ago1699905995
0xc706eF3C...19DDF681e
0.05900038 ETH
185652492023-11-13 20:05:23237 days ago1699905923
0xc706eF3C...19DDF681e
0.06649963 ETH
185652492023-11-13 20:05:23237 days ago1699905923
0xc706eF3C...19DDF681e
0.06649963 ETH
185652472023-11-13 20:04:59237 days ago1699905899
0xc706eF3C...19DDF681e
0.07635626 ETH
185652472023-11-13 20:04:59237 days ago1699905899
0xc706eF3C...19DDF681e
0.07635626 ETH
185652432023-11-13 20:03:59237 days ago1699905839
0xc706eF3C...19DDF681e
0.06545224 ETH
185652432023-11-13 20:03:59237 days ago1699905839
0xc706eF3C...19DDF681e
0.06545224 ETH
185652422023-11-13 20:03:47237 days ago1699905827
0xc706eF3C...19DDF681e
0.08045521 ETH
185652422023-11-13 20:03:47237 days ago1699905827
0xc706eF3C...19DDF681e
0.08045521 ETH
185652402023-11-13 20:03:23237 days ago1699905803
0xc706eF3C...19DDF681e
0.09100226 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VPN

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
https://vpn-x-ai.com/

https://t.me/VPN_X_AI

https://twitter.com/vpn_x_ai

$VPN is an ERC meme token that has caught the attention of a group of enthusiasts and speculators.
What's intriguing is that there are more than 39 inactive subdomains on the X.AI domain.
One of these subdomains is vpn.x.ai, and it seems like it could be
the upcoming project from Elon Musk and the X.AI team.
*/
// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

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

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

contract VPN is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    bool public transferDelayEnabled = true;

    address payable private _deployerWallet;
    address payable private _mwWallet = payable(0x59966DF065BD12042f69B1dd18Fa7C1C25D58b87);

    uint256 private constant _tTotal = 1000000000000 * 10**_decimals;
    uint256 public _maxTxAmount = 20000000000 * 10**_decimals;
    uint256 public _maxWalletSize = 20000000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 2000000000 * 10**_decimals;
    uint256 public _maxTaxSwap = 10000000000 * 10**_decimals;
    
    uint256 private _buyTax = 20;
    uint256 private _sellTax = 35;

    uint8 private constant _decimals = 9;
    string private constant _name = unicode"VPN xAi";
    string private constant _symbol = unicode"VPN";

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private transferEnabled = true;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _deployerWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_deployerWallet] = true;
        _isExcludedFromFee[_mwWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner() && from != _deployerWallet && to != _deployerWallet) {
            require(transferEnabled, "Transfers are not enabled");
            taxAmount = amount.mul(_buyTax).div(100);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Can not buy more than _maxTxAmount");
                require(balanceOf(to) + amount <= _maxWalletSize, "Warning! Already max wallet.");
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul(_sellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendEthToMw(address(this).balance);
                }
            }
        }

        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            taxAmount = 0;
        }

        if(taxAmount > 0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }

        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

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

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function sendEthToMw(uint256 amount) private {
        _mwWallet.transfer(amount);
    }

    function enableTransfer() external onlyOwner() {
        transferEnabled = true;
    }

    function removeTaxes() public onlyOwner {
        _buyTax = 0;
        _sellTax = 0;
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        transferEnabled = false;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"removeTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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"},{"stateMutability":"payable","type":"receive"}]

60806040526004805460ff19166001179055600580546001600160a01b0319167359966df065bd12042f69b1dd18fa7c1c25d58b87179055620000456009600a6200036e565b62000056906404a817c80062000385565b600655620000676009600a6200036e565b62000078906404a817c80062000385565b600755620000896009600a6200036e565b6200009990637735940062000385565b600855620000aa6009600a6200036e565b620000bb906402540be40062000385565b6009556014600a556023600b55600d805462ffffff60a81b1916600160b81b179055348015620000e9575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060048054610100600160a81b03191661010033021790556200014f6009600a6200036e565b620001609064e8d4a5100062000385565b335f908152600160208190526040822092909255600390620001895f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260039093528183208054851660019081179091556004546101009004821684528284208054861682179055600554909116835291208054909216179055620001fe3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002376009600a6200036e565b620002489064e8d4a5100062000385565b60405190815260200160405180910390a36200039f565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002b357815f19048211156200029757620002976200025f565b80851615620002a557918102915b93841c939080029062000278565b509250929050565b5f82620002cb5750600162000368565b81620002d957505f62000368565b8160018114620002f25760028114620002fd576200031d565b600191505062000368565b60ff8411156200031157620003116200025f565b50506001821b62000368565b5060208310610133831016604e8410600b841016171562000342575081810a62000368565b6200034e838362000273565b805f19048211156200036457620003646200025f565b0290505b92915050565b5f6200037e60ff841683620002bb565b9392505050565b80820281158282048414176200036857620003686200025f565b61180b80620003ad5f395ff3fe60806040526004361061011e575f3560e01c80637d1db4a51161009d578063bf474bed11610062578063bf474bed14610316578063c876d0b91461032b578063c9567bf914610344578063dd62ed3e14610358578063f1b50c1d1461039c575f80fd5b80637d1db4a51461027c5780638da5cb5b146102915780638f9a55c0146102b757806395d89b41146102cc578063a9059cbb146102f7575f80fd5b8063313ce567116100e3578063313ce567146101ef57806369e1ea7f1461020a57806370a0823114610220578063715018a614610254578063751039fc14610268575f80fd5b806306fdde0314610129578063095ea7b31461016a5780630faee56f1461019957806318160ddd146101bc57806323b872dd146101d0575f80fd5b3661012557005b5f80fd5b348015610134575f80fd5b5060408051808201909152600781526656504e2078416960c81b60208201525b6040516101619190611416565b60405180910390f35b348015610175575f80fd5b50610189610184366004611478565b6103b0565b6040519015158152602001610161565b3480156101a4575f80fd5b506101ae60095481565b604051908152602001610161565b3480156101c7575f80fd5b506101ae6103c6565b3480156101db575f80fd5b506101896101ea3660046114a2565b6103e7565b3480156101fa575f80fd5b5060405160098152602001610161565b348015610215575f80fd5b5061021e61044e565b005b34801561022b575f80fd5b506101ae61023a3660046114e0565b6001600160a01b03165f9081526001602052604090205490565b34801561025f575f80fd5b5061021e61048b565b348015610273575f80fd5b5061021e6104fc565b348015610287575f80fd5b506101ae60065481565b34801561029c575f80fd5b505f546040516001600160a01b039091168152602001610161565b3480156102c2575f80fd5b506101ae60075481565b3480156102d7575f80fd5b506040805180820190915260038152622b282760e91b6020820152610154565b348015610302575f80fd5b50610189610311366004611478565b6105b0565b348015610321575f80fd5b506101ae60085481565b348015610336575f80fd5b506004546101899060ff1681565b34801561034f575f80fd5b5061021e6105bc565b348015610363575f80fd5b506101ae6103723660046114fb565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103a7575f80fd5b5061021e610967565b5f6103bc3384846109a5565b5060015b92915050565b5f6103d36009600a611626565b6103e29064e8d4a51000611634565b905090565b5f6103f3848484610ac8565b610444843361043f856040518060600160405280602881526020016117ae602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061108e565b6109a5565b5060019392505050565b5f546001600160a01b031633146104805760405162461bcd60e51b81526004016104779061164b565b60405180910390fd5b5f600a819055600b55565b5f546001600160a01b031633146104b45760405162461bcd60e51b81526004016104779061164b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105255760405162461bcd60e51b81526004016104779061164b565b6105316009600a611626565b6105409064e8d4a51000611634565b60065561054f6009600a611626565b61055e9064e8d4a51000611634565b6007557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61058e6009600a611626565b61059d9064e8d4a51000611634565b60405190815260200160405180910390a1565b5f6103bc338484610ac8565b5f546001600160a01b031633146105e55760405162461bcd60e51b81526004016104779061164b565b600d54600160a01b900460ff161561063f5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610477565b600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561068990309061067a6009600a611626565b61043f9064e8d4a51000611634565b600c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106fd9190611680565b6001600160a01b031663c9c6539630600c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107809190611680565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156107ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ee9190611680565b600d80546001600160a01b039283166001600160a01b0319909116179055600c541663f305d7194730610835816001600160a01b03165f9081526001602052604090205490565b5f806108485f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108ae573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108d3919061169b565b5050600d54600c5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610928573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094c91906116c6565b50600d805463ffff00ff60a01b19166201000160a01b179055565b5f546001600160a01b031633146109905760405162461bcd60e51b81526004016104779061164b565b600d805460ff60b81b1916600160b81b179055565b6001600160a01b038316610a075760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610477565b6001600160a01b038216610a685760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610477565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b2c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610477565b6001600160a01b038216610b8e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610477565b5f8111610bef5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610477565b5f80546001600160a01b03858116911614801590610c1a57505f546001600160a01b03848116911614155b8015610c3957506004546001600160a01b038581166101009092041614155b8015610c5857506004546001600160a01b038481166101009092041614155b15610eda57600d54600160b81b900460ff16610cb65760405162461bcd60e51b815260206004820152601960248201527f5472616e736665727320617265206e6f7420656e61626c6564000000000000006044820152606401610477565b610cd66064610cd0600a54856110c690919063ffffffff16565b9061114b565b600d549091506001600160a01b038581169116148015610d045750600c546001600160a01b03848116911614155b8015610d2857506001600160a01b0383165f9081526003602052604090205460ff16155b15610e0457600654821115610d8a5760405162461bcd60e51b815260206004820152602260248201527f43616e206e6f7420627579206d6f7265207468616e205f6d61785478416d6f756044820152611b9d60f21b6064820152608401610477565b60075482610dac856001600160a01b03165f9081526001602052604090205490565b610db691906116e5565b1115610e045760405162461bcd60e51b815260206004820152601c60248201527f5761726e696e672120416c7265616479206d61782077616c6c65742e000000006044820152606401610477565b600d546001600160a01b038481169116148015610e2a57506001600160a01b0384163014155b15610e4c57610e496064610cd0600b54856110c690919063ffffffff16565b90505b305f90815260016020526040902054600d54600160a81b900460ff16158015610e825750600d546001600160a01b038581169116145b8015610e975750600d54600160b01b900460ff165b8015610ea4575060085481115b15610ed857610ec6610ec184610ebc8460095461118c565b61118c565b6111a0565b478015610ed657610ed647611310565b505b505b6001600160a01b0384165f9081526003602052604090205460ff1680610f1757506001600160a01b0383165f9081526003602052604090205460ff165b80610f495750600d546001600160a01b03858116911614801590610f495750600d546001600160a01b03848116911614155b15610f5157505f5b8015610fc957305f90815260016020526040902054610f70908261134b565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fc09085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054610feb90836113a9565b6001600160a01b0385165f9081526001602052604090205561102e61101083836113a9565b6001600160a01b0385165f908152600160205260409020549061134b565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61107785856113a9565b60405190815260200160405180910390a350505050565b5f81848411156110b15760405162461bcd60e51b81526004016104779190611416565b505f6110bd84866116f8565b95945050505050565b5f825f036110d557505f6103c0565b5f6110e08385611634565b9050826110ed858361170b565b146111445760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610477565b9392505050565b5f61114483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113ea565b5f81831161119a5782611144565b50919050565b600d805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106111e6576111e661172a565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561123d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112619190611680565b816001815181106112745761127461172a565b6001600160a01b039283166020918202929092010152600c5461129a91309116846109a5565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906112d29085905f9086903090429060040161173e565b5f604051808303815f87803b1580156112e9575f80fd5b505af11580156112fb573d5f803e3d5ffd5b5050600d805460ff60a81b1916905550505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611347573d5f803e3d5ffd5b5050565b5f8061135783856116e5565b9050838110156111445760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610477565b5f61114483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061108e565b5f818361140a5760405162461bcd60e51b81526004016104779190611416565b505f6110bd848661170b565b5f6020808352835180828501525f5b8181101561144157858101830151858201604001528201611425565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611475575f80fd5b50565b5f8060408385031215611489575f80fd5b823561149481611461565b946020939093013593505050565b5f805f606084860312156114b4575f80fd5b83356114bf81611461565b925060208401356114cf81611461565b929592945050506040919091013590565b5f602082840312156114f0575f80fd5b813561114481611461565b5f806040838503121561150c575f80fd5b823561151781611461565b9150602083013561152781611461565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561158057815f190482111561156657611566611532565b8085161561157357918102915b93841c939080029061154b565b509250929050565b5f82611596575060016103c0565b816115a257505f6103c0565b81600181146115b857600281146115c2576115de565b60019150506103c0565b60ff8411156115d3576115d3611532565b50506001821b6103c0565b5060208310610133831016604e8410600b8410161715611601575081810a6103c0565b61160b8383611546565b805f190482111561161e5761161e611532565b029392505050565b5f61114460ff841683611588565b80820281158282048414176103c0576103c0611532565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611690575f80fd5b815161114481611461565b5f805f606084860312156116ad575f80fd5b8351925060208401519150604084015190509250925092565b5f602082840312156116d6575f80fd5b81518015158114611144575f80fd5b808201808211156103c0576103c0611532565b818103818111156103c0576103c0611532565b5f8261172557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561178c5784516001600160a01b031683529383019391830191600101611767565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f1a9130f1996028c1a3b3006ac198b84ee1ec098d2dde365351809039dc2cc3064736f6c63430008140033

Deployed Bytecode

0x60806040526004361061011e575f3560e01c80637d1db4a51161009d578063bf474bed11610062578063bf474bed14610316578063c876d0b91461032b578063c9567bf914610344578063dd62ed3e14610358578063f1b50c1d1461039c575f80fd5b80637d1db4a51461027c5780638da5cb5b146102915780638f9a55c0146102b757806395d89b41146102cc578063a9059cbb146102f7575f80fd5b8063313ce567116100e3578063313ce567146101ef57806369e1ea7f1461020a57806370a0823114610220578063715018a614610254578063751039fc14610268575f80fd5b806306fdde0314610129578063095ea7b31461016a5780630faee56f1461019957806318160ddd146101bc57806323b872dd146101d0575f80fd5b3661012557005b5f80fd5b348015610134575f80fd5b5060408051808201909152600781526656504e2078416960c81b60208201525b6040516101619190611416565b60405180910390f35b348015610175575f80fd5b50610189610184366004611478565b6103b0565b6040519015158152602001610161565b3480156101a4575f80fd5b506101ae60095481565b604051908152602001610161565b3480156101c7575f80fd5b506101ae6103c6565b3480156101db575f80fd5b506101896101ea3660046114a2565b6103e7565b3480156101fa575f80fd5b5060405160098152602001610161565b348015610215575f80fd5b5061021e61044e565b005b34801561022b575f80fd5b506101ae61023a3660046114e0565b6001600160a01b03165f9081526001602052604090205490565b34801561025f575f80fd5b5061021e61048b565b348015610273575f80fd5b5061021e6104fc565b348015610287575f80fd5b506101ae60065481565b34801561029c575f80fd5b505f546040516001600160a01b039091168152602001610161565b3480156102c2575f80fd5b506101ae60075481565b3480156102d7575f80fd5b506040805180820190915260038152622b282760e91b6020820152610154565b348015610302575f80fd5b50610189610311366004611478565b6105b0565b348015610321575f80fd5b506101ae60085481565b348015610336575f80fd5b506004546101899060ff1681565b34801561034f575f80fd5b5061021e6105bc565b348015610363575f80fd5b506101ae6103723660046114fb565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103a7575f80fd5b5061021e610967565b5f6103bc3384846109a5565b5060015b92915050565b5f6103d36009600a611626565b6103e29064e8d4a51000611634565b905090565b5f6103f3848484610ac8565b610444843361043f856040518060600160405280602881526020016117ae602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061108e565b6109a5565b5060019392505050565b5f546001600160a01b031633146104805760405162461bcd60e51b81526004016104779061164b565b60405180910390fd5b5f600a819055600b55565b5f546001600160a01b031633146104b45760405162461bcd60e51b81526004016104779061164b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105255760405162461bcd60e51b81526004016104779061164b565b6105316009600a611626565b6105409064e8d4a51000611634565b60065561054f6009600a611626565b61055e9064e8d4a51000611634565b6007557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61058e6009600a611626565b61059d9064e8d4a51000611634565b60405190815260200160405180910390a1565b5f6103bc338484610ac8565b5f546001600160a01b031633146105e55760405162461bcd60e51b81526004016104779061164b565b600d54600160a01b900460ff161561063f5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610477565b600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561068990309061067a6009600a611626565b61043f9064e8d4a51000611634565b600c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106fd9190611680565b6001600160a01b031663c9c6539630600c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107809190611680565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156107ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ee9190611680565b600d80546001600160a01b039283166001600160a01b0319909116179055600c541663f305d7194730610835816001600160a01b03165f9081526001602052604090205490565b5f806108485f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108ae573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108d3919061169b565b5050600d54600c5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610928573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094c91906116c6565b50600d805463ffff00ff60a01b19166201000160a01b179055565b5f546001600160a01b031633146109905760405162461bcd60e51b81526004016104779061164b565b600d805460ff60b81b1916600160b81b179055565b6001600160a01b038316610a075760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610477565b6001600160a01b038216610a685760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610477565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b2c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610477565b6001600160a01b038216610b8e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610477565b5f8111610bef5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610477565b5f80546001600160a01b03858116911614801590610c1a57505f546001600160a01b03848116911614155b8015610c3957506004546001600160a01b038581166101009092041614155b8015610c5857506004546001600160a01b038481166101009092041614155b15610eda57600d54600160b81b900460ff16610cb65760405162461bcd60e51b815260206004820152601960248201527f5472616e736665727320617265206e6f7420656e61626c6564000000000000006044820152606401610477565b610cd66064610cd0600a54856110c690919063ffffffff16565b9061114b565b600d549091506001600160a01b038581169116148015610d045750600c546001600160a01b03848116911614155b8015610d2857506001600160a01b0383165f9081526003602052604090205460ff16155b15610e0457600654821115610d8a5760405162461bcd60e51b815260206004820152602260248201527f43616e206e6f7420627579206d6f7265207468616e205f6d61785478416d6f756044820152611b9d60f21b6064820152608401610477565b60075482610dac856001600160a01b03165f9081526001602052604090205490565b610db691906116e5565b1115610e045760405162461bcd60e51b815260206004820152601c60248201527f5761726e696e672120416c7265616479206d61782077616c6c65742e000000006044820152606401610477565b600d546001600160a01b038481169116148015610e2a57506001600160a01b0384163014155b15610e4c57610e496064610cd0600b54856110c690919063ffffffff16565b90505b305f90815260016020526040902054600d54600160a81b900460ff16158015610e825750600d546001600160a01b038581169116145b8015610e975750600d54600160b01b900460ff165b8015610ea4575060085481115b15610ed857610ec6610ec184610ebc8460095461118c565b61118c565b6111a0565b478015610ed657610ed647611310565b505b505b6001600160a01b0384165f9081526003602052604090205460ff1680610f1757506001600160a01b0383165f9081526003602052604090205460ff165b80610f495750600d546001600160a01b03858116911614801590610f495750600d546001600160a01b03848116911614155b15610f5157505f5b8015610fc957305f90815260016020526040902054610f70908261134b565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fc09085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054610feb90836113a9565b6001600160a01b0385165f9081526001602052604090205561102e61101083836113a9565b6001600160a01b0385165f908152600160205260409020549061134b565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61107785856113a9565b60405190815260200160405180910390a350505050565b5f81848411156110b15760405162461bcd60e51b81526004016104779190611416565b505f6110bd84866116f8565b95945050505050565b5f825f036110d557505f6103c0565b5f6110e08385611634565b9050826110ed858361170b565b146111445760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610477565b9392505050565b5f61114483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113ea565b5f81831161119a5782611144565b50919050565b600d805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106111e6576111e661172a565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561123d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112619190611680565b816001815181106112745761127461172a565b6001600160a01b039283166020918202929092010152600c5461129a91309116846109a5565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906112d29085905f9086903090429060040161173e565b5f604051808303815f87803b1580156112e9575f80fd5b505af11580156112fb573d5f803e3d5ffd5b5050600d805460ff60a81b1916905550505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611347573d5f803e3d5ffd5b5050565b5f8061135783856116e5565b9050838110156111445760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610477565b5f61114483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061108e565b5f818361140a5760405162461bcd60e51b81526004016104779190611416565b505f6110bd848661170b565b5f6020808352835180828501525f5b8181101561144157858101830151858201604001528201611425565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611475575f80fd5b50565b5f8060408385031215611489575f80fd5b823561149481611461565b946020939093013593505050565b5f805f606084860312156114b4575f80fd5b83356114bf81611461565b925060208401356114cf81611461565b929592945050506040919091013590565b5f602082840312156114f0575f80fd5b813561114481611461565b5f806040838503121561150c575f80fd5b823561151781611461565b9150602083013561152781611461565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561158057815f190482111561156657611566611532565b8085161561157357918102915b93841c939080029061154b565b509250929050565b5f82611596575060016103c0565b816115a257505f6103c0565b81600181146115b857600281146115c2576115de565b60019150506103c0565b60ff8411156115d3576115d3611532565b50506001821b6103c0565b5060208310610133831016604e8410600b8410161715611601575081810a6103c0565b61160b8383611546565b805f190482111561161e5761161e611532565b029392505050565b5f61114460ff841683611588565b80820281158282048414176103c0576103c0611532565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611690575f80fd5b815161114481611461565b5f805f606084860312156116ad575f80fd5b8351925060208401519150604084015190509250925092565b5f602082840312156116d6575f80fd5b81518015158114611144575f80fd5b808201808211156103c0576103c0611532565b818103818111156103c0576103c0611532565b5f8261172557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561178c5784516001600160a01b031683529383019391830191600101611767565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f1a9130f1996028c1a3b3006ac198b84ee1ec098d2dde365351809039dc2cc3064736f6c63430008140033

Deployed Bytecode Sourcemap

3875:7273:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5660:83;;;;;;;;;;-1:-1:-1;5730:5:0;;;;;;;;;;;;-1:-1:-1;;;5730:5:0;;;;5660:83;;;;;;;:::i;:::-;;;;;;;;6493:161;;;;;;;;;;-1:-1:-1;6493:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6493:161:0;1023:187:1;4602:56:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;4602:56:0;1215:177:1;5937:95:0;;;;;;;;;;;;;:::i;6662:313::-;;;;;;;;;;-1:-1:-1;6662:313:0;;;;;:::i;:::-;;:::i;5846:83::-;;;;;;;;;;-1:-1:-1;5846:83:0;;4779:1;2000:36:1;;1988:2;1973:18;5846:83:0;1858:184:1;10133:93:0;;;;;;;;;;;;;:::i;:::-;;6040:119;;;;;;;;;;-1:-1:-1;6040:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6133:18:0;6106:7;6133:18;;;:9;:18;;;;;;;6040:119;2958:148;;;;;;;;;;;;;:::i;10234:161::-;;;;;;;;;;;;;:::i;4405:57::-;;;;;;;;;;;;;;;;2744:79;;;;;;;;;;-1:-1:-1;2782:7:0;2809:6;2744:79;;-1:-1:-1;;;;;2809:6:0;;;2445:51:1;;2433:2;2418:18;2744:79:0;2299:203:1;4469:59:0;;;;;;;;;;;;;;;;5751:87;;;;;;;;;;-1:-1:-1;5823:7:0;;;;;;;;;;;;-1:-1:-1;;;5823:7:0;;;;5751:87;;6167:167;;;;;;;;;;-1:-1:-1;6167:167:0;;;;;:::i;:::-;;:::i;4535:60::-;;;;;;;;;;;;;;;;4144:39;;;;;;;;;;-1:-1:-1;4144:39:0;;;;;;;;10403:705;;;;;;;;;;;;;:::i;6342:143::-;;;;;;;;;;-1:-1:-1;6342:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6450:18:0;;;6423:7;6450:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6342:143;10037:88;;;;;;;;;;;;;:::i;6493:161::-;6568:4;6585:39;579:10;6608:7;6617:6;6585:8;:39::i;:::-;-1:-1:-1;6642:4:0;6493:161;;;;;:::o;5937:95::-;5990:7;4385:13;4779:1;4385:2;:13;:::i;:::-;4369:29;;:13;:29;:::i;:::-;6010:14;;5937:95;:::o;6662:313::-;6760:4;6777:36;6787:6;6795:9;6806:6;6777:9;:36::i;:::-;6824:121;6833:6;579:10;6855:89;6893:6;6855:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:19:0;;;;;;:11;:19;;;;;;;;579:10;6855:33;;;;;;;;;;:37;:89::i;:::-;6824:8;:121::i;:::-;-1:-1:-1;6963:4:0;6662:313;;;;;:::o;10133:93::-;2871:6;;-1:-1:-1;;;;;2871:6:0;579:10;2871:22;2863:67;;;;-1:-1:-1;;;2863:67:0;;;;;;;:::i;:::-;;;;;;;;;10194:1:::1;10184:7;:11:::0;;;10206:8:::1;:12:::0;10133:93::o;2958:148::-;2871:6;;-1:-1:-1;;;;;2871:6:0;579:10;2871:22;2863:67;;;;-1:-1:-1;;;2863:67:0;;;;;;;:::i;:::-;3065:1:::1;3049:6:::0;;3028:40:::1;::::0;-1:-1:-1;;;;;3049:6:0;;::::1;::::0;3028:40:::1;::::0;3065:1;;3028:40:::1;3096:1;3079:19:::0;;-1:-1:-1;;;;;;3079:19:0::1;::::0;;2958:148::o;10234:161::-;2871:6;;-1:-1:-1;;;;;2871:6:0;579:10;2871:22;2863:67;;;;-1:-1:-1;;;2863:67:0;;;;;;;:::i;:::-;4385:13:::1;4779:1;4385:2;:13;:::i;:::-;4369:29;::::0;:13:::1;:29;:::i;:::-;10287:12;:22:::0;4385:13:::1;4779:1;4385:2;:13;:::i;:::-;4369:29;::::0;:13:::1;:29;:::i;:::-;10320:14;:24:::0;10360:27:::1;4385:13;4779:1;4385:2;:13;:::i;:::-;4369:29;::::0;:13:::1;:29;:::i;:::-;10360:27;::::0;1361:25:1;;;1349:2;1334:18;10360:27:0::1;;;;;;;10234:161::o:0;6167:167::-;6245:4;6262:42;579:10;6286:9;6297:6;6262:9;:42::i;10403:705::-;2871:6;;-1:-1:-1;;;;;2871:6:0;579:10;2871:22;2863:67;;;;-1:-1:-1;;;2863:67:0;;;;;;;:::i;:::-;10467:11:::1;::::0;-1:-1:-1;;;10467:11:0;::::1;;;10466:12;10458:47;;;::::0;-1:-1:-1;;;10458:47:0;;5151:2:1;10458:47:0::1;::::0;::::1;5133:21:1::0;5190:2;5170:18;;;5163:30;5229:25;5209:18;;;5202:53;5272:18;;10458:47:0::1;4949:347:1::0;10458:47:0::1;10516:15;:80:::0;;-1:-1:-1;;;;;;10516:80:0::1;10553:42;10516:80:::0;;::::1;::::0;;;10607:58:::1;::::0;10624:4:::1;::::0;4385:13:::1;4779:1;4385:2;:13;:::i;:::-;4369:29;::::0;:13:::1;:29;:::i;10607:58::-;10710:15;;;;;;;;;-1:-1:-1::0;;;;;10710:15:0::1;-1:-1:-1::0;;;;;10710:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10692:55:0::1;;10756:4;10763:15;;;;;;;;;-1:-1:-1::0;;;;;10763:15:0::1;-1:-1:-1::0;;;;;10763:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10692:94;::::0;-1:-1:-1;;;;;;10692:94:0::1;::::0;;;;;;-1:-1:-1;;;;;5787:15:1;;;10692:94:0::1;::::0;::::1;5769:34:1::0;5839:15;;5819:18;;;5812:43;5704:18;;10692:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10676:13;:110:::0;;-1:-1:-1;;;;;10676:110:0;;::::1;-1:-1:-1::0;;;;;;10676:110:0;;::::1;;::::0;;10797:15:::1;::::0;::::1;:31;10836:21;10867:4;10873:24;10867:4:::0;-1:-1:-1;;;;;6133:18:0;6106:7;6133:18;;;:9;:18;;;;;;;6040:119;10873:24:::1;10898:1;10900::::0;10902:7:::1;2782::::0;2809:6;-1:-1:-1;;;;;2809:6:0;;2744:79;10902:7:::1;10797:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;10797:129:0;;;-1:-1:-1;;;;;6225:15:1;;;10797:129:0::1;::::0;::::1;6207:34:1::0;6257:18;;;6250:34;;;;6300:18;;;6293:34;;;;6343:18;;;6336:34;6407:15;;;6386:19;;;6379:44;10910:15:0::1;6439:19:1::0;;;6432:35;6141:19;;10797:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;10944:13:0::1;::::0;10975:15:::1;::::0;10937:71:::1;::::0;-1:-1:-1;;;10937:71:0;;-1:-1:-1;;;;;10975:15:0;;::::1;10937:71;::::0;::::1;6963:51:1::0;-1:-1:-1;;7030:18:1;;;7023:34;10944:13:0;::::1;::::0;-1:-1:-1;10937:29:0::1;::::0;6936:18:1;;10937:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;11019:11:0::1;:18:::0;;-1:-1:-1;;;;11077:23:0;-1:-1:-1;;;11077:23:0;;;10403:705::o;10037:88::-;2871:6;;-1:-1:-1;;;;;2871:6:0;579:10;2871:22;2863:67;;;;-1:-1:-1;;;2863:67:0;;;;;;;:::i;:::-;10095:15:::1;:22:::0;;-1:-1:-1;;;;10095:22:0::1;-1:-1:-1::0;;;10095:22:0::1;::::0;;10037:88::o;6983:335::-;-1:-1:-1;;;;;7076:19:0;;7068:68;;;;-1:-1:-1;;;7068:68:0;;7552:2:1;7068:68:0;;;7534:21:1;7591:2;7571:18;;;7564:30;7630:34;7610:18;;;7603:62;-1:-1:-1;;;7681:18:1;;;7674:34;7725:19;;7068:68:0;7350:400:1;7068:68:0;-1:-1:-1;;;;;7155:21:0;;7147:68;;;;-1:-1:-1;;;7147:68:0;;7957:2:1;7147:68:0;;;7939:21:1;7996:2;7976:18;;;7969:30;8035:34;8015:18;;;8008:62;-1:-1:-1;;;8086:18:1;;;8079:32;8128:19;;7147:68:0;7755:398:1;7147:68:0;-1:-1:-1;;;;;7226:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7278:32;;1361:25:1;;;7278:32:0;;1334:18:1;7278:32:0;;;;;;;6983:335;;;:::o;7326:2008::-;-1:-1:-1;;;;;7414:18:0;;7406:68;;;;-1:-1:-1;;;7406:68:0;;8360:2:1;7406:68:0;;;8342:21:1;8399:2;8379:18;;;8372:30;8438:34;8418:18;;;8411:62;-1:-1:-1;;;8489:18:1;;;8482:35;8534:19;;7406:68:0;8158:401:1;7406:68:0;-1:-1:-1;;;;;7493:16:0;;7485:64;;;;-1:-1:-1;;;7485:64:0;;8766:2:1;7485:64:0;;;8748:21:1;8805:2;8785:18;;;8778:30;8844:34;8824:18;;;8817:62;-1:-1:-1;;;8895:18:1;;;8888:33;8938:19;;7485:64:0;8564:399:1;7485:64:0;7577:1;7568:6;:10;7560:64;;;;-1:-1:-1;;;7560:64:0;;9170:2:1;7560:64:0;;;9152:21:1;9209:2;9189:18;;;9182:30;9248:34;9228:18;;;9221:62;-1:-1:-1;;;9299:18:1;;;9292:39;9348:19;;7560:64:0;8968:405:1;7560:64:0;7635:17;2809:6;;-1:-1:-1;;;;;7669:15:0;;;2809:6;;7669:15;;;;:32;;-1:-1:-1;2782:7:0;2809:6;-1:-1:-1;;;;;7688:13:0;;;2809:6;;7688:13;;7669:32;:59;;;;-1:-1:-1;7713:15:0;;-1:-1:-1;;;;;7705:23:0;;;7713:15;;;;;7705:23;;7669:59;:84;;;;-1:-1:-1;7738:15:0;;-1:-1:-1;;;;;7732:21:0;;;7738:15;;;;;7732:21;;7669:84;7665:1149;;;7778:15;;-1:-1:-1;;;7778:15:0;;;;7770:53;;;;-1:-1:-1;;;7770:53:0;;9580:2:1;7770:53:0;;;9562:21:1;9619:2;9599:18;;;9592:30;9658:27;9638:18;;;9631:55;9703:18;;7770:53:0;9378:349:1;7770:53:0;7850:28;7874:3;7850:19;7861:7;;7850:6;:10;;:19;;;;:::i;:::-;:23;;:28::i;:::-;7907:13;;7838:40;;-1:-1:-1;;;;;;7899:21:0;;;7907:13;;7899:21;:55;;;;-1:-1:-1;7938:15:0;;-1:-1:-1;;;;;7924:30:0;;;7938:15;;7924:30;;7899:55;:83;;;;-1:-1:-1;;;;;;7960:22:0;;;;;;:18;:22;;;;;;;;7958:24;7899:83;7895:294;;;8022:12;;8012:6;:22;;8004:69;;;;-1:-1:-1;;;8004:69:0;;9934:2:1;8004:69:0;;;9916:21:1;9973:2;9953:18;;;9946:30;10012:34;9992:18;;;9985:62;-1:-1:-1;;;10063:18:1;;;10056:32;10105:19;;8004:69:0;9732:398:1;8004:69:0;8126:14;;8116:6;8100:13;8110:2;-1:-1:-1;;;;;6133:18:0;6106:7;6133:18;;;:9;:18;;;;;;;6040:119;8100:13;:22;;;;:::i;:::-;:40;;8092:81;;;;-1:-1:-1;;;8092:81:0;;10467:2:1;8092:81:0;;;10449:21:1;10506:2;10486:18;;;10479:30;10545;10525:18;;;10518:58;10593:18;;8092:81:0;10265:352:1;8092:81:0;8214:13;;-1:-1:-1;;;;;8208:19:0;;;8214:13;;8208:19;:43;;;;-1:-1:-1;;;;;;8231:20:0;;8246:4;8231:20;;8208:43;8205:124;;;8284:29;8309:3;8284:20;8295:8;;8284:6;:10;;:20;;;;:::i;:29::-;8272:41;;8205:124;8394:4;8345:28;6133:18;;;:9;:18;;;;;;8420:6;;-1:-1:-1;;;8420:6:0;;;;8419:7;:32;;;;-1:-1:-1;8438:13:0;;-1:-1:-1;;;;;8430:21:0;;;8438:13;;8430:21;8419:32;:47;;;;-1:-1:-1;8455:11:0;;-1:-1:-1;;;8455:11:0;;;;8419:47;:89;;;;;8491:17;;8470:20;:38;8419:89;8415:388;;;8529:67;8546:49;8550:6;8557:37;8561:20;8582:11;;8557:3;:37::i;:::-;8546:3;:49::i;:::-;8529:16;:67::i;:::-;8644:21;8687:22;;8684:104;;8734:34;8746:21;8734:11;:34::i;:::-;8510:293;8415:388;7755:1059;7665:1149;-1:-1:-1;;;;;8831:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;8859:22:0;;;;;;:18;:22;;;;;;;;8831:50;8830:102;;;-1:-1:-1;8895:13:0;;-1:-1:-1;;;;;8887:21:0;;;8895:13;;8887:21;;;;:44;;-1:-1:-1;8918:13:0;;-1:-1:-1;;;;;8912:19:0;;;8918:13;;8912:19;;8887:44;8826:148;;;-1:-1:-1;8961:1:0;8826:148;8989:13;;8986:163;;9059:4;9041:24;;;;:9;:24;;;;;;:39;;9070:9;9041:28;:39::i;:::-;9034:4;9016:24;;;;:9;:24;;;;;;;:64;;;;9098:39;;-1:-1:-1;;;;;9098:39:0;;;;;;;9127:9;1361:25:1;;1349:2;1334:18;;1215:177;9098:39:0;;;;;;;;8986:163;-1:-1:-1;;;;;9177:15:0;;;;;;:9;:15;;;;;;:27;;9197:6;9177:19;:27::i;:::-;-1:-1:-1;;;;;9161:15:0;;;;;;:9;:15;;;;;:43;9229:40;9247:21;:6;9258:9;9247:10;:21::i;:::-;-1:-1:-1;;;;;9229:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;9215:13:0;;;;;;;:9;:13;;;;;:54;;;;9285:41;;;9304:21;:6;9315:9;9304:10;:21::i;:::-;9285:41;;1361:25:1;;;1349:2;1334:18;9285:41:0;;;;;;;7395:1939;7326:2008;;;:::o;1636:190::-;1722:7;1758:12;1750:6;;;;1742:29;;;;-1:-1:-1;;;1742:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1782:9:0;1794:5;1798:1;1794;:5;:::i;:::-;1782:17;1636:190;-1:-1:-1;;;;;1636:190:0:o;1834:246::-;1892:7;1916:1;1921;1916:6;1912:47;;-1:-1:-1;1946:1:0;1939:8;;1912:47;1969:9;1981:5;1985:1;1981;:5;:::i;:::-;1969:17;-1:-1:-1;2014:1:0;2005:5;2009:1;1969:17;2005:5;:::i;:::-;:10;1997:56;;;;-1:-1:-1;;;1997:56:0;;11179:2:1;1997:56:0;;;11161:21:1;11218:2;11198:18;;;11191:30;11257:34;11237:18;;;11230:62;-1:-1:-1;;;11308:18:1;;;11301:31;11349:19;;1997:56:0;10977:397:1;1997:56:0;2071:1;1834:246;-1:-1:-1;;;1834:246:0:o;2088:132::-;2146:7;2173:39;2177:1;2180;2173:39;;;;;;;;;;;;;;;;;:3;:39::i;9833:98::-;9890:7;9917:1;9915;:3;9914:9;;9922:1;9914:9;;;-1:-1:-1;9920:1:0;9833:98;-1:-1:-1;9833:98:0:o;9342:483::-;5212:6;:13;;-1:-1:-1;;;;5212:13:0;-1:-1:-1;;;5212:13:0;;;9444:16:::1;::::0;;9458:1:::1;9444:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9444:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9444:16:0::1;9420:40;;9489:4;9471;9476:1;9471:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9471:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;9515:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;9515:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;9471:7;;9515:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9505:4;9510:1;9505:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9505:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;9580:15:::1;::::0;9548:62:::1;::::0;9565:4:::1;::::0;9580:15:::1;9598:11:::0;9548:8:::1;:62::i;:::-;9621:15;::::0;:196:::1;::::0;-1:-1:-1;;;9621:196:0;;-1:-1:-1;;;;;9621:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;9702:11;;9621:15:::1;::::0;9744:4;;9771::::1;::::0;9791:15:::1;::::0;9621:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5248:6:0;:14;;-1:-1:-1;;;;5248:14:0;;;-1:-1:-1;;;;9342:483:0:o;9939:90::-;9995:9;;:26;;-1:-1:-1;;;;;9995:9:0;;;;:26;;;;;10014:6;;9995:9;:26;:9;:26;10014:6;9995:9;:26;;;;;;;;;;;;;;;;;;;;;9939:90;:::o;1305:179::-;1363:7;;1395:5;1399:1;1395;:5;:::i;:::-;1383:17;;1424:1;1419;:6;;1411:46;;;;-1:-1:-1;;;1411:46:0;;12830:2:1;1411:46:0;;;12812:21:1;12869:2;12849:18;;;12842:30;12908:29;12888:18;;;12881:57;12955:18;;1411:46:0;12628:351:1;1492:136:0;1550:7;1577:43;1581:1;1584;1577:43;;;;;;;;;;;;;;;;;:3;:43::i;2228:189::-;2314:7;2349:12;2342:5;2334:28;;;;-1:-1:-1;;;2334:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2373:9:0;2385:5;2389:1;2385;:5;:::i;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;622:70;567:131;:::o;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:356::-;4790:2;4772:21;;;4809:18;;;4802:30;4868:34;4863:2;4848:18;;4841:62;4935:2;4920:18;;4588:356::o;5301:251::-;5371:6;5424:2;5412:9;5403:7;5399:23;5395:32;5392:52;;;5440:1;5437;5430:12;5392:52;5472:9;5466:16;5491:31;5516:5;5491:31;:::i;6478:306::-;6566:6;6574;6582;6635:2;6623:9;6614:7;6610:23;6606:32;6603:52;;;6651:1;6648;6641:12;6603:52;6680:9;6674:16;6664:26;;6730:2;6719:9;6715:18;6709:25;6699:35;;6774:2;6763:9;6759:18;6753:25;6743:35;;6478:306;;;;;:::o;7068:277::-;7135:6;7188:2;7176:9;7167:7;7163:23;7159:32;7156:52;;;7204:1;7201;7194:12;7156:52;7236:9;7230:16;7289:5;7282:13;7275:21;7268:5;7265:32;7255:60;;7311:1;7308;7301:12;10135:125;10200:9;;;10221:10;;;10218:36;;;10234:18;;:::i;10622:128::-;10689:9;;;10710:11;;;10707:37;;;10724:18;;:::i;10755:217::-;10795:1;10821;10811:132;;10865:10;10860:3;10856:20;10853:1;10846:31;10900:4;10897:1;10890:15;10928:4;10925:1;10918:15;10811:132;-1:-1:-1;10957:9:1;;10755:217::o;11511:127::-;11572:10;11567:3;11563:20;11560:1;11553:31;11603:4;11600:1;11593:15;11627:4;11624:1;11617:15;11643:980;11905:4;11953:3;11942:9;11938:19;11984:6;11973:9;11966:25;12010:2;12048:6;12043:2;12032:9;12028:18;12021:34;12091:3;12086:2;12075:9;12071:18;12064:31;12115:6;12150;12144:13;12181:6;12173;12166:22;12219:3;12208:9;12204:19;12197:26;;12258:2;12250:6;12246:15;12232:29;;12279:1;12289:195;12303:6;12300:1;12297:13;12289:195;;;12368:13;;-1:-1:-1;;;;;12364:39:1;12352:52;;12459:15;;;;12424:12;;;;12400:1;12318:9;12289:195;;;-1:-1:-1;;;;;;;12540:32:1;;;;12535:2;12520:18;;12513:60;-1:-1:-1;;;12604:3:1;12589:19;12582:35;12501:3;11643:980;-1:-1:-1;;;11643:980:1:o

Swarm Source

ipfs://f1a9130f1996028c1a3b3006ac198b84ee1ec098d2dde365351809039dc2cc30

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.