ETH Price: $3,378.17 (+0.80%)

Contract

0x9999999840065a79d3a20575450eAa57b6a515FC
 

Overview

ETH Balance

0.5 ETH

Eth Value

$1,689.08 (@ $3,378.17/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve212438762024-11-22 14:29:5922 hrs ago1732285799IN
0x99999998...7b6a515FC
0 ETH0.0008066217.20332209
Approve212347242024-11-21 7:50:112 days ago1732175411IN
0x99999998...7b6a515FC
0 ETH0.0002510610.08115598
Approve212347142024-11-21 7:48:112 days ago1732175291IN
0x99999998...7b6a515FC
0 ETH0.0002794711.22219019
Approve212292312024-11-20 13:24:472 days ago1732109087IN
0x99999998...7b6a515FC
0 ETH0.0009075419.25702229
Approve212114662024-11-18 1:58:595 days ago1731895139IN
0x99999998...7b6a515FC
0 ETH0.000587312.54166681
Transfer211988112024-11-16 7:37:477 days ago1731742667IN
0x99999998...7b6a515FC
0 ETH0.001026813.89025354
Transfer211981212024-11-16 5:19:357 days ago1731734375IN
0x99999998...7b6a515FC
0 ETH0.001066914.4186019
Transfer211981022024-11-16 5:15:477 days ago1731734147IN
0x99999998...7b6a515FC
0 ETH0.0012394216.7528833
Transfer211973562024-11-16 2:45:597 days ago1731725159IN
0x99999998...7b6a515FC
0 ETH0.0014998620.26977792
Transfer211970462024-11-16 1:43:357 days ago1731721415IN
0x99999998...7b6a515FC
0 ETH0.0013282317.95038356
Transfer211966782024-11-16 0:29:357 days ago1731716975IN
0x99999998...7b6a515FC
0 ETH0.0013701318.51661127
Transfer211963712024-11-15 23:27:477 days ago1731713267IN
0x99999998...7b6a515FC
0 ETH0.001461819.75543326
Transfer211963532024-11-15 23:24:117 days ago1731713051IN
0x99999998...7b6a515FC
0 ETH0.0016670222.52895138
Transfer211962732024-11-15 23:08:117 days ago1731712091IN
0x99999998...7b6a515FC
0 ETH0.0015586621.0645008
Transfer211961522024-11-15 22:43:597 days ago1731710639IN
0x99999998...7b6a515FC
0 ETH0.0019777326.72792126
Transfer211959762024-11-15 22:08:477 days ago1731708527IN
0x99999998...7b6a515FC
0 ETH0.0015996921.61898579
Transfer211958722024-11-15 21:47:597 days ago1731707279IN
0x99999998...7b6a515FC
0 ETH0.001999327.01943797
Transfer211958662024-11-15 21:46:477 days ago1731707207IN
0x99999998...7b6a515FC
0 ETH0.001851725.02477659
Transfer211957132024-11-15 21:15:477 days ago1731705347IN
0x99999998...7b6a515FC
0 ETH0.00582278.68102895
Approve211943632024-11-15 16:43:357 days ago1731689015IN
0x99999998...7b6a515FC
0 ETH0.0014739931.23668974
Approve211916122024-11-15 7:30:238 days ago1731655823IN
0x99999998...7b6a515FC
0 ETH0.000917519.44855239
Approve211911422024-11-15 5:55:238 days ago1731650123IN
0x99999998...7b6a515FC
0 ETH0.0008377317.86673909
Approve211906832024-11-15 4:23:118 days ago1731644591IN
0x99999998...7b6a515FC
0 ETH0.0007853516.64318129
Approve211837192024-11-14 5:02:599 days ago1731560579IN
0x99999998...7b6a515FC
0 ETH0.001337628.52767327
Approve211835682024-11-14 4:32:479 days ago1731558767IN
0x99999998...7b6a515FC
0 ETH0.0013546628.89142012
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
205604992024-08-19 5:11:1196 days ago1724044271
0x99999998...7b6a515FC
0.5 ETH
205566292024-08-18 16:12:2396 days ago1723997543
0x99999998...7b6a515FC
0.15615878 ETH
205566292024-08-18 16:12:2396 days ago1723997543
0x99999998...7b6a515FC
0.15615878 ETH
205566252024-08-18 16:11:3596 days ago1723997495
0x99999998...7b6a515FC
0.05135994 ETH
205566252024-08-18 16:11:3596 days ago1723997495
0x99999998...7b6a515FC
0.05135994 ETH
205566242024-08-18 16:11:2396 days ago1723997483
0x99999998...7b6a515FC
0.00549703 ETH
205566242024-08-18 16:11:2396 days ago1723997483
0x99999998...7b6a515FC
0.00549703 ETH
205566242024-08-18 16:11:2396 days ago1723997483
0x99999998...7b6a515FC
0.11286056 ETH
205566242024-08-18 16:11:2396 days ago1723997483
0x99999998...7b6a515FC
0.11286056 ETH
205566222024-08-18 16:10:5996 days ago1723997459
0x99999998...7b6a515FC
0.05728839 ETH
205566222024-08-18 16:10:5996 days ago1723997459
0x99999998...7b6a515FC
0.05728839 ETH
205566212024-08-18 16:10:4796 days ago1723997447
0x99999998...7b6a515FC
0.11941054 ETH
205566212024-08-18 16:10:4796 days ago1723997447
0x99999998...7b6a515FC
0.11941054 ETH
205566192024-08-18 16:10:2396 days ago1723997423
0x99999998...7b6a515FC
0.06298835 ETH
205566192024-08-18 16:10:2396 days ago1723997423
0x99999998...7b6a515FC
0.06298835 ETH
205566172024-08-18 16:09:5996 days ago1723997399
0x99999998...7b6a515FC
0.01377932 ETH
205566172024-08-18 16:09:5996 days ago1723997399
0x99999998...7b6a515FC
0.01377932 ETH
205566162024-08-18 16:09:4796 days ago1723997387
0x99999998...7b6a515FC
0.19572312 ETH
205566162024-08-18 16:09:4796 days ago1723997387
0x99999998...7b6a515FC
0.19572312 ETH
205566162024-08-18 16:09:4796 days ago1723997387
0x99999998...7b6a515FC
31 wei
205566162024-08-18 16:09:4796 days ago1723997387
0x99999998...7b6a515FC
31 wei
205566152024-08-18 16:09:3596 days ago1723997375
0x99999998...7b6a515FC
0.02070477 ETH
205566152024-08-18 16:09:3596 days ago1723997375
0x99999998...7b6a515FC
0.02070477 ETH
205566122024-08-18 16:08:5996 days ago1723997339
0x99999998...7b6a515FC
0.36803672 ETH
205566122024-08-18 16:08:5996 days ago1723997339
0x99999998...7b6a515FC
0.36803672 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BALLTZE

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : BALLTZE.sol
/**
 *Submitted for verification at Etherscan.io on 2024-08-18
*/

// SPDX-License-Identifier: MIT

/*
$BALLTZE, affectionately known as "Cheems," was a Shiba Inu dog who became an internet sensation, particularly within the meme community. BALLTZE and DOGE became two of the most iconic dogs on the internet, often appearing in memes side by side, with Doge's enthusiastic optimism contrasting with Balltze's slightly awkward and shy demeanor.

1/2 OG

website  : https://balltze.vip
X        : https://x.com/balltze_eth
telegram : https://t.me/balltze_eth
*/

pragma solidity 0.8.26;

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 BALLTZE is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private isExile;
    mapping (address => bool) public marketPair;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 private _initialBuyTax=23;
    uint256 private _initialSellTax=23;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=27;
    uint256 private _reduceSellTaxAt=27;
    uint256 private _preventSwapBefore=1; 
    uint256 private _buyCount= 0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"BALLTZE";
    string private constant _symbol = unicode"BALLTZE";
    uint256 public _maxTxAmount =   23000000 * 10**_decimals;
    uint256 public _maxWalletSize = 23000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1300000 * 10**_decimals;
    uint256 public _maxTaxSwap= 13000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    uint256 public caCount = 4;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public caToggle = true;

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

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        isExile[owner()] = true;
        isExile[address(this)] = true;
        isExile[address(uniswapV2Pair)] = 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()) {
            taxAmount = amount.mul((_buyCount> _reduceBuyTaxAt)? _finalBuyTax: _initialBuyTax).div(100);

            if (marketPair[from] && to != address(uniswapV2Router) && ! isExile[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");

                if (firstBlock + 3  > block.number) {
                    require(!isContract(to));
                }
                _buyCount++;
            }

            if (!marketPair[to] && ! isExile[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

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

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

            uint256 contractTokenBalance = balanceOf(address(this));
            if (caToggle && !inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < caCount, "CA balance sell");
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }

            else if(!inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(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 isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
   
    function freeStuckEth() external onlyOwner {
        payable(_taxWallet).transfer(address(this).balance);
    }

    function openTrade() external onlyOwner() {
        require(!tradingOpen,"trading is open already");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        marketPair[address(uniswapV2Pair)] = true;
        isExile[address(uniswapV2Pair)] = true;
        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;
        firstBlock = block.number;
    }

    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 removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(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":"_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":"caCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caToggle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"freeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","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":"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":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601760075560176008555f6009555f600a55601b600b55601b600c556001600d555f600e555f600f555f6010556009600a61003f91906105d0565b63015ef3c061004e919061061a565b6011556009600a61005f91906105d0565b63015ef3c061006e919061061a565b6012556009600a61007f91906105d0565b6213d62061008d919061061a565b6013556009600a61009e91906105d0565b62c65d406100ac919061061a565b60145560046017555f60185f6101000a81548160ff0219169083151502179055505f601860016101000a81548160ff0219169083151502179055506001601860026101000a81548160ff02191690831515021790555034801561010d575f80fd5b505f61011d61043160201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101c761043160201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a61021491906105d0565b633b9aca00610223919061061a565b60015f61023461043160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61028461043860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506103ac61043160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a61040891906105d0565b633b9aca00610417919061061a565b604051610424919061066a565b60405180910390a3610683565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104e1578086048111156104bd576104bc61045f565b5b60018516156104cc5780820291505b80810290506104da8561048c565b94506104a1565b94509492505050565b5f826104f957600190506105b4565b81610506575f90506105b4565b816001811461051c576002811461052657610555565b60019150506105b4565b60ff8411156105385761053761045f565b5b8360020a91508482111561054f5761054e61045f565b5b506105b4565b5060208310610133831016604e8410600b841016171561058a5782820a9050838111156105855761058461045f565b5b6105b4565b6105978484846001610498565b925090508184048111156105ae576105ad61045f565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105da826105bb565b91506105e5836105c4565b92506106127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104ea565b905092915050565b5f610624826105bb565b915061062f836105bb565b925082820261063d816105bb565b915082820484148315176106545761065361045f565b5b5092915050565b610664816105bb565b82525050565b5f60208201905061067d5f83018461065b565b92915050565b6132ff806106905f395ff3fe608060405260043610610138575f3560e01c80637d1db4a5116100aa578063a9059cbb1161006e578063a9059cbb146103f1578063bf474bed1461042d578063dd62ed3e14610457578063f468b44514610493578063f5b3c3bf146104a9578063fb201b1d146104e55761013f565b80637d1db4a51461031f578063883b5be2146103495780638da5cb5b146103735780638f9a55c01461039d57806395d89b41146103c75761013f565b806323b872dd116100fc57806323b872dd14610227578063313ce5671461026357806349bd5a5e1461028d57806370a08231146102b7578063715018a6146102f3578063751039fc146103095761013f565b806306fdde0314610143578063095ea7b31461016d5780630e12062d146101a95780630faee56f146101d357806318160ddd146101fd5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b506101576104fb565b604051610164919061243d565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e91906124ee565b610538565b6040516101a09190612546565b60405180910390f35b3480156101b4575f80fd5b506101bd610555565b6040516101ca919061256e565b60405180910390f35b3480156101de575f80fd5b506101e761055b565b6040516101f4919061256e565b60405180910390f35b348015610208575f80fd5b50610211610561565b60405161021e919061256e565b60405180910390f35b348015610232575f80fd5b5061024d60048036038101906102489190612587565b610584565b60405161025a9190612546565b60405180910390f35b34801561026e575f80fd5b50610277610658565b60405161028491906125f2565b60405180910390f35b348015610298575f80fd5b506102a1610660565b6040516102ae919061261a565b60405180910390f35b3480156102c2575f80fd5b506102dd60048036038101906102d89190612633565b610685565b6040516102ea919061256e565b60405180910390f35b3480156102fe575f80fd5b506103076106cb565b005b348015610314575f80fd5b5061031d610819565b005b34801561032a575f80fd5b50610333610948565b604051610340919061256e565b60405180910390f35b348015610354575f80fd5b5061035d61094e565b60405161036a9190612546565b60405180910390f35b34801561037e575f80fd5b50610387610961565b604051610394919061261a565b60405180910390f35b3480156103a8575f80fd5b506103b1610988565b6040516103be919061256e565b60405180910390f35b3480156103d2575f80fd5b506103db61098e565b6040516103e8919061243d565b60405180910390f35b3480156103fc575f80fd5b50610417600480360381019061041291906124ee565b6109cb565b6040516104249190612546565b60405180910390f35b348015610438575f80fd5b506104416109e8565b60405161044e919061256e565b60405180910390f35b348015610462575f80fd5b5061047d6004803603810190610478919061265e565b6109ee565b60405161048a919061256e565b60405180910390f35b34801561049e575f80fd5b506104a7610a70565b005b3480156104b4575f80fd5b506104cf60048036038101906104ca9190612633565b610b6b565b6040516104dc9190612546565b60405180910390f35b3480156104f0575f80fd5b506104f9610b88565b005b60606040518060400160405280600781526020017f42414c4c545a4500000000000000000000000000000000000000000000000000815250905090565b5f61054b61054461119d565b84846111a4565b6001905092915050565b60175481565b60145481565b5f6009600a61057091906127f8565b633b9aca0061057f9190612842565b905090565b5f610590848484611367565b61064d8461059c61119d565b610648856040518060600160405280602881526020016132a26028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105ff61119d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611eaa9092919063ffffffff16565b6111a4565b600190509392505050565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106d361119d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461075f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610756906128cd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61082161119d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a4906128cd565b60405180910390fd5b6009600a6108bb91906127f8565b633b9aca006108ca9190612842565b6011819055506009600a6108de91906127f8565b633b9aca006108ed9190612842565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a61092291906127f8565b633b9aca006109319190612842565b60405161093e919061256e565b60405180910390a1565b60115481565b601860029054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600781526020017f42414c4c545a4500000000000000000000000000000000000000000000000000815250905090565b5f6109de6109d761119d565b8484611367565b6001905092915050565b60135481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610a7861119d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afb906128cd565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610b68573d5f803e3d5ffd5b50565b6004602052805f5260405f205f915054906101000a900460ff1681565b610b9061119d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c13906128cd565b60405180910390fd5b601660149054906101000a900460ff1615610c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6390612935565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d083060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610cf491906127f8565b633b9aca00610d039190612842565b6111a4565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d969190612967565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e409190612967565b6040518363ffffffff1660e01b8152600401610e5d929190612992565b6020604051808303815f875af1158015610e79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9d9190612967565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061101030610685565b5f8061101a610961565b426040518863ffffffff1660e01b815260040161103c969594939291906129fb565b60606040518083038185885af1158015611058573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061107d9190612a6e565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161111d929190612abe565b6020604051808303815f875af1158015611139573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115d9190612b0f565b506001601860016101000a81548160ff0219169083151502179055506001601660146101000a81548160ff02191690831515021790555043600681905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120990612baa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127790612c38565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161135a919061256e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc90612cc6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a90612d54565b60405180910390fd5b5f8111611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90612de2565b60405180910390fd5b5f61148e610961565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114fc57506114cc610961565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bfa5761153d606461152f600b54600e541161151c57600754611520565b6009545b85611f0c90919063ffffffff16565b611f8390919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156115e2575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611635575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117185760115482111561167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690612e4a565b60405180910390fd5b6012548261168c85610685565b6116969190612e68565b11156116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90612ee5565b60405180910390fd5b4360036006546116e79190612e68565b1115611700576116f683611fcc565b156116ff575f80fd5b5b600e5f81548092919061171290612f03565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117b6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561181457601254826117c885610685565b6117d29190612e68565b1115611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180a90612ee5565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561189657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118da576118d760646118c9600c54600e54116118b6576008546118ba565b600a545b85611f0c90919063ffffffff16565b611f8390919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611978575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156119b057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119b9575f90505b5f6119c330610685565b9050601860029054906101000a900460ff1680156119ed575060185f9054906101000a900460ff16155b8015611a3f575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611a575750601860019054906101000a900460ff165b8015611a64575060135481115b8015611a735750600d54600e54115b15611b2757601054431115611a8a575f600f819055505b601754600f5410611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac790612f94565b60405180910390fd5b611aed611ae884611ae384601454611fdd565b611fdd565b611ff5565b5f4790505f811115611b0357611b024761225e565b5b600f5f815480929190611b1590612f03565b91905055504360108190555050611bf8565b60185f9054906101000a900460ff16158015611b89575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611ba15750601860019054906101000a900460ff165b8015611bae575060135481115b8015611bbd5750600d54600e54115b15611bf757611bdf611bda84611bd584601454611fdd565b611fdd565b611ff5565b5f4790505f811115611bf557611bf44761225e565b5b505b5b505b5f811115611cf957611c528160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122c690919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cf0919061256e565b60405180910390a35b611d498260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461232390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611dec611da0828461232390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122c690919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e8f848661232390919063ffffffff16565b604051611e9c919061256e565b60405180910390a350505050565b5f838311158290611ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee8919061243d565b60405180910390fd5b505f8385611eff9190612fb2565b9050809150509392505050565b5f808303611f1c575f9050611f7d565b5f8284611f299190612842565b9050828482611f389190613012565b14611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f906130b2565b60405180910390fd5b809150505b92915050565b5f611fc483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061236c565b905092915050565b5f80823b90505f8111915050919050565b5f818311611feb5782611fed565b815b905092915050565b600160185f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561202b5761202a6130d0565b5b6040519080825280602002602001820160405280156120595781602001602082028036833780820191505090505b50905030815f815181106120705761206f6130fd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612114573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121389190612967565b8160018151811061214c5761214b6130fd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121b23060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111a4565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016122149594939291906131e1565b5f604051808303815f87803b15801561222b575f80fd5b505af115801561223d573d5f803e3d5ffd5b50505050505f60185f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156122c2573d5f803e3d5ffd5b5050565b5f8082846122d49190612e68565b905083811015612319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231090613283565b60405180910390fd5b8091505092915050565b5f61236483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611eaa565b905092915050565b5f80831182906123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a9919061243d565b60405180910390fd5b505f83856123c09190613012565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61240f826123cd565b61241981856123d7565b93506124298185602086016123e7565b612432816123f5565b840191505092915050565b5f6020820190508181035f8301526124558184612405565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61248a82612461565b9050919050565b61249a81612480565b81146124a4575f80fd5b50565b5f813590506124b581612491565b92915050565b5f819050919050565b6124cd816124bb565b81146124d7575f80fd5b50565b5f813590506124e8816124c4565b92915050565b5f80604083850312156125045761250361245d565b5b5f612511858286016124a7565b9250506020612522858286016124da565b9150509250929050565b5f8115159050919050565b6125408161252c565b82525050565b5f6020820190506125595f830184612537565b92915050565b612568816124bb565b82525050565b5f6020820190506125815f83018461255f565b92915050565b5f805f6060848603121561259e5761259d61245d565b5b5f6125ab868287016124a7565b93505060206125bc868287016124a7565b92505060406125cd868287016124da565b9150509250925092565b5f60ff82169050919050565b6125ec816125d7565b82525050565b5f6020820190506126055f8301846125e3565b92915050565b61261481612480565b82525050565b5f60208201905061262d5f83018461260b565b92915050565b5f602082840312156126485761264761245d565b5b5f612655848285016124a7565b91505092915050565b5f80604083850312156126745761267361245d565b5b5f612681858286016124a7565b9250506020612692858286016124a7565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561271e578086048111156126fa576126f961269c565b5b60018516156127095780820291505b8081029050612717856126c9565b94506126de565b94509492505050565b5f8261273657600190506127f1565b81612743575f90506127f1565b8160018114612759576002811461276357612792565b60019150506127f1565b60ff8411156127755761277461269c565b5b8360020a91508482111561278c5761278b61269c565b5b506127f1565b5060208310610133831016604e8410600b84101617156127c75782820a9050838111156127c2576127c161269c565b5b6127f1565b6127d484848460016126d5565b925090508184048111156127eb576127ea61269c565b5b81810290505b9392505050565b5f612802826124bb565b915061280d836125d7565b925061283a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612727565b905092915050565b5f61284c826124bb565b9150612857836124bb565b9250828202612865816124bb565b9150828204841483151761287c5761287b61269c565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6128b76020836123d7565b91506128c282612883565b602082019050919050565b5f6020820190508181035f8301526128e4816128ab565b9050919050565b7f74726164696e67206973206f70656e20616c72656164790000000000000000005f82015250565b5f61291f6017836123d7565b915061292a826128eb565b602082019050919050565b5f6020820190508181035f83015261294c81612913565b9050919050565b5f8151905061296181612491565b92915050565b5f6020828403121561297c5761297b61245d565b5b5f61298984828501612953565b91505092915050565b5f6040820190506129a55f83018561260b565b6129b2602083018461260b565b9392505050565b5f819050919050565b5f819050919050565b5f6129e56129e06129db846129b9565b6129c2565b6124bb565b9050919050565b6129f5816129cb565b82525050565b5f60c082019050612a0e5f83018961260b565b612a1b602083018861255f565b612a2860408301876129ec565b612a3560608301866129ec565b612a42608083018561260b565b612a4f60a083018461255f565b979650505050505050565b5f81519050612a68816124c4565b92915050565b5f805f60608486031215612a8557612a8461245d565b5b5f612a9286828701612a5a565b9350506020612aa386828701612a5a565b9250506040612ab486828701612a5a565b9150509250925092565b5f604082019050612ad15f83018561260b565b612ade602083018461255f565b9392505050565b612aee8161252c565b8114612af8575f80fd5b50565b5f81519050612b0981612ae5565b92915050565b5f60208284031215612b2457612b2361245d565b5b5f612b3184828501612afb565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612b946024836123d7565b9150612b9f82612b3a565b604082019050919050565b5f6020820190508181035f830152612bc181612b88565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c226022836123d7565b9150612c2d82612bc8565b604082019050919050565b5f6020820190508181035f830152612c4f81612c16565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612cb06025836123d7565b9150612cbb82612c56565b604082019050919050565b5f6020820190508181035f830152612cdd81612ca4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612d3e6023836123d7565b9150612d4982612ce4565b604082019050919050565b5f6020820190508181035f830152612d6b81612d32565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612dcc6029836123d7565b9150612dd782612d72565b604082019050919050565b5f6020820190508181035f830152612df981612dc0565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612e346019836123d7565b9150612e3f82612e00565b602082019050919050565b5f6020820190508181035f830152612e6181612e28565b9050919050565b5f612e72826124bb565b9150612e7d836124bb565b9250828201905080821115612e9557612e9461269c565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612ecf601a836123d7565b9150612eda82612e9b565b602082019050919050565b5f6020820190508181035f830152612efc81612ec3565b9050919050565b5f612f0d826124bb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f3f57612f3e61269c565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f612f7e600f836123d7565b9150612f8982612f4a565b602082019050919050565b5f6020820190508181035f830152612fab81612f72565b9050919050565b5f612fbc826124bb565b9150612fc7836124bb565b9250828203905081811115612fdf57612fde61269c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61301c826124bb565b9150613027836124bb565b92508261303757613036612fe5565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61309c6021836123d7565b91506130a782613042565b604082019050919050565b5f6020820190508181035f8301526130c981613090565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61315c81612480565b82525050565b5f61316d8383613153565b60208301905092915050565b5f602082019050919050565b5f61318f8261312a565b6131998185613134565b93506131a483613144565b805f5b838110156131d45781516131bb8882613162565b97506131c683613179565b9250506001810190506131a7565b5085935050505092915050565b5f60a0820190506131f45f83018861255f565b61320160208301876129ec565b81810360408301526132138186613185565b9050613222606083018561260b565b61322f608083018461255f565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61326d601b836123d7565b915061327882613239565b602082019050919050565b5f6020820190508181035f83015261329a81613261565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203f6cb8066dfed3a08d4bead9d0f475e9c02f830d49ab492a11e45a508f4c709964736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610138575f3560e01c80637d1db4a5116100aa578063a9059cbb1161006e578063a9059cbb146103f1578063bf474bed1461042d578063dd62ed3e14610457578063f468b44514610493578063f5b3c3bf146104a9578063fb201b1d146104e55761013f565b80637d1db4a51461031f578063883b5be2146103495780638da5cb5b146103735780638f9a55c01461039d57806395d89b41146103c75761013f565b806323b872dd116100fc57806323b872dd14610227578063313ce5671461026357806349bd5a5e1461028d57806370a08231146102b7578063715018a6146102f3578063751039fc146103095761013f565b806306fdde0314610143578063095ea7b31461016d5780630e12062d146101a95780630faee56f146101d357806318160ddd146101fd5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b506101576104fb565b604051610164919061243d565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e91906124ee565b610538565b6040516101a09190612546565b60405180910390f35b3480156101b4575f80fd5b506101bd610555565b6040516101ca919061256e565b60405180910390f35b3480156101de575f80fd5b506101e761055b565b6040516101f4919061256e565b60405180910390f35b348015610208575f80fd5b50610211610561565b60405161021e919061256e565b60405180910390f35b348015610232575f80fd5b5061024d60048036038101906102489190612587565b610584565b60405161025a9190612546565b60405180910390f35b34801561026e575f80fd5b50610277610658565b60405161028491906125f2565b60405180910390f35b348015610298575f80fd5b506102a1610660565b6040516102ae919061261a565b60405180910390f35b3480156102c2575f80fd5b506102dd60048036038101906102d89190612633565b610685565b6040516102ea919061256e565b60405180910390f35b3480156102fe575f80fd5b506103076106cb565b005b348015610314575f80fd5b5061031d610819565b005b34801561032a575f80fd5b50610333610948565b604051610340919061256e565b60405180910390f35b348015610354575f80fd5b5061035d61094e565b60405161036a9190612546565b60405180910390f35b34801561037e575f80fd5b50610387610961565b604051610394919061261a565b60405180910390f35b3480156103a8575f80fd5b506103b1610988565b6040516103be919061256e565b60405180910390f35b3480156103d2575f80fd5b506103db61098e565b6040516103e8919061243d565b60405180910390f35b3480156103fc575f80fd5b50610417600480360381019061041291906124ee565b6109cb565b6040516104249190612546565b60405180910390f35b348015610438575f80fd5b506104416109e8565b60405161044e919061256e565b60405180910390f35b348015610462575f80fd5b5061047d6004803603810190610478919061265e565b6109ee565b60405161048a919061256e565b60405180910390f35b34801561049e575f80fd5b506104a7610a70565b005b3480156104b4575f80fd5b506104cf60048036038101906104ca9190612633565b610b6b565b6040516104dc9190612546565b60405180910390f35b3480156104f0575f80fd5b506104f9610b88565b005b60606040518060400160405280600781526020017f42414c4c545a4500000000000000000000000000000000000000000000000000815250905090565b5f61054b61054461119d565b84846111a4565b6001905092915050565b60175481565b60145481565b5f6009600a61057091906127f8565b633b9aca0061057f9190612842565b905090565b5f610590848484611367565b61064d8461059c61119d565b610648856040518060600160405280602881526020016132a26028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105ff61119d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611eaa9092919063ffffffff16565b6111a4565b600190509392505050565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106d361119d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461075f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610756906128cd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61082161119d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a4906128cd565b60405180910390fd5b6009600a6108bb91906127f8565b633b9aca006108ca9190612842565b6011819055506009600a6108de91906127f8565b633b9aca006108ed9190612842565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a61092291906127f8565b633b9aca006109319190612842565b60405161093e919061256e565b60405180910390a1565b60115481565b601860029054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600781526020017f42414c4c545a4500000000000000000000000000000000000000000000000000815250905090565b5f6109de6109d761119d565b8484611367565b6001905092915050565b60135481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610a7861119d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afb906128cd565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610b68573d5f803e3d5ffd5b50565b6004602052805f5260405f205f915054906101000a900460ff1681565b610b9061119d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c13906128cd565b60405180910390fd5b601660149054906101000a900460ff1615610c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6390612935565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d083060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610cf491906127f8565b633b9aca00610d039190612842565b6111a4565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d969190612967565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e409190612967565b6040518363ffffffff1660e01b8152600401610e5d929190612992565b6020604051808303815f875af1158015610e79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9d9190612967565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061101030610685565b5f8061101a610961565b426040518863ffffffff1660e01b815260040161103c969594939291906129fb565b60606040518083038185885af1158015611058573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061107d9190612a6e565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161111d929190612abe565b6020604051808303815f875af1158015611139573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115d9190612b0f565b506001601860016101000a81548160ff0219169083151502179055506001601660146101000a81548160ff02191690831515021790555043600681905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120990612baa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127790612c38565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161135a919061256e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc90612cc6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a90612d54565b60405180910390fd5b5f8111611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90612de2565b60405180910390fd5b5f61148e610961565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114fc57506114cc610961565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bfa5761153d606461152f600b54600e541161151c57600754611520565b6009545b85611f0c90919063ffffffff16565b611f8390919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156115e2575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611635575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117185760115482111561167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690612e4a565b60405180910390fd5b6012548261168c85610685565b6116969190612e68565b11156116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90612ee5565b60405180910390fd5b4360036006546116e79190612e68565b1115611700576116f683611fcc565b156116ff575f80fd5b5b600e5f81548092919061171290612f03565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117b6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561181457601254826117c885610685565b6117d29190612e68565b1115611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180a90612ee5565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561189657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118da576118d760646118c9600c54600e54116118b6576008546118ba565b600a545b85611f0c90919063ffffffff16565b611f8390919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611978575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156119b057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119b9575f90505b5f6119c330610685565b9050601860029054906101000a900460ff1680156119ed575060185f9054906101000a900460ff16155b8015611a3f575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611a575750601860019054906101000a900460ff165b8015611a64575060135481115b8015611a735750600d54600e54115b15611b2757601054431115611a8a575f600f819055505b601754600f5410611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac790612f94565b60405180910390fd5b611aed611ae884611ae384601454611fdd565b611fdd565b611ff5565b5f4790505f811115611b0357611b024761225e565b5b600f5f815480929190611b1590612f03565b91905055504360108190555050611bf8565b60185f9054906101000a900460ff16158015611b89575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611ba15750601860019054906101000a900460ff165b8015611bae575060135481115b8015611bbd5750600d54600e54115b15611bf757611bdf611bda84611bd584601454611fdd565b611fdd565b611ff5565b5f4790505f811115611bf557611bf44761225e565b5b505b5b505b5f811115611cf957611c528160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122c690919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cf0919061256e565b60405180910390a35b611d498260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461232390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611dec611da0828461232390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122c690919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e8f848661232390919063ffffffff16565b604051611e9c919061256e565b60405180910390a350505050565b5f838311158290611ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee8919061243d565b60405180910390fd5b505f8385611eff9190612fb2565b9050809150509392505050565b5f808303611f1c575f9050611f7d565b5f8284611f299190612842565b9050828482611f389190613012565b14611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f906130b2565b60405180910390fd5b809150505b92915050565b5f611fc483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061236c565b905092915050565b5f80823b90505f8111915050919050565b5f818311611feb5782611fed565b815b905092915050565b600160185f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561202b5761202a6130d0565b5b6040519080825280602002602001820160405280156120595781602001602082028036833780820191505090505b50905030815f815181106120705761206f6130fd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612114573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121389190612967565b8160018151811061214c5761214b6130fd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121b23060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111a4565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016122149594939291906131e1565b5f604051808303815f87803b15801561222b575f80fd5b505af115801561223d573d5f803e3d5ffd5b50505050505f60185f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156122c2573d5f803e3d5ffd5b5050565b5f8082846122d49190612e68565b905083811015612319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231090613283565b60405180910390fd5b8091505092915050565b5f61236483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611eaa565b905092915050565b5f80831182906123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a9919061243d565b60405180910390fd5b505f83856123c09190613012565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61240f826123cd565b61241981856123d7565b93506124298185602086016123e7565b612432816123f5565b840191505092915050565b5f6020820190508181035f8301526124558184612405565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61248a82612461565b9050919050565b61249a81612480565b81146124a4575f80fd5b50565b5f813590506124b581612491565b92915050565b5f819050919050565b6124cd816124bb565b81146124d7575f80fd5b50565b5f813590506124e8816124c4565b92915050565b5f80604083850312156125045761250361245d565b5b5f612511858286016124a7565b9250506020612522858286016124da565b9150509250929050565b5f8115159050919050565b6125408161252c565b82525050565b5f6020820190506125595f830184612537565b92915050565b612568816124bb565b82525050565b5f6020820190506125815f83018461255f565b92915050565b5f805f6060848603121561259e5761259d61245d565b5b5f6125ab868287016124a7565b93505060206125bc868287016124a7565b92505060406125cd868287016124da565b9150509250925092565b5f60ff82169050919050565b6125ec816125d7565b82525050565b5f6020820190506126055f8301846125e3565b92915050565b61261481612480565b82525050565b5f60208201905061262d5f83018461260b565b92915050565b5f602082840312156126485761264761245d565b5b5f612655848285016124a7565b91505092915050565b5f80604083850312156126745761267361245d565b5b5f612681858286016124a7565b9250506020612692858286016124a7565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561271e578086048111156126fa576126f961269c565b5b60018516156127095780820291505b8081029050612717856126c9565b94506126de565b94509492505050565b5f8261273657600190506127f1565b81612743575f90506127f1565b8160018114612759576002811461276357612792565b60019150506127f1565b60ff8411156127755761277461269c565b5b8360020a91508482111561278c5761278b61269c565b5b506127f1565b5060208310610133831016604e8410600b84101617156127c75782820a9050838111156127c2576127c161269c565b5b6127f1565b6127d484848460016126d5565b925090508184048111156127eb576127ea61269c565b5b81810290505b9392505050565b5f612802826124bb565b915061280d836125d7565b925061283a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612727565b905092915050565b5f61284c826124bb565b9150612857836124bb565b9250828202612865816124bb565b9150828204841483151761287c5761287b61269c565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6128b76020836123d7565b91506128c282612883565b602082019050919050565b5f6020820190508181035f8301526128e4816128ab565b9050919050565b7f74726164696e67206973206f70656e20616c72656164790000000000000000005f82015250565b5f61291f6017836123d7565b915061292a826128eb565b602082019050919050565b5f6020820190508181035f83015261294c81612913565b9050919050565b5f8151905061296181612491565b92915050565b5f6020828403121561297c5761297b61245d565b5b5f61298984828501612953565b91505092915050565b5f6040820190506129a55f83018561260b565b6129b2602083018461260b565b9392505050565b5f819050919050565b5f819050919050565b5f6129e56129e06129db846129b9565b6129c2565b6124bb565b9050919050565b6129f5816129cb565b82525050565b5f60c082019050612a0e5f83018961260b565b612a1b602083018861255f565b612a2860408301876129ec565b612a3560608301866129ec565b612a42608083018561260b565b612a4f60a083018461255f565b979650505050505050565b5f81519050612a68816124c4565b92915050565b5f805f60608486031215612a8557612a8461245d565b5b5f612a9286828701612a5a565b9350506020612aa386828701612a5a565b9250506040612ab486828701612a5a565b9150509250925092565b5f604082019050612ad15f83018561260b565b612ade602083018461255f565b9392505050565b612aee8161252c565b8114612af8575f80fd5b50565b5f81519050612b0981612ae5565b92915050565b5f60208284031215612b2457612b2361245d565b5b5f612b3184828501612afb565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612b946024836123d7565b9150612b9f82612b3a565b604082019050919050565b5f6020820190508181035f830152612bc181612b88565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c226022836123d7565b9150612c2d82612bc8565b604082019050919050565b5f6020820190508181035f830152612c4f81612c16565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612cb06025836123d7565b9150612cbb82612c56565b604082019050919050565b5f6020820190508181035f830152612cdd81612ca4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612d3e6023836123d7565b9150612d4982612ce4565b604082019050919050565b5f6020820190508181035f830152612d6b81612d32565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612dcc6029836123d7565b9150612dd782612d72565b604082019050919050565b5f6020820190508181035f830152612df981612dc0565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612e346019836123d7565b9150612e3f82612e00565b602082019050919050565b5f6020820190508181035f830152612e6181612e28565b9050919050565b5f612e72826124bb565b9150612e7d836124bb565b9250828201905080821115612e9557612e9461269c565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612ecf601a836123d7565b9150612eda82612e9b565b602082019050919050565b5f6020820190508181035f830152612efc81612ec3565b9050919050565b5f612f0d826124bb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f3f57612f3e61269c565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f612f7e600f836123d7565b9150612f8982612f4a565b602082019050919050565b5f6020820190508181035f830152612fab81612f72565b9050919050565b5f612fbc826124bb565b9150612fc7836124bb565b9250828203905081811115612fdf57612fde61269c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61301c826124bb565b9150613027836124bb565b92508261303757613036612fe5565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61309c6021836123d7565b91506130a782613042565b604082019050919050565b5f6020820190508181035f8301526130c981613090565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61315c81612480565b82525050565b5f61316d8383613153565b60208301905092915050565b5f602082019050919050565b5f61318f8261312a565b6131998185613134565b93506131a483613144565b805f5b838110156131d45781516131bb8882613162565b97506131c683613179565b9250506001810190506131a7565b5085935050505092915050565b5f60a0820190506131f45f83018861255f565b61320160208301876129ec565b81810360408301526132138186613185565b9050613222606083018561260b565b61322f608083018461255f565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61326d601b836123d7565b915061327882613239565b602082019050919050565b5f6020820190508181035f83015261329a81613261565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203f6cb8066dfed3a08d4bead9d0f475e9c02f830d49ab492a11e45a508f4c709964736f6c634300081a0033

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.