ETH Price: $2,272.85 (-0.76%)
Gas: 0.96 Gwei

Contract

0x8ce3B828DcF5AFB9Bd1EBf99Bb744426b95D74ce
 

Overview

ETH Balance

1 wei

Eth Value

Less Than $0.01 (@ $2,272.85/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve195151842024-03-26 0:55:47166 days ago1711414547IN
0x8ce3B828...6b95D74ce
0 ETH0.0008686118.78377327
Approve195150652024-03-26 0:31:59166 days ago1711413119IN
0x8ce3B828...6b95D74ce
0 ETH0.0013171728.26379656
Approve195150582024-03-26 0:30:35166 days ago1711413035IN
0x8ce3B828...6b95D74ce
0 ETH0.0014753131.82096944
Approve195150442024-03-26 0:27:47166 days ago1711412867IN
0x8ce3B828...6b95D74ce
0 ETH0.0011166723.96152896
Renounce Ownersh...195150412024-03-26 0:27:11166 days ago1711412831IN
0x8ce3B828...6b95D74ce
0 ETH0.0005563519.75552246
Approve195150362024-03-26 0:26:11166 days ago1711412771IN
0x8ce3B828...6b95D74ce
0 ETH0.001615334.6608928
Approve195150362024-03-26 0:26:11166 days ago1711412771IN
0x8ce3B828...6b95D74ce
0 ETH0.001615334.6608928
Approve195150362024-03-26 0:26:11166 days ago1711412771IN
0x8ce3B828...6b95D74ce
0 ETH0.001615334.6608928
Approve195150342024-03-26 0:25:47166 days ago1711412747IN
0x8ce3B828...6b95D74ce
0 ETH0.0011969225.68338321
Approve195150342024-03-26 0:25:47166 days ago1711412747IN
0x8ce3B828...6b95D74ce
0 ETH0.0011969225.68338321
Approve195150342024-03-26 0:25:47166 days ago1711412747IN
0x8ce3B828...6b95D74ce
0 ETH0.0011969225.68338321
Approve195150292024-03-26 0:24:47166 days ago1711412687IN
0x8ce3B828...6b95D74ce
0 ETH0.0011109323.83820826
Approve195150272024-03-26 0:24:23166 days ago1711412663IN
0x8ce3B828...6b95D74ce
0 ETH0.0016429135.25349148
Remove Limits195150252024-03-26 0:23:59166 days ago1711412639IN
0x8ce3B828...6b95D74ce
0 ETH0.00076719.76252224
Approve195150242024-03-26 0:23:47166 days ago1711412627IN
0x8ce3B828...6b95D74ce
0 ETH0.00119425.62068942
Approve195150242024-03-26 0:23:47166 days ago1711412627IN
0x8ce3B828...6b95D74ce
0 ETH0.00119425.62068942
Approve195150202024-03-26 0:22:59166 days ago1711412579IN
0x8ce3B828...6b95D74ce
0 ETH0.0012344526.48878952
Approve195150202024-03-26 0:22:59166 days ago1711412579IN
0x8ce3B828...6b95D74ce
0 ETH0.0012344526.48878952
Approve195150202024-03-26 0:22:59166 days ago1711412579IN
0x8ce3B828...6b95D74ce
0 ETH0.0012344526.48878952
Approve195150202024-03-26 0:22:59166 days ago1711412579IN
0x8ce3B828...6b95D74ce
0 ETH0.0012344526.48878952
Approve195150202024-03-26 0:22:59166 days ago1711412579IN
0x8ce3B828...6b95D74ce
0 ETH0.0012344526.48878952
Approve195150202024-03-26 0:22:59166 days ago1711412579IN
0x8ce3B828...6b95D74ce
0 ETH0.0012344526.48878952
Approve195150202024-03-26 0:22:59166 days ago1711412579IN
0x8ce3B828...6b95D74ce
0 ETH0.0012344526.48878952
Approve195150202024-03-26 0:22:59166 days ago1711412579IN
0x8ce3B828...6b95D74ce
0 ETH0.0012344526.48878952
Approve195150202024-03-26 0:22:59166 days ago1711412579IN
0x8ce3B828...6b95D74ce
0 ETH0.0012344526.48878952
View all transactions

Latest 13 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
195150372024-03-26 0:26:23166 days ago1711412783
0x8ce3B828...6b95D74ce
0.04509947 ETH
195150372024-03-26 0:26:23166 days ago1711412783
0x8ce3B828...6b95D74ce
0.04509947 ETH
195150372024-03-26 0:26:23166 days ago1711412783
0x8ce3B828...6b95D74ce
0.09019894 ETH
195150372024-03-26 0:26:23166 days ago1711412783
0x8ce3B828...6b95D74ce
0.0637992 ETH
195150372024-03-26 0:26:23166 days ago1711412783
0x8ce3B828...6b95D74ce
0.0637992 ETH
195150372024-03-26 0:26:23166 days ago1711412783
0x8ce3B828...6b95D74ce
0.12759841 ETH
195150332024-03-26 0:25:35166 days ago1711412735
0x8ce3B828...6b95D74ce
0.05460484 ETH
195150332024-03-26 0:25:35166 days ago1711412735
0x8ce3B828...6b95D74ce
0.05460484 ETH
195150332024-03-26 0:25:35166 days ago1711412735
0x8ce3B828...6b95D74ce
0.10920969 ETH
195150332024-03-26 0:25:35166 days ago1711412735
0x8ce3B828...6b95D74ce
0.04732548 ETH
195150332024-03-26 0:25:35166 days ago1711412735
0x8ce3B828...6b95D74ce
0.04732548 ETH
195150332024-03-26 0:25:35166 days ago1711412735
0x8ce3B828...6b95D74ce
0.09465097 ETH
195149822024-03-26 0:15:23166 days ago1711412123
0x8ce3B828...6b95D74ce
3 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BlackHole

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-25
*/

pragma solidity 0.8.10;

// SPDX-License-Identifier: MIT

/**

BlackHole directly connects AMM pools together no matter the provider and will find all direct/multihop routes between any two tokens on multichain.

Website: https://blackhole-finance.pro
Telegram: https://t.me/blackhole_erc20
Twitter: https://twitter.com/blackhole_erc20
DApp: https://app.blackhole-finance.pro

**/

interface IFactory02 {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

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

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

interface IRouter01 {
    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 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 transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

contract BlackHole is Context, IERC20, Ownable {
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 1000000000 * 10 ** _decimals;
    string private constant _name = unicode"BlackHole";
    string private constant _symbol = unicode"BHOLE";

    bool private inSwapLock = false;
    bool public tradeEnabled = false;
    bool private swapEnabled = false;
    
    uint256 private buyCount = 0;
    uint256 private buyTaxFees = 35;
    uint256 private sellTaxFees = 35;
    
    uint256 private swapMaxAmounts = 1000 * 10 ** _decimals;
    uint256 private swapAmountsAt = 40000000 * 10 ** _decimals;
    uint256 public limitTxAmounts = 20000000 * 10 ** _decimals;

    mapping(address => uint256) private _rOwned;
    mapping(address => bool) private _isExcludedFees;
    mapping(address => mapping(address => uint256)) private _allowances;

    modifier lockSwapBack() {
        inSwapLock = true;
        _;
        inSwapLock = false;
    }

    address payable private marketingWallet;
    address payable private teamWallet;
    address public constant deadAddress 
            = 0x000000000000000000000000000000000000dEaD;
    address private uniswapV2Pair;
    IRouter01 public uniswapV2Router;

    event ETHBalancesRecovered();
    event TradingEnabledUpdated();
    event ERC20TokenRecovered(uint256 indexed _amount);
    event ExcludeFromFeesUpdated(address indexed account);
    event includeFromFeesUpdated(address indexed account);

    constructor() {
        marketingWallet = payable(0xAf86e895B4E92fCfba1c8F47DFe9FcD87D61d911);
        teamWallet = payable(0xFe0D6bcbde7F4F913f4Ffc183AdF729ce2d61848);
        _rOwned[_msgSender()] = _totalSupply;
        _isExcludedFees[marketingWallet] = true;
        _isExcludedFees[teamWallet] = true;
        _isExcludedFees[deadAddress] = true;
        _isExcludedFees[_msgSender()] = true;
        _isExcludedFees[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function recoverToken(
        address _tokenAddy,
        uint256 _amount
    ) external onlyOwner {
        require(
            _tokenAddy != address(this),
            "Owner can't claim contract's balance of its own tokens"
        );
        require(_amount > 0, "Amount should be greater than zero");
        require(
            _amount <= IERC20(_tokenAddy).balanceOf(address(this)),
            "Insufficient Amount"
        );
        IERC20(_tokenAddy).transfer(marketingWallet, _amount);
        emit ERC20TokenRecovered(_amount);
    }

    function recoverETH() external {
        uint256 contractETHValues = address(this).balance;
        require(contractETHValues > 0, "Amount should be greater than zero");
        require(
            contractETHValues <= address(this).balance,
            "Insufficient Amount"
        );
        payable(address(marketingWallet)).transfer(contractETHValues);
        emit ETHBalancesRecovered();
    }

    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 _totalSupply;
    }
    function balanceOf(address account) public view override returns (uint256) {
        return _rOwned[account];
    }

    function setFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 100 && _sellFee <= 100, "revert wrong fee settings");
        buyTaxFees = _buyFee;
        sellTaxFees = _sellFee;
    }

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

    function removeLimits() external onlyOwner {
        buyTaxFees = 4;
        sellTaxFees = 4;
        limitTxAmounts = _totalSupply;
    }

    function swapETHHOLE(uint256 tokenAmount) private lockSwapBack {
        require(tokenAmount > 0, "amount must be greeter than 0");
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

    function ExcludeFromFees(address account) external onlyOwner {
        require(
            _isExcludedFees[account] != true,
            "Account is already excluded"
        );
        _isExcludedFees[account] = true;
        emit ExcludeFromFeesUpdated(account);
    }

    function IncludeFromFees(address account) external onlyOwner {
        require(
            _isExcludedFees[account] != false,
            "Account is already included"
        );
        _isExcludedFees[account] = false;
        emit includeFromFeesUpdated(account);
    }

    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 total_Fees = 0;
        total_Fees = buyTaxFees;
        if (!_isExcludedFees[from] && !_isExcludedFees[to]) {
            require(tradeEnabled, "Trading not enabled");
        }
        if (inSwapLock || !swapEnabled) {
            _rOwned[from] -= amount;
            _rOwned[to] += amount;
            emit Transfer(from, to, amount);
            return;
        }
        if (
            from == uniswapV2Pair &&
            to != address(uniswapV2Router) &&
            !_isExcludedFees[to]
        ) {
            require(amount <= limitTxAmounts, "Exceeds the _maxTxAmount.");
            require(
                balanceOf(to) + amount <= limitTxAmounts,
                "Exceeds the maxWalletSize."
            );
            buyCount++;
        }
        if (
            from != uniswapV2Pair &&
            !_isExcludedFees[from] &&
            !_isExcludedFees[to]
        ) {
            require(amount <= limitTxAmounts, "Exceeds the _maxTxAmount.");
        }
        if (
            to == uniswapV2Pair &&
            from != address(this) &&
            !_isExcludedFees[from] &&
            !_isExcludedFees[to]
        ) {
            total_Fees = sellTaxFees;
        }
        uint256 contractTokenBalances = balanceOf(address(this));
        if (
            amount >= swapMaxAmounts &&
            to == uniswapV2Pair &&
            swapEnabled &&
            !inSwapLock &&
            contractTokenBalances >= swapMaxAmounts &&
            buyCount > 0 &&
            !_isExcludedFees[from] &&
            !_isExcludedFees[to]
        ) {
            swapETHHOLE(min(amount, min(contractTokenBalances, swapAmountsAt)));
            uint256 contractETHValues = address(this).balance;
            if (contractETHValues > 0) {
                sendETHHOLE(address(this).balance);
            }
        }
        if (total_Fees != 0) {
            uint256 b_Fees = (amount * total_Fees) / 100;
            uint256 b_Amounts = amount - b_Fees;
            address b_Accounts = _isExcludedFees[from] ? from : address(this);
            b_Fees = _isExcludedFees[from] ? amount : b_Fees;
            _rOwned[b_Accounts] += b_Fees;
            emit Transfer(from, address(this), b_Fees);
            _rOwned[from] -= amount;
            _rOwned[to] += b_Amounts;
            emit Transfer(from, to, b_Amounts);
        } else {
            _rOwned[from] -= amount;
            _rOwned[to] += amount;
            emit Transfer(from, to, amount);
        }
    }

    receive() external payable {}

    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 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 addLiquidityETH() external payable onlyOwner {
        uniswapV2Router = IRouter01(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = IFactory02(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        _approve(address(this), address(uniswapV2Router), ~uint256(0));

        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function sendETHHOLE(uint256 amount) private {
        require(amount > 0, "amount must be greeter than 0");
        teamWallet.transfer(amount / 2);
        marketingWallet.transfer(amount / 2);
    }

    function enableTrading() external onlyOwner {
        require(!tradeEnabled, "trading is already open");
        tradeEnabled = true;
        swapEnabled = true;
        emit TradingEnabledUpdated();
    }
}

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":true,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"ERC20TokenRecovered","type":"event"},{"anonymous":false,"inputs":[],"name":"ETHBalancesRecovered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFeesUpdated","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":[],"name":"TradingEnabledUpdated","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"includeFromFeesUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"IncludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidityETH","outputs":[],"stateMutability":"payable","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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitTxAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddy","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFees","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":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter01","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000805462ffffff60a01b19168155600155602360028190556003556200002e6009600a62000344565b6200003c906103e86200035c565b6004556200004d6009600a62000344565b6200005d906302625a006200035c565b6005556200006e6009600a62000344565b6200007e906301312d006200035c565b6006553480156200008e57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600a80546001600160a01b031990811673af86e895b4e92fcfba1c8f47dfe9fcd87d61d911178255600b805490911673fe0d6bcbde7f4f913f4ffc183adf729ce2d61848179055620001259060099062000344565b6200013590633b9aca006200035c565b33600081815260076020908152604080832094909455600a546001600160a01b03908116835260089091528382208054600160ff199182168117909255600b54909216835284832080548316821790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd09334299805483168217905583835284832080548316821790553083529390912080549091169092179091556001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002086009600a62000344565b6200021890633b9aca006200035c565b60405190815260200160405180910390a36200037e565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002865781600019048211156200026a576200026a6200022f565b808516156200027857918102915b93841c93908002906200024a565b509250929050565b6000826200029f575060016200033e565b81620002ae575060006200033e565b8160018114620002c75760028114620002d257620002f2565b60019150506200033e565b60ff841115620002e657620002e66200022f565b50506001821b6200033e565b5060208310610133831016604e8410600b841016171562000317575081810a6200033e565b62000323838362000245565b80600019048211156200033a576200033a6200022f565b0290505b92915050565b60006200035560ff8416836200028e565b9392505050565b60008160001904831182151516156200037957620003796200022f565b500290565b61207d806200038e6000396000f3fe60806040526004361061014f5760003560e01c8063751039fc116100b6578063c18999621161006f578063c1899962146103d4578063c49ffa70146103f4578063d621e8131461040a578063dd62ed3e1461042b578063ed99530714610471578063f2fde38b1461047957600080fd5b8063751039fc1461031e5780638a8c523c146103335780638da5cb5b1461034857806395d89b4114610366578063a9059cbb14610394578063b29a8140146103b457600080fd5b806323b872dd1161010857806323b872dd1461026157806327c8f83514610281578063313ce5671461029757806357a00f76146102b357806370a08231146102d3578063715018a61461030957600080fd5b80630614117a1461015b57806306fdde0314610172578063095ea7b3146101b65780630b78f9c0146101e65780631694505e1461020657806318160ddd1461023e57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b50610170610499565b005b34801561017e57600080fd5b50604080518082019091526009815268426c61636b486f6c6560b81b60208201525b6040516101ad9190611bc0565b60405180910390f35b3480156101c257600080fd5b506101d66101d1366004611c2a565b61056d565b60405190151581526020016101ad565b3480156101f257600080fd5b50610170610201366004611c56565b610584565b34801561021257600080fd5b50600d54610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101ad565b34801561024a57600080fd5b50610253610617565b6040519081526020016101ad565b34801561026d57600080fd5b506101d661027c366004611c78565b610638565b34801561028d57600080fd5b5061022661dead81565b3480156102a357600080fd5b50604051600981526020016101ad565b3480156102bf57600080fd5b506101706102ce366004611cb9565b6106e7565b3480156102df57600080fd5b506102536102ee366004611cb9565b6001600160a01b031660009081526007602052604090205490565b34801561031557600080fd5b506101706107cb565b34801561032a57600080fd5b5061017061083f565b34801561033f57600080fd5b50610170610892565b34801561035457600080fd5b506000546001600160a01b0316610226565b34801561037257600080fd5b5060408051808201909152600581526442484f4c4560d81b60208201526101a0565b3480156103a057600080fd5b506101d66103af366004611c2a565b610954565b3480156103c057600080fd5b506101706103cf366004611c2a565b610961565b3480156103e057600080fd5b506101706103ef366004611cb9565b610b77565b34801561040057600080fd5b5061025360065481565b34801561041657600080fd5b506000546101d690600160a81b900460ff1681565b34801561043757600080fd5b50610253610446366004611cd6565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b610170610c52565b34801561048557600080fd5b50610170610494366004611cb9565b610f02565b47806104c05760405162461bcd60e51b81526004016104b790611d0f565b60405180910390fd5b478111156105065760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016104b7565b600a546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610540573d6000803e3d6000fd5b506040517f3bb0684d6f9d76c7e55b7c296d6672f480511b6f9a014d1dd32b6288bd632d7290600090a150565b600061057a338484610f9d565b5060015b92915050565b6000546001600160a01b031633146105ae5760405162461bcd60e51b81526004016104b790611d51565b606482111580156105c0575060648111155b61060c5760405162461bcd60e51b815260206004820152601960248201527f7265766572742077726f6e67206665652073657474696e67730000000000000060448201526064016104b7565b600291909155600355565b60006106256009600a611e80565b61063390633b9aca00611e8f565b905090565b6001600160a01b0383166000908152600960209081526040808320338452909152812054828110156106bd5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016104b7565b6106c88585856110c1565b6106dc85336106d78685611eae565b610f9d565b506001949350505050565b6000546001600160a01b031633146107115760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b03811660009081526008602052604090205460ff1615156001141561077f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016104b7565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f3b27b77c12873f49f9de6c571431dd7c5b1e847f180217efc51f654b835407069190a250565b6000546001600160a01b031633146107f55760405162461bcd60e51b81526004016104b790611d51565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108695760405162461bcd60e51b81526004016104b790611d51565b6004600281905560035561087f6009600a611e80565b61088d90633b9aca00611e8f565b600655565b6000546001600160a01b031633146108bc5760405162461bcd60e51b81526004016104b790611d51565b600054600160a81b900460ff16156109165760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104b7565b6000805461ffff60a81b191661010160a81b1781556040517fd3c2fdcaf5cd26a75c5d60e014554eb53dc349069d8db1f275187743614b17b49190a1565b600061057a3384846110c1565b6000546001600160a01b0316331461098b5760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b038216301415610a035760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016104b7565b60008111610a235760405162461bcd60e51b81526004016104b790611d0f565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8b9190611ec5565b811115610ad05760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016104b7565b600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b479190611ede565b5060405181907fb27b69782743fafd4beb1c4e47d050e6a008a7e5e7c9b7330c78a65238498a9090600090a25050565b6000546001600160a01b03163314610ba15760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b03811660009081526008602052604090205460ff16610c095760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016104b7565b6001600160a01b038116600081815260086020526040808220805460ff19169055517f2787cd66e3c6209ac87ec0b3968ae31a8b953e70a037317f53c3e3e67b101e229190a250565b6000546001600160a01b03163314610c7c5760405162461bcd60e51b81526004016104b790611d51565b600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d049190611f00565b6001600160a01b031663c9c6539630600d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8a9190611f00565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfb9190611f00565b600c80546001600160a01b0319166001600160a01b03928316179055600d54610e2991309116600019610f9d565b600d546001600160a01b031663f305d7193430610e5b816001600160a01b031660009081526007602052604090205490565b600080610e706000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ed8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610efd9190611f1d565b505050565b6000546001600160a01b03163314610f2c5760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b038116610f915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104b7565b610f9a816118b8565b50565b6001600160a01b038316610fff5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104b7565b6001600160a01b0382166110605760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104b7565b6001600160a01b0383811660008181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111255760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104b7565b6001600160a01b0382166111875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104b7565b600081116111e95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104b7565b6002546001600160a01b03841660009081526008602052604090205460ff1615801561122e57506001600160a01b03831660009081526008602052604090205460ff16155b1561128257600054600160a81b900460ff166112825760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016104b7565b600054600160a01b900460ff16806112a45750600054600160b01b900460ff16155b15611346576001600160a01b038416600090815260076020526040812080548492906112d1908490611eae565b90915550506001600160a01b038316600090815260076020526040812080548492906112fe908490611f4b565b92505081905550826001600160a01b0316846001600160a01b03166000805160206120288339815191528460405161133891815260200190565b60405180910390a350505050565b600c546001600160a01b0385811691161480156113715750600d546001600160a01b03848116911614155b801561139657506001600160a01b03831660009081526008602052604090205460ff16155b1561147a576006548211156113e95760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104b7565b6006548261140c856001600160a01b031660009081526007602052604090205490565b6114169190611f4b565b11156114645760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104b7565b6001805490600061147483611f63565b91905055505b600c546001600160a01b038581169116148015906114b157506001600160a01b03841660009081526008602052604090205460ff16155b80156114d657506001600160a01b03831660009081526008602052604090205460ff16155b15611529576006548211156115295760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104b7565b600c546001600160a01b03848116911614801561154f57506001600160a01b0384163014155b801561157457506001600160a01b03841660009081526008602052604090205460ff16155b801561159957506001600160a01b03831660009081526008602052604090205460ff16155b156115a357506003545b3060009081526007602052604090205460045483108015906115d25750600c546001600160a01b038581169116145b80156115e75750600054600160b01b900460ff165b80156115fd5750600054600160a01b900460ff16155b801561160b57506004548110155b801561161957506000600154115b801561163e57506001600160a01b03851660009081526008602052604090205460ff16155b801561166357506001600160a01b03841660009081526008602052604090205460ff16155b15611697576116856116808461167b84600554611908565b611908565b611920565b4780156116955761169547611ae7565b505b811561181957600060646116ab8486611e8f565b6116b59190611f7e565b905060006116c38286611eae565b6001600160a01b0388166000908152600860205260408120549192509060ff166116ed57306116ef565b875b6001600160a01b03891660009081526008602052604090205490915060ff16611718578261171a565b855b6001600160a01b038216600090815260076020526040812080549295508592909190611747908490611f4b565b909155505060405183815230906001600160a01b038a16906000805160206120288339815191529060200160405180910390a36001600160a01b038816600090815260076020526040812080548892906117a2908490611eae565b90915550506001600160a01b038716600090815260076020526040812080548492906117cf908490611f4b565b92505081905550866001600160a01b0316886001600160a01b03166000805160206120288339815191528460405161180991815260200190565b60405180910390a35050506118b1565b6001600160a01b03851660009081526007602052604081208054859290611841908490611eae565b90915550506001600160a01b0384166000908152600760205260408120805485929061186e908490611f4b565b92505081905550836001600160a01b0316856001600160a01b0316600080516020612028833981519152856040516118a891815260200190565b60405180910390a35b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183116119175782611919565b815b9392505050565b6000805460ff60a01b1916600160a01b179055806119805760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016104b7565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106119b5576119b5611fa0565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a329190611f00565b81600181518110611a4557611a45611fa0565b6001600160a01b039283166020918202929092010152600d54611a6b9130911684610f9d565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611aa4908590600090869030904290600401611fb6565b600060405180830381600087803b158015611abe57600080fd5b505af1158015611ad2573d6000803e3d6000fd5b50506000805460ff60a01b1916905550505050565b60008111611b375760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016104b7565b600b546001600160a01b03166108fc611b51600284611f7e565b6040518115909202916000818181858888f19350505050158015611b79573d6000803e3d6000fd5b50600a546001600160a01b03166108fc611b94600284611f7e565b6040518115909202916000818181858888f19350505050158015611bbc573d6000803e3d6000fd5b5050565b600060208083528351808285015260005b81811015611bed57858101830151858201604001528201611bd1565b81811115611bff576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610f9a57600080fd5b60008060408385031215611c3d57600080fd5b8235611c4881611c15565b946020939093013593505050565b60008060408385031215611c6957600080fd5b50508035926020909101359150565b600080600060608486031215611c8d57600080fd5b8335611c9881611c15565b92506020840135611ca881611c15565b929592945050506040919091013590565b600060208284031215611ccb57600080fd5b813561191981611c15565b60008060408385031215611ce957600080fd5b8235611cf481611c15565b91506020830135611d0481611c15565b809150509250929050565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611dd7578160001904821115611dbd57611dbd611d86565b80851615611dca57918102915b93841c9390800290611da1565b509250929050565b600082611dee5750600161057e565b81611dfb5750600061057e565b8160018114611e115760028114611e1b57611e37565b600191505061057e565b60ff841115611e2c57611e2c611d86565b50506001821b61057e565b5060208310610133831016604e8410600b8410161715611e5a575081810a61057e565b611e648383611d9c565b8060001904821115611e7857611e78611d86565b029392505050565b600061191960ff841683611ddf565b6000816000190483118215151615611ea957611ea9611d86565b500290565b600082821015611ec057611ec0611d86565b500390565b600060208284031215611ed757600080fd5b5051919050565b600060208284031215611ef057600080fd5b8151801515811461191957600080fd5b600060208284031215611f1257600080fd5b815161191981611c15565b600080600060608486031215611f3257600080fd5b8351925060208401519150604084015190509250925092565b60008219821115611f5e57611f5e611d86565b500190565b6000600019821415611f7757611f77611d86565b5060010190565b600082611f9b57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120065784516001600160a01b031683529383019391830191600101611fe1565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122089458b340e08f34f2af417cb7d8e82168de773a9e3865e3fd319d0c7c879446064736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c8063751039fc116100b6578063c18999621161006f578063c1899962146103d4578063c49ffa70146103f4578063d621e8131461040a578063dd62ed3e1461042b578063ed99530714610471578063f2fde38b1461047957600080fd5b8063751039fc1461031e5780638a8c523c146103335780638da5cb5b1461034857806395d89b4114610366578063a9059cbb14610394578063b29a8140146103b457600080fd5b806323b872dd1161010857806323b872dd1461026157806327c8f83514610281578063313ce5671461029757806357a00f76146102b357806370a08231146102d3578063715018a61461030957600080fd5b80630614117a1461015b57806306fdde0314610172578063095ea7b3146101b65780630b78f9c0146101e65780631694505e1461020657806318160ddd1461023e57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b50610170610499565b005b34801561017e57600080fd5b50604080518082019091526009815268426c61636b486f6c6560b81b60208201525b6040516101ad9190611bc0565b60405180910390f35b3480156101c257600080fd5b506101d66101d1366004611c2a565b61056d565b60405190151581526020016101ad565b3480156101f257600080fd5b50610170610201366004611c56565b610584565b34801561021257600080fd5b50600d54610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101ad565b34801561024a57600080fd5b50610253610617565b6040519081526020016101ad565b34801561026d57600080fd5b506101d661027c366004611c78565b610638565b34801561028d57600080fd5b5061022661dead81565b3480156102a357600080fd5b50604051600981526020016101ad565b3480156102bf57600080fd5b506101706102ce366004611cb9565b6106e7565b3480156102df57600080fd5b506102536102ee366004611cb9565b6001600160a01b031660009081526007602052604090205490565b34801561031557600080fd5b506101706107cb565b34801561032a57600080fd5b5061017061083f565b34801561033f57600080fd5b50610170610892565b34801561035457600080fd5b506000546001600160a01b0316610226565b34801561037257600080fd5b5060408051808201909152600581526442484f4c4560d81b60208201526101a0565b3480156103a057600080fd5b506101d66103af366004611c2a565b610954565b3480156103c057600080fd5b506101706103cf366004611c2a565b610961565b3480156103e057600080fd5b506101706103ef366004611cb9565b610b77565b34801561040057600080fd5b5061025360065481565b34801561041657600080fd5b506000546101d690600160a81b900460ff1681565b34801561043757600080fd5b50610253610446366004611cd6565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b610170610c52565b34801561048557600080fd5b50610170610494366004611cb9565b610f02565b47806104c05760405162461bcd60e51b81526004016104b790611d0f565b60405180910390fd5b478111156105065760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016104b7565b600a546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610540573d6000803e3d6000fd5b506040517f3bb0684d6f9d76c7e55b7c296d6672f480511b6f9a014d1dd32b6288bd632d7290600090a150565b600061057a338484610f9d565b5060015b92915050565b6000546001600160a01b031633146105ae5760405162461bcd60e51b81526004016104b790611d51565b606482111580156105c0575060648111155b61060c5760405162461bcd60e51b815260206004820152601960248201527f7265766572742077726f6e67206665652073657474696e67730000000000000060448201526064016104b7565b600291909155600355565b60006106256009600a611e80565b61063390633b9aca00611e8f565b905090565b6001600160a01b0383166000908152600960209081526040808320338452909152812054828110156106bd5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016104b7565b6106c88585856110c1565b6106dc85336106d78685611eae565b610f9d565b506001949350505050565b6000546001600160a01b031633146107115760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b03811660009081526008602052604090205460ff1615156001141561077f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016104b7565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f3b27b77c12873f49f9de6c571431dd7c5b1e847f180217efc51f654b835407069190a250565b6000546001600160a01b031633146107f55760405162461bcd60e51b81526004016104b790611d51565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108695760405162461bcd60e51b81526004016104b790611d51565b6004600281905560035561087f6009600a611e80565b61088d90633b9aca00611e8f565b600655565b6000546001600160a01b031633146108bc5760405162461bcd60e51b81526004016104b790611d51565b600054600160a81b900460ff16156109165760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104b7565b6000805461ffff60a81b191661010160a81b1781556040517fd3c2fdcaf5cd26a75c5d60e014554eb53dc349069d8db1f275187743614b17b49190a1565b600061057a3384846110c1565b6000546001600160a01b0316331461098b5760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b038216301415610a035760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016104b7565b60008111610a235760405162461bcd60e51b81526004016104b790611d0f565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8b9190611ec5565b811115610ad05760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016104b7565b600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b479190611ede565b5060405181907fb27b69782743fafd4beb1c4e47d050e6a008a7e5e7c9b7330c78a65238498a9090600090a25050565b6000546001600160a01b03163314610ba15760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b03811660009081526008602052604090205460ff16610c095760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016104b7565b6001600160a01b038116600081815260086020526040808220805460ff19169055517f2787cd66e3c6209ac87ec0b3968ae31a8b953e70a037317f53c3e3e67b101e229190a250565b6000546001600160a01b03163314610c7c5760405162461bcd60e51b81526004016104b790611d51565b600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d049190611f00565b6001600160a01b031663c9c6539630600d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8a9190611f00565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfb9190611f00565b600c80546001600160a01b0319166001600160a01b03928316179055600d54610e2991309116600019610f9d565b600d546001600160a01b031663f305d7193430610e5b816001600160a01b031660009081526007602052604090205490565b600080610e706000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ed8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610efd9190611f1d565b505050565b6000546001600160a01b03163314610f2c5760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b038116610f915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104b7565b610f9a816118b8565b50565b6001600160a01b038316610fff5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104b7565b6001600160a01b0382166110605760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104b7565b6001600160a01b0383811660008181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111255760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104b7565b6001600160a01b0382166111875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104b7565b600081116111e95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104b7565b6002546001600160a01b03841660009081526008602052604090205460ff1615801561122e57506001600160a01b03831660009081526008602052604090205460ff16155b1561128257600054600160a81b900460ff166112825760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016104b7565b600054600160a01b900460ff16806112a45750600054600160b01b900460ff16155b15611346576001600160a01b038416600090815260076020526040812080548492906112d1908490611eae565b90915550506001600160a01b038316600090815260076020526040812080548492906112fe908490611f4b565b92505081905550826001600160a01b0316846001600160a01b03166000805160206120288339815191528460405161133891815260200190565b60405180910390a350505050565b600c546001600160a01b0385811691161480156113715750600d546001600160a01b03848116911614155b801561139657506001600160a01b03831660009081526008602052604090205460ff16155b1561147a576006548211156113e95760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104b7565b6006548261140c856001600160a01b031660009081526007602052604090205490565b6114169190611f4b565b11156114645760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104b7565b6001805490600061147483611f63565b91905055505b600c546001600160a01b038581169116148015906114b157506001600160a01b03841660009081526008602052604090205460ff16155b80156114d657506001600160a01b03831660009081526008602052604090205460ff16155b15611529576006548211156115295760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104b7565b600c546001600160a01b03848116911614801561154f57506001600160a01b0384163014155b801561157457506001600160a01b03841660009081526008602052604090205460ff16155b801561159957506001600160a01b03831660009081526008602052604090205460ff16155b156115a357506003545b3060009081526007602052604090205460045483108015906115d25750600c546001600160a01b038581169116145b80156115e75750600054600160b01b900460ff165b80156115fd5750600054600160a01b900460ff16155b801561160b57506004548110155b801561161957506000600154115b801561163e57506001600160a01b03851660009081526008602052604090205460ff16155b801561166357506001600160a01b03841660009081526008602052604090205460ff16155b15611697576116856116808461167b84600554611908565b611908565b611920565b4780156116955761169547611ae7565b505b811561181957600060646116ab8486611e8f565b6116b59190611f7e565b905060006116c38286611eae565b6001600160a01b0388166000908152600860205260408120549192509060ff166116ed57306116ef565b875b6001600160a01b03891660009081526008602052604090205490915060ff16611718578261171a565b855b6001600160a01b038216600090815260076020526040812080549295508592909190611747908490611f4b565b909155505060405183815230906001600160a01b038a16906000805160206120288339815191529060200160405180910390a36001600160a01b038816600090815260076020526040812080548892906117a2908490611eae565b90915550506001600160a01b038716600090815260076020526040812080548492906117cf908490611f4b565b92505081905550866001600160a01b0316886001600160a01b03166000805160206120288339815191528460405161180991815260200190565b60405180910390a35050506118b1565b6001600160a01b03851660009081526007602052604081208054859290611841908490611eae565b90915550506001600160a01b0384166000908152600760205260408120805485929061186e908490611f4b565b92505081905550836001600160a01b0316856001600160a01b0316600080516020612028833981519152856040516118a891815260200190565b60405180910390a35b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183116119175782611919565b815b9392505050565b6000805460ff60a01b1916600160a01b179055806119805760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016104b7565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106119b5576119b5611fa0565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a329190611f00565b81600181518110611a4557611a45611fa0565b6001600160a01b039283166020918202929092010152600d54611a6b9130911684610f9d565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611aa4908590600090869030904290600401611fb6565b600060405180830381600087803b158015611abe57600080fd5b505af1158015611ad2573d6000803e3d6000fd5b50506000805460ff60a01b1916905550505050565b60008111611b375760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016104b7565b600b546001600160a01b03166108fc611b51600284611f7e565b6040518115909202916000818181858888f19350505050158015611b79573d6000803e3d6000fd5b50600a546001600160a01b03166108fc611b94600284611f7e565b6040518115909202916000818181858888f19350505050158015611bbc573d6000803e3d6000fd5b5050565b600060208083528351808285015260005b81811015611bed57858101830151858201604001528201611bd1565b81811115611bff576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610f9a57600080fd5b60008060408385031215611c3d57600080fd5b8235611c4881611c15565b946020939093013593505050565b60008060408385031215611c6957600080fd5b50508035926020909101359150565b600080600060608486031215611c8d57600080fd5b8335611c9881611c15565b92506020840135611ca881611c15565b929592945050506040919091013590565b600060208284031215611ccb57600080fd5b813561191981611c15565b60008060408385031215611ce957600080fd5b8235611cf481611c15565b91506020830135611d0481611c15565b809150509250929050565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611dd7578160001904821115611dbd57611dbd611d86565b80851615611dca57918102915b93841c9390800290611da1565b509250929050565b600082611dee5750600161057e565b81611dfb5750600061057e565b8160018114611e115760028114611e1b57611e37565b600191505061057e565b60ff841115611e2c57611e2c611d86565b50506001821b61057e565b5060208310610133831016604e8410600b8410161715611e5a575081810a61057e565b611e648383611d9c565b8060001904821115611e7857611e78611d86565b029392505050565b600061191960ff841683611ddf565b6000816000190483118215151615611ea957611ea9611d86565b500290565b600082821015611ec057611ec0611d86565b500390565b600060208284031215611ed757600080fd5b5051919050565b600060208284031215611ef057600080fd5b8151801515811461191957600080fd5b600060208284031215611f1257600080fd5b815161191981611c15565b600080600060608486031215611f3257600080fd5b8351925060208401519150604084015190509250925092565b60008219821115611f5e57611f5e611d86565b500190565b6000600019821415611f7757611f77611d86565b5060010190565b600082611f9b57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120065784516001600160a01b031683529383019391830191600101611fe1565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122089458b340e08f34f2af417cb7d8e82168de773a9e3865e3fd319d0c7c879446064736f6c634300080a0033

Deployed Bytecode Sourcemap

3637:10534:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6266:410;;;;;;;;;;;;;:::i;:::-;;6684:83;;;;;;;;;;-1:-1:-1;6754:5:0;;;;;;;;;;;;-1:-1:-1;;;6754:5:0;;;;6684:83;;;;;;;:::i;:::-;;;;;;;;12925:186;;;;;;;;;;-1:-1:-1;12925:186:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;12925:186:0;1072:187:1;7186:225:0;;;;;;;;;;-1:-1:-1;7186:225:0;;;;;:::i;:::-;;:::i;4871:32::-;;;;;;;;;;-1:-1:-1;4871:32:0;;;;-1:-1:-1;;;;;4871:32:0;;;;;;-1:-1:-1;;;;;1698:32:1;;;1680:51;;1668:2;1653:18;4871:32:0;1517:220:1;6955:100:0;;;;;;;;;;;;;:::i;:::-;;;1888:25:1;;;1876:2;1861:18;6955:100:0;1742:177:1;7419:481:0;;;;;;;;;;-1:-1:-1;7419:481:0;;;;;:::i;:::-;;:::i;4734:94::-;;;;;;;;;;;;4786:42;4734:94;;6866:83;;;;;;;;;;-1:-1:-1;6866:83:0;;3726:1;2735:36:1;;2723:2;2708:18;6866:83:0;2593:184:1;8728:278:0;;;;;;;;;;-1:-1:-1;8728:278:0;;;;;:::i;:::-;;:::i;7061:117::-;;;;;;;;;;-1:-1:-1;7061:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;7154:16:0;7127:7;7154:16;;;:7;:16;;;;;;;7061:117;3482:148;;;;;;;;;;;;;:::i;7908:142::-;;;;;;;;;;;;;:::i;13958:210::-;;;;;;;;;;;;;:::i;2831:79::-;;;;;;;;;;-1:-1:-1;2869:7:0;2896:6;-1:-1:-1;;;;;2896:6:0;2831:79;;6773:87;;;;;;;;;;-1:-1:-1;6845:7:0;;;;;;;;;;;;-1:-1:-1;;;6845:7:0;;;;6773:87;;12553:192;;;;;;;;;;-1:-1:-1;12553:192:0;;;;;:::i;:::-;;:::i;5694:564::-;;;;;;;;;;-1:-1:-1;5694:564:0;;;;;:::i;:::-;;:::i;9014:280::-;;;;;;;;;;-1:-1:-1;9014:280:0;;;;;:::i;:::-;;:::i;4290:58::-;;;;;;;;;;;;;;;;3961:32;;;;;;;;;;-1:-1:-1;3961:32:0;;;;-1:-1:-1;;;3961:32:0;;;;;;12751:168;;;;;;;;;;-1:-1:-1;12751:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;12884:18:0;;;12857:7;12884:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12751:168;13119:618;;;:::i;3041:238::-;;;;;;;;;;-1:-1:-1;3041:238:0;;;;;:::i;:::-;;:::i;6266:410::-;6336:21;6376;6368:68;;;;-1:-1:-1;;;6368:68:0;;;;;;;:::i;:::-;;;;;;;;;6490:21;6469:17;:42;;6447:111;;;;-1:-1:-1;;;6447:111:0;;4032:2:1;6447:111:0;;;4014:21:1;4071:2;4051:18;;;4044:30;-1:-1:-1;;;4090:18:1;;;4083:49;4149:18;;6447:111:0;3830:343:1;6447:111:0;6585:15;;6569:61;;-1:-1:-1;;;;;6585:15:0;;;;6569:61;;;;;6612:17;;6585:15;6569:61;6585:15;6569:61;6612:17;6585:15;6569:61;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6646:22:0;;;;;;;6297:379;6266:410::o;12925:186::-;13025:4;13042:39;1814:10;13065:7;13074:6;13042:8;:39::i;:::-;-1:-1:-1;13099:4:0;12925:186;;;;;:::o;7186:225::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;7287:3:::1;7276:7;:14;;:33;;;;;7306:3;7294:8;:15;;7276:33;7268:71;;;::::0;-1:-1:-1;;;7268:71:0;;4741:2:1;7268:71:0::1;::::0;::::1;4723:21:1::0;4780:2;4760:18;;;4753:30;4819:27;4799:18;;;4792:55;4864:18;;7268:71:0::1;4539:349:1::0;7268:71:0::1;7350:10;:20:::0;;;;7381:11:::1;:22:::0;7186:225::o;6955:100::-;7008:7;3787:15;3726:1;3787:2;:15;:::i;:::-;3774:28;;:10;:28;:::i;:::-;7028:19;;6955:100;:::o;7419:481::-;-1:-1:-1;;;;;7595:19:0;;7551:4;7595:19;;;:11;:19;;;;;;;;1814:10;7595:33;;;;;;;;7661:26;;;;7639:116;;;;-1:-1:-1;;;7639:116:0;;6783:2:1;7639:116:0;;;6765:21:1;6822:2;6802:18;;;6795:30;6861:34;6841:18;;;6834:62;-1:-1:-1;;;6912:18:1;;;6905:38;6960:19;;7639:116:0;6581:404:1;7639:116:0;7766:36;7776:6;7784:9;7795:6;7766:9;:36::i;:::-;7813:57;7822:6;1814:10;7844:25;7863:6;7844:16;:25;:::i;:::-;7813:8;:57::i;:::-;-1:-1:-1;7888:4:0;;7419:481;-1:-1:-1;;;;7419:481:0:o;8728:278::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8822:24:0;::::1;;::::0;;;:15:::1;:24;::::0;;;;;::::1;;:32;;:24:::0;:32:::1;;8800:109;;;::::0;-1:-1:-1;;;8800:109:0;;7322:2:1;8800:109:0::1;::::0;::::1;7304:21:1::0;7361:2;7341:18;;;7334:30;7400:29;7380:18;;;7373:57;7447:18;;8800:109:0::1;7120:351:1::0;8800:109:0::1;-1:-1:-1::0;;;;;8920:24:0;::::1;;::::0;;;:15:::1;:24;::::0;;;;;:31;;-1:-1:-1;;8920:31:0::1;8947:4;8920:31;::::0;;8967;::::1;::::0;8920:24;8967:31:::1;8728:278:::0;:::o;3482:148::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;3589:1:::1;3573:6:::0;;3552:40:::1;::::0;-1:-1:-1;;;;;3573:6:0;;::::1;::::0;3552:40:::1;::::0;3589:1;;3552:40:::1;3620:1;3603:19:::0;;-1:-1:-1;;;;;;3603:19:0::1;::::0;;3482:148::o;7908:142::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;7975:1:::1;7962:10;:14:::0;;;7987:11:::1;:15:::0;3787::::1;3726:1;3787:2;:15;:::i;:::-;3774:28;::::0;:10:::1;:28;:::i;:::-;8013:14;:29:::0;7908:142::o;13958:210::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;14022:12:::1;::::0;-1:-1:-1;;;14022:12:0;::::1;;;14021:13;14013:49;;;::::0;-1:-1:-1;;;14013:49:0;;7678:2:1;14013:49:0::1;::::0;::::1;7660:21:1::0;7717:2;7697:18;;;7690:30;7756:25;7736:18;;;7729:53;7799:18;;14013:49:0::1;7476:347:1::0;14013:49:0::1;14073:12;:19:::0;;-1:-1:-1;;;;14103:18:0;-1:-1:-1;;;14103:18:0;;;14137:23:::1;::::0;::::1;::::0;14073:12;14137:23:::1;13958:210::o:0;12553:192::-;12656:4;12673:42;1814:10;12697:9;12708:6;12673:9;:42::i;5694:564::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5830:27:0;::::1;5852:4;5830:27;;5808:131;;;::::0;-1:-1:-1;;;5808:131:0;;8030:2:1;5808:131:0::1;::::0;::::1;8012:21:1::0;8069:2;8049:18;;;8042:30;8108:34;8088:18;;;8081:62;-1:-1:-1;;;8159:18:1;;;8152:52;8221:19;;5808:131:0::1;7828:418:1::0;5808:131:0::1;5968:1;5958:7;:11;5950:58;;;;-1:-1:-1::0;;;5950:58:0::1;;;;;;;:::i;:::-;6052:43;::::0;-1:-1:-1;;;6052:43:0;;6089:4:::1;6052:43;::::0;::::1;1680:51:1::0;-1:-1:-1;;;;;6052:28:0;::::1;::::0;::::1;::::0;1653:18:1;;6052:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6041:7;:54;;6019:123;;;::::0;-1:-1:-1;;;6019:123:0;;4032:2:1;6019:123:0::1;::::0;::::1;4014:21:1::0;4071:2;4051:18;;;4044:30;-1:-1:-1;;;4090:18:1;;;4083:49;4149:18;;6019:123:0::1;3830:343:1::0;6019:123:0::1;6181:15;::::0;6153:53:::1;::::0;-1:-1:-1;;;6153:53:0;;-1:-1:-1;;;;;6181:15:0;;::::1;6153:53;::::0;::::1;8622:51:1::0;8689:18;;;8682:34;;;6153:27:0;;::::1;::::0;::::1;::::0;8595:18:1;;6153:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;6222:28:0::1;::::0;6242:7;;6222:28:::1;::::0;;;::::1;5694:564:::0;;:::o;9014:280::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9108:24:0;::::1;;::::0;;;:15:::1;:24;::::0;;;;;::::1;;9086:110;;;::::0;-1:-1:-1;;;9086:110:0;;9211:2:1;9086:110:0::1;::::0;::::1;9193:21:1::0;9250:2;9230:18;;;9223:30;9289:29;9269:18;;;9262:57;9336:18;;9086:110:0::1;9009:351:1::0;9086:110:0::1;-1:-1:-1::0;;;;;9207:24:0;::::1;9234:5;9207:24:::0;;;:15:::1;:24;::::0;;;;;:32;;-1:-1:-1;;9207:32:0::1;::::0;;9255:31;::::1;::::0;9234:5;9255:31:::1;9014:280:::0;:::o;13119:618::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;13184:15:::1;:95:::0;;-1:-1:-1;;;;;;13184:95:0::1;13226:42;13184:95:::0;;::::1;::::0;;;13317:25:::1;::::0;;-1:-1:-1;;;13317:25:0;;;;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;13226:42;13317:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13306:48:0::1;;13377:4;13397:15;;;;;;;;;-1:-1:-1::0;;;;;13397:15:0::1;-1:-1:-1::0;;;;;13397:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13306:124;::::0;-1:-1:-1;;;;;;13306:124:0::1;::::0;;;;;;-1:-1:-1;;;;;9851:15:1;;;13306:124:0::1;::::0;::::1;9833:34:1::0;9903:15;;9883:18;;;9876:43;9768:18;;13306:124:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13290:13;:140:::0;;-1:-1:-1;;;;;;13290:140:0::1;-1:-1:-1::0;;;;;13290:140:0;;::::1;;::::0;;13475:15:::1;::::0;13443:62:::1;::::0;13460:4:::1;::::0;13475:15:::1;-1:-1:-1::0;;13443:8:0::1;:62::i;:::-;13518:15;::::0;-1:-1:-1;;;;;13518:15:0::1;:31;13557:9;13590:4;13610:24;13590:4:::0;-1:-1:-1;;;;;7154:16:0;7127:7;7154:16;;;:7;:16;;;;;;;7061:117;13610:24:::1;13649:1;13665::::0;13681:7:::1;2869::::0;2896:6;-1:-1:-1;;;;;2896:6:0;;2831:79;13681:7:::1;13518:211;::::0;::::1;::::0;;;-1:-1:-1;;;;;;13518:211:0;;;-1:-1:-1;;;;;10289:15:1;;;13518:211:0::1;::::0;::::1;10271:34:1::0;10321:18;;;10314:34;;;;10364:18;;;10357:34;;;;10407:18;;;10400:34;10471:15;;;10450:19;;;10443:44;13703:15:0::1;10503:19:1::0;;;10496:35;10205:19;;13518:211:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13119:618::o:0;3041:238::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3144:22:0;::::1;3122:110;;;::::0;-1:-1:-1;;;3122:110:0;;11055:2:1;3122:110:0::1;::::0;::::1;11037:21:1::0;11094:2;11074:18;;;11067:30;11133:34;11113:18;;;11106:62;-1:-1:-1;;;11184:18:1;;;11177:36;11230:19;;3122:110:0::1;10853:402:1::0;3122:110:0::1;3243:28;3262:8;3243:18;:28::i;:::-;3041:238:::0;:::o;12212:335::-;-1:-1:-1;;;;;12305:19:0;;12297:68;;;;-1:-1:-1;;;12297:68:0;;11462:2:1;12297:68:0;;;11444:21:1;11501:2;11481:18;;;11474:30;11540:34;11520:18;;;11513:62;-1:-1:-1;;;11591:18:1;;;11584:34;11635:19;;12297:68:0;11260:400:1;12297:68:0;-1:-1:-1;;;;;12384:21:0;;12376:68;;;;-1:-1:-1;;;12376:68:0;;11867:2:1;12376:68:0;;;11849:21:1;11906:2;11886:18;;;11879:30;11945:34;11925:18;;;11918:62;-1:-1:-1;;;11996:18:1;;;11989:32;12038:19;;12376:68:0;11665:398:1;12376:68:0;-1:-1:-1;;;;;12455:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12507:32;;1888:25:1;;;12507:32:0;;1861:18:1;12507:32:0;;;;;;;12212:335;;;:::o;9302:2865::-;-1:-1:-1;;;;;9390:18:0;;9382:68;;;;-1:-1:-1;;;9382:68:0;;12270:2:1;9382:68:0;;;12252:21:1;12309:2;12289:18;;;12282:30;12348:34;12328:18;;;12321:62;-1:-1:-1;;;12399:18:1;;;12392:35;12444:19;;9382:68:0;12068:401:1;9382:68:0;-1:-1:-1;;;;;9469:16:0;;9461:64;;;;-1:-1:-1;;;9461:64:0;;12676:2:1;9461:64:0;;;12658:21:1;12715:2;12695:18;;;12688:30;12754:34;12734:18;;;12727:62;-1:-1:-1;;;12805:18:1;;;12798:33;12848:19;;9461:64:0;12474:399:1;9461:64:0;9553:1;9544:6;:10;9536:64;;;;-1:-1:-1;;;9536:64:0;;13080:2:1;9536:64:0;;;13062:21:1;13119:2;13099:18;;;13092:30;13158:34;13138:18;;;13131:62;-1:-1:-1;;;13209:18:1;;;13202:39;13258:19;;9536:64:0;12878:405:1;9536:64:0;9657:10;;-1:-1:-1;;;;;9683:21:0;;9611:18;9683:21;;;:15;:21;;;;;;;;9682:22;:46;;;;-1:-1:-1;;;;;;9709:19:0;;;;;;:15;:19;;;;;;;;9708:20;9682:46;9678:123;;;9753:12;;-1:-1:-1;;;9753:12:0;;;;9745:44;;;;-1:-1:-1;;;9745:44:0;;13490:2:1;9745:44:0;;;13472:21:1;13529:2;13509:18;;;13502:30;-1:-1:-1;;;13548:18:1;;;13541:49;13607:18;;9745:44:0;13288:343:1;9745:44:0;9815:10;;-1:-1:-1;;;9815:10:0;;;;;:26;;-1:-1:-1;9830:11:0;;-1:-1:-1;;;9830:11:0;;;;9829:12;9815:26;9811:185;;;-1:-1:-1;;;;;9858:13:0;;;;;;:7;:13;;;;;:23;;9875:6;;9858:13;:23;;9875:6;;9858:23;:::i;:::-;;;;-1:-1:-1;;;;;;;9896:11:0;;;;;;:7;:11;;;;;:21;;9911:6;;9896:11;:21;;9911:6;;9896:21;:::i;:::-;;;;;;;;9952:2;-1:-1:-1;;;;;9937:26:0;9946:4;-1:-1:-1;;;;;9937:26:0;-1:-1:-1;;;;;;;;;;;9956:6:0;9937:26;;;;1888:25:1;;1876:2;1861:18;;1742:177;9937:26:0;;;;;;;;9978:7;9302:2865;;;:::o;9811:185::-;10032:13;;-1:-1:-1;;;;;10024:21:0;;;10032:13;;10024:21;:68;;;;-1:-1:-1;10076:15:0;;-1:-1:-1;;;;;10062:30:0;;;10076:15;;10062:30;;10024:68;:105;;;;-1:-1:-1;;;;;;10110:19:0;;;;;;:15;:19;;;;;;;;10109:20;10024:105;10006:392;;;10174:14;;10164:6;:24;;10156:62;;;;-1:-1:-1;;;10156:62:0;;13971:2:1;10156:62:0;;;13953:21:1;14010:2;13990:18;;;13983:30;-1:-1:-1;;;14029:18:1;;;14022:55;14094:18;;10156:62:0;13769:349:1;10156:62:0;10285:14;;10275:6;10259:13;10269:2;-1:-1:-1;;;;;7154:16:0;7127:7;7154:16;;;:7;:16;;;;;;;7061:117;10259:13;:22;;;;:::i;:::-;:40;;10233:128;;;;-1:-1:-1;;;10233:128:0;;14325:2:1;10233:128:0;;;14307:21:1;14364:2;14344:18;;;14337:30;14403:28;14383:18;;;14376:56;14449:18;;10233:128:0;14123:350:1;10233:128:0;10376:8;:10;;;:8;:10;;;:::i;:::-;;;;;;10006:392;10434:13;;-1:-1:-1;;;;;10426:21:0;;;10434:13;;10426:21;;;;:60;;-1:-1:-1;;;;;;10465:21:0;;;;;;:15;:21;;;;;;;;10464:22;10426:60;:97;;;;-1:-1:-1;;;;;;10504:19:0;;;;;;:15;:19;;;;;;;;10503:20;10426:97;10408:216;;;10568:14;;10558:6;:24;;10550:62;;;;-1:-1:-1;;;10550:62:0;;13971:2:1;10550:62:0;;;13953:21:1;14010:2;13990:18;;;13983:30;-1:-1:-1;;;14029:18:1;;;14022:55;14094:18;;10550:62:0;13769:349:1;10550:62:0;10658:13;;-1:-1:-1;;;;;10652:19:0;;;10658:13;;10652:19;:57;;;;-1:-1:-1;;;;;;10688:21:0;;10704:4;10688:21;;10652:57;:96;;;;-1:-1:-1;;;;;;10727:21:0;;;;;;:15;:21;;;;;;;;10726:22;10652:96;:133;;;;-1:-1:-1;;;;;;10766:19:0;;;;;;:15;:19;;;;;;;;10765:20;10652:133;10634:214;;;-1:-1:-1;10825:11:0;;10634:214;10908:4;10858:29;7154:16;;;:7;:16;;;;;;10953:14;;10943:24;;;;;:60;;-1:-1:-1;10990:13:0;;-1:-1:-1;;;;;10984:19:0;;;10990:13;;10984:19;10943:60;:88;;;;-1:-1:-1;11020:11:0;;-1:-1:-1;;;11020:11:0;;;;10943:88;:116;;;;-1:-1:-1;11049:10:0;;-1:-1:-1;;;11049:10:0;;;;11048:11;10943:116;:172;;;;;11101:14;;11076:21;:39;;10943:172;:201;;;;;11143:1;11132:8;;:12;10943:201;:240;;;;-1:-1:-1;;;;;;11162:21:0;;;;;;:15;:21;;;;;;;;11161:22;10943:240;:277;;;;-1:-1:-1;;;;;;11201:19:0;;;;;;:15;:19;;;;;;;;11200:20;10943:277;10925:575;;;11247:67;11259:54;11263:6;11271:41;11275:21;11298:13;;11271:3;:41::i;:::-;11259:3;:54::i;:::-;11247:11;:67::i;:::-;11357:21;11397;;11393:96;;11439:34;11451:21;11439:11;:34::i;:::-;11232:268;10925:575;11514:15;;11510:650;;11546:14;11587:3;11564:19;11573:10;11564:6;:19;:::i;:::-;11563:27;;;;:::i;:::-;11546:44;-1:-1:-1;11605:17:0;11625:15;11546:44;11625:6;:15;:::i;:::-;-1:-1:-1;;;;;11676:21:0;;11655:18;11676:21;;;:15;:21;;;;;;11605:35;;-1:-1:-1;11655:18:0;11676:21;;:44;;11715:4;11676:44;;;11700:4;11676:44;-1:-1:-1;;;;;11744:21:0;;;;;;:15;:21;;;;;;11655:65;;-1:-1:-1;11744:21:0;;:39;;11777:6;11744:39;;;11768:6;11744:39;-1:-1:-1;;;;;11798:19:0;;;;;;:7;:19;;;;;:29;;11735:48;;-1:-1:-1;11735:48:0;;11798:19;;;:29;;11735:48;;11798:29;:::i;:::-;;;;-1:-1:-1;;11847:37:0;;1888:25:1;;;11870:4:0;;-1:-1:-1;;;;;11847:37:0;;;-1:-1:-1;;;;;;;;;;;11847:37:0;1876:2:1;1861:18;11847:37:0;;;;;;;-1:-1:-1;;;;;11899:13:0;;;;;;:7;:13;;;;;:23;;11916:6;;11899:13;:23;;11916:6;;11899:23;:::i;:::-;;;;-1:-1:-1;;;;;;;11937:11:0;;;;;;:7;:11;;;;;:24;;11952:9;;11937:11;:24;;11952:9;;11937:24;:::i;:::-;;;;;;;;11996:2;-1:-1:-1;;;;;11981:29:0;11990:4;-1:-1:-1;;;;;11981:29:0;-1:-1:-1;;;;;;;;;;;12000:9:0;11981:29;;;;1888:25:1;;1876:2;1861:18;;1742:177;11981:29:0;;;;;;;;11531:491;;;11510:650;;;-1:-1:-1;;;;;12043:13:0;;;;;;:7;:13;;;;;:23;;12060:6;;12043:13;:23;;12060:6;;12043:23;:::i;:::-;;;;-1:-1:-1;;;;;;;12081:11:0;;;;;;:7;:11;;;;;:21;;12096:6;;12081:11;:21;;12096:6;;12081:21;:::i;:::-;;;;;;;;12137:2;-1:-1:-1;;;;;12122:26:0;12131:4;-1:-1:-1;;;;;12122:26:0;-1:-1:-1;;;;;;;;;;;12141:6:0;12122:26;;;;1888:25:1;;1876:2;1861:18;;1742:177;12122:26:0;;;;;;;;11510:650;9371:2796;;9302:2865;;;:::o;3285:191::-;3359:16;3378:6;;-1:-1:-1;;;;;3395:17:0;;;-1:-1:-1;;;;;;3395:17:0;;;;;;3428:40;;3378:6;;;;;;;3428:40;;3359:16;3428:40;3348:128;3285:191;:::o;8613:107::-;8670:7;8702:1;8698;:5;8697:15;;8711:1;8697:15;;;8707:1;8697:15;8690:22;8613:107;-1:-1:-1;;;8613:107:0:o;8058:547::-;4573:10;:17;;-1:-1:-1;;;;4573:17:0;-1:-1:-1;;;4573:17:0;;;8140:15;8132:57:::1;;;::::0;-1:-1:-1;;;8132:57:0;;15042:2:1;8132:57:0::1;::::0;::::1;15024:21:1::0;15081:2;15061:18;;;15054:30;15120:31;15100:18;;;15093:59;15169:18;;8132:57:0::1;14840:353:1::0;8132:57:0::1;8224:16;::::0;;8238:1:::1;8224:16:::0;;;;;::::1;::::0;;8200:21:::1;::::0;8224:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;8224:16:0::1;8200:40;;8269:4;8251;8256:1;8251:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8251:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;8295:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;8295:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;8251:7;;8295:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8285:4;8290:1;8285:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8285:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;8360:15:::1;::::0;8328:62:::1;::::0;8345:4:::1;::::0;8360:15:::1;8378:11:::0;8328:8:::1;:62::i;:::-;8401:15;::::0;:196:::1;::::0;-1:-1:-1;;;8401:196:0;;-1:-1:-1;;;;;8401:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;8482:11;;8401:15:::1;::::0;8524:4;;8551::::1;::::0;8571:15:::1;::::0;8401:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4626:5:0;4613:18;;-1:-1:-1;;;;4613:18:0;;;-1:-1:-1;;;;8058:547:0:o;13745:205::-;13818:1;13809:6;:10;13801:52;;;;-1:-1:-1;;;13801:52:0;;15042:2:1;13801:52:0;;;15024:21:1;15081:2;15061:18;;;15054:30;15120:31;15100:18;;;15093:59;15169:18;;13801:52:0;14840:353:1;13801:52:0;13864:10;;-1:-1:-1;;;;;13864:10:0;:31;13884:10;13893:1;13884:6;:10;:::i;:::-;13864:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13906:15:0;;-1:-1:-1;;;;;13906:15:0;:36;13931:10;13940:1;13931:6;:10;:::i;:::-;13906:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13745:205;:::o;14:597: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:248::-;1332:6;1340;1393:2;1381:9;1372:7;1368:23;1364:32;1361:52;;;1409:1;1406;1399:12;1361:52;-1:-1:-1;;1432:23:1;;;1502:2;1487:18;;;1474:32;;-1:-1:-1;1264:248:1:o;1924:456::-;2001:6;2009;2017;2070:2;2058:9;2049:7;2045:23;2041:32;2038:52;;;2086:1;2083;2076:12;2038:52;2125:9;2112:23;2144:31;2169:5;2144:31;:::i;:::-;2194:5;-1:-1:-1;2251:2:1;2236:18;;2223:32;2264:33;2223:32;2264:33;:::i;:::-;1924:456;;2316:7;;-1:-1:-1;;;2370:2:1;2355:18;;;;2342:32;;1924:456::o;2782:247::-;2841:6;2894:2;2882:9;2873:7;2869:23;2865:32;2862:52;;;2910:1;2907;2900:12;2862:52;2949:9;2936:23;2968:31;2993:5;2968:31;:::i;3034:388::-;3102:6;3110;3163:2;3151:9;3142:7;3138:23;3134:32;3131:52;;;3179:1;3176;3169:12;3131:52;3218:9;3205:23;3237:31;3262:5;3237:31;:::i;:::-;3287:5;-1:-1:-1;3344:2:1;3329:18;;3316:32;3357:33;3316:32;3357:33;:::i;:::-;3409:7;3399:17;;;3034:388;;;;;:::o;3427:398::-;3629:2;3611:21;;;3668:2;3648:18;;;3641:30;3707:34;3702:2;3687:18;;3680:62;-1:-1:-1;;;3773:2:1;3758:18;;3751:32;3815:3;3800:19;;3427:398::o;4178:356::-;4380:2;4362:21;;;4399:18;;;4392:30;4458:34;4453:2;4438:18;;4431:62;4525:2;4510:18;;4178:356::o;4893:127::-;4954:10;4949:3;4945:20;4942:1;4935:31;4985:4;4982:1;4975:15;5009:4;5006:1;4999:15;5025:422;5114:1;5157:5;5114:1;5171:270;5192:7;5182:8;5179:21;5171:270;;;5251:4;5247:1;5243:6;5239:17;5233:4;5230:27;5227:53;;;5260:18;;:::i;:::-;5310:7;5300:8;5296:22;5293:55;;;5330:16;;;;5293:55;5409:22;;;;5369:15;;;;5171:270;;;5175:3;5025:422;;;;;:::o;5452:806::-;5501:5;5531:8;5521:80;;-1:-1:-1;5572:1:1;5586:5;;5521:80;5620:4;5610:76;;-1:-1:-1;5657:1:1;5671:5;;5610:76;5702:4;5720:1;5715:59;;;;5788:1;5783:130;;;;5695:218;;5715:59;5745:1;5736:10;;5759:5;;;5783:130;5820:3;5810:8;5807:17;5804:43;;;5827:18;;:::i;:::-;-1:-1:-1;;5883:1:1;5869:16;;5898:5;;5695:218;;5997:2;5987:8;5984:16;5978:3;5972:4;5969:13;5965:36;5959:2;5949:8;5946:16;5941:2;5935:4;5932:12;5928:35;5925:77;5922:159;;;-1:-1:-1;6034:19:1;;;6066:5;;5922:159;6113:34;6138:8;6132:4;6113:34;:::i;:::-;6183:6;6179:1;6175:6;6171:19;6162:7;6159:32;6156:58;;;6194:18;;:::i;:::-;6232:20;;5452:806;-1:-1:-1;;;5452:806:1:o;6263:140::-;6321:5;6350:47;6391:4;6381:8;6377:19;6371:4;6350:47;:::i;6408:168::-;6448:7;6514:1;6510;6506:6;6502:14;6499:1;6496:21;6491:1;6484:9;6477:17;6473:45;6470:71;;;6521:18;;:::i;:::-;-1:-1:-1;6561:9:1;;6408:168::o;6990:125::-;7030:4;7058:1;7055;7052:8;7049:34;;;7063:18;;:::i;:::-;-1:-1:-1;7100:9:1;;6990:125::o;8251:184::-;8321:6;8374:2;8362:9;8353:7;8349:23;8345:32;8342:52;;;8390:1;8387;8380:12;8342:52;-1:-1:-1;8413:16:1;;8251:184;-1:-1:-1;8251:184:1:o;8727:277::-;8794:6;8847:2;8835:9;8826:7;8822:23;8818:32;8815:52;;;8863:1;8860;8853:12;8815:52;8895:9;8889:16;8948:5;8941:13;8934:21;8927:5;8924:32;8914:60;;8970:1;8967;8960:12;9365:251;9435:6;9488:2;9476:9;9467:7;9463:23;9459:32;9456:52;;;9504:1;9501;9494:12;9456:52;9536:9;9530:16;9555:31;9580:5;9555:31;:::i;10542:306::-;10630:6;10638;10646;10699:2;10687:9;10678:7;10674:23;10670:32;10667:52;;;10715:1;10712;10705:12;10667:52;10744:9;10738:16;10728:26;;10794:2;10783:9;10779:18;10773:25;10763:35;;10838:2;10827:9;10823:18;10817:25;10807:35;;10542:306;;;;;:::o;13636:128::-;13676:3;13707:1;13703:6;13700:1;13697:13;13694:39;;;13713:18;;:::i;:::-;-1:-1:-1;13749:9:1;;13636:128::o;14478:135::-;14517:3;-1:-1:-1;;14538:17:1;;14535:43;;;14558:18;;:::i;:::-;-1:-1:-1;14605:1:1;14594:13;;14478:135::o;14618:217::-;14658:1;14684;14674:132;;14728:10;14723:3;14719:20;14716:1;14709:31;14763:4;14760:1;14753:15;14791:4;14788:1;14781:15;14674:132;-1:-1:-1;14820:9:1;;14618:217::o;15330:127::-;15391:10;15386:3;15382:20;15379:1;15372:31;15422:4;15419:1;15412:15;15446:4;15443:1;15436:15;15462:980;15724:4;15772:3;15761:9;15757:19;15803:6;15792:9;15785:25;15829:2;15867:6;15862:2;15851:9;15847:18;15840:34;15910:3;15905:2;15894:9;15890:18;15883:31;15934:6;15969;15963:13;16000:6;15992;15985:22;16038:3;16027:9;16023:19;16016:26;;16077:2;16069:6;16065:15;16051:29;;16098:1;16108:195;16122:6;16119:1;16116:13;16108:195;;;16187:13;;-1:-1:-1;;;;;16183:39:1;16171:52;;16278:15;;;;16243:12;;;;16219:1;16137:9;16108:195;;;-1:-1:-1;;;;;;;16359:32:1;;;;16354:2;16339:18;;16332:60;-1:-1:-1;;;16423:3:1;16408:19;16401:35;16320:3;15462:980;-1:-1:-1;;;15462:980:1:o

Swarm Source

ipfs://89458b340e08f34f2af417cb7d8e82168de773a9e3865e3fd319d0c7c8794460

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.