ETH Price: $2,450.94 (-1.16%)

Contract

0x01625Ace051B88Fb8DcB3847406fBe99AfA1c962
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve148112102022-05-20 12:48:28898 days ago1653050908IN
0x01625Ace...9AfA1c962
0 ETH0.0013725829.37577229
Transfer147437492022-05-09 17:47:17908 days ago1652118437IN
0x01625Ace...9AfA1c962
0 ETH0.0045455690.82223398
Transfer147437332022-05-09 17:43:52908 days ago1652118232IN
0x01625Ace...9AfA1c962
0 ETH0.006403185.8129268
Transfer147434152022-05-09 16:28:52908 days ago1652113732IN
0x01625Ace...9AfA1c962
0 ETH0.0072559686.14464812
Transfer147434112022-05-09 16:27:33908 days ago1652113653IN
0x01625Ace...9AfA1c962
0 ETH0.0063164175.00081557
Transfer147431432022-05-09 15:24:51908 days ago1652109891IN
0x01625Ace...9AfA1c962
0 ETH0.031408899.52376357
Set Sell Fees147426712022-05-09 13:24:54908 days ago1652102694IN
0x01625Ace...9AfA1c962
0 ETH0.001235728.12968531
Set Buy Fees147426642022-05-09 13:23:53908 days ago1652102633IN
0x01625Ace...9AfA1c962
0 ETH0.001551935.34536513
Approve147354702022-05-08 10:13:21910 days ago1652004801IN
0x01625Ace...9AfA1c962
0 ETH0.000896619.18908466
Approve147202322022-05-05 23:53:31912 days ago1651794811IN
0x01625Ace...9AfA1c962
0 ETH0.001679135.93597364
Approve147198002022-05-05 22:15:16912 days ago1651788916IN
0x01625Ace...9AfA1c962
0 ETH0.0021189345.34900399
Approve147195862022-05-05 21:28:56912 days ago1651786136IN
0x01625Ace...9AfA1c962
0 ETH0.00626592134.10221293
Set Swap Tokens ...147195122022-05-05 21:11:42912 days ago1651785102IN
0x01625Ace...9AfA1c962
0 ETH0.00387607115.11263034
Approve147189632022-05-05 19:10:42912 days ago1651777842IN
0x01625Ace...9AfA1c962
0 ETH0.0041637189.11110423
Approve147187662022-05-05 18:22:41912 days ago1651774961IN
0x01625Ace...9AfA1c962
0 ETH0.0036116977.29682206
Approve147187622022-05-05 18:21:09912 days ago1651774869IN
0x01625Ace...9AfA1c962
0 ETH0.0030098764.41672953
Approve147186092022-05-05 17:46:03912 days ago1651772763IN
0x01625Ace...9AfA1c962
0 ETH0.0027969559.85983778
Approve147185682022-05-05 17:36:52912 days ago1651772212IN
0x01625Ace...9AfA1c962
0 ETH0.0022221847.5588254
Approve147185002022-05-05 17:21:47912 days ago1651771307IN
0x01625Ace...9AfA1c962
0 ETH0.0037720380.7284011
Approve147183872022-05-05 16:55:57912 days ago1651769757IN
0x01625Ace...9AfA1c962
0 ETH0.0026697857.13829898
Approve147183422022-05-05 16:46:04912 days ago1651769164IN
0x01625Ace...9AfA1c962
0 ETH0.0030318564.88713161
Approve147183252022-05-05 16:42:39912 days ago1651768959IN
0x01625Ace...9AfA1c962
0 ETH0.0039716285
Approve147182632022-05-05 16:28:39912 days ago1651768119IN
0x01625Ace...9AfA1c962
0 ETH0.00544933116.62568092
Approve147182282022-05-05 16:16:40912 days ago1651767400IN
0x01625Ace...9AfA1c962
0 ETH0.0035151275.22997573
Approve147181612022-05-05 15:59:33912 days ago1651766373IN
0x01625Ace...9AfA1c962
0 ETH0.0039393684.30957581
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
148220002022-05-22 7:04:42896 days ago1653203082
0x01625Ace...9AfA1c962
0.00240572 ETH
148220002022-05-22 7:04:42896 days ago1653203082
0x01625Ace...9AfA1c962
0.00072122 ETH
148220002022-05-22 7:04:42896 days ago1653203082
0x01625Ace...9AfA1c962
0.00112299 ETH
148220002022-05-22 7:04:42896 days ago1653203082
0x01625Ace...9AfA1c962
0.00280749 ETH
147431432022-05-09 15:24:51908 days ago1652109891
0x01625Ace...9AfA1c962
0.00140864 ETH
147431432022-05-09 15:24:51908 days ago1652109891
0x01625Ace...9AfA1c962
0.00070382 ETH
147431432022-05-09 15:24:51908 days ago1652109891
0x01625Ace...9AfA1c962
0.0011747 ETH
147431432022-05-09 15:24:51908 days ago1652109891
0x01625Ace...9AfA1c962
0.00187953 ETH
147354732022-05-08 10:14:18910 days ago1652004858
0x01625Ace...9AfA1c962
0.00111609 ETH
147354732022-05-08 10:14:18910 days ago1652004858
0x01625Ace...9AfA1c962
0.00055763 ETH
147354732022-05-08 10:14:18910 days ago1652004858
0x01625Ace...9AfA1c962
0.00093077 ETH
147354732022-05-08 10:14:18910 days ago1652004858
0x01625Ace...9AfA1c962
0.00148923 ETH
147354712022-05-08 10:13:50910 days ago1652004830
0x01625Ace...9AfA1c962
0.00118446 ETH
147354712022-05-08 10:13:50910 days ago1652004830
0x01625Ace...9AfA1c962
0.00059179 ETH
147354712022-05-08 10:13:50910 days ago1652004830
0x01625Ace...9AfA1c962
0.00098778 ETH
147354712022-05-08 10:13:50910 days ago1652004830
0x01625Ace...9AfA1c962
0.00158045 ETH
147354692022-05-08 10:12:59910 days ago1652004779
0x01625Ace...9AfA1c962
0.00125933 ETH
147354692022-05-08 10:12:59910 days ago1652004779
0x01625Ace...9AfA1c962
0.0006292 ETH
147354692022-05-08 10:12:59910 days ago1652004779
0x01625Ace...9AfA1c962
0.0010502 ETH
147354692022-05-08 10:12:59910 days ago1652004779
0x01625Ace...9AfA1c962
0.00168033 ETH
147288192022-05-07 8:53:03911 days ago1651913583
0x01625Ace...9AfA1c962
0.00132828 ETH
147288192022-05-07 8:53:03911 days ago1651913583
0x01625Ace...9AfA1c962
0.00066366 ETH
147288192022-05-07 8:53:03911 days ago1651913583
0x01625Ace...9AfA1c962
0.00110769 ETH
147288192022-05-07 8:53:03911 days ago1651913583
0x01625Ace...9AfA1c962
0.00177231 ETH
147286252022-05-07 8:06:53911 days ago1651910813
0x01625Ace...9AfA1c962
0.00147402 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ShibellaInu

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-05
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * SHIBELLA RISES
 *
 * SHIB's lil' sister escaped, and she's fiery!
 *
 * Tax: 3% Swap Burn; 2% Liquidity & Burn; 3% Operations.
 *
 * Telegram: https://t.me/ShibellaPortal
 *
 * Twitter: https://twitter.com/ShibellaToken
 *
 * Website: https://shibella.io/
 */

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

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();

        _transfer(owner, to, amount);

        return true;
    }

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

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();

        _approve(owner, spender, amount);

        return true;
    }

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();

        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();

        _approve(owner, spender, allowance(owner, spender) + addedValue);

        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);

        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");

        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        uint256 fromBalance = _balances[from];

        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");

        unchecked {
            _balances[from] = fromBalance - amount;
        }

        _balances[to] += amount;

        emit Transfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;

        emit Transfer(address(0), account, amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        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 _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);

        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");

            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;

        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IDexRouter {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

contract ShibellaInu is Context, ERC20, Ownable {
    // DEX
    IDexRouter public dexRouter;
    address public dexPair;

    // Wallets
    address public operationsWallet;

    // Trade settings
    bool public swapEnabled = false;
    bool public limitsEnabled = false;
    bool private _tradingEnabled = false;

    bool public transferDelayEnabled = true;
    uint256 private _transferDelayBlocks = 2;
    mapping(address => uint256) private _lastTransferBlock;
    
    uint256 private _maxTxAmount;
    uint256 private _maxWalletAmount;
    uint256 public swapTokensAmount;

    // Trade tax
    uint256 public buyBurnFee = 3;
    uint256 public buyLiquidityFee = 2;
    uint256 public buyOperationsFee = 3;
    uint256 public buyTotalFees = buyBurnFee + buyLiquidityFee + buyOperationsFee;

    uint256 public sellBurnFee = 3;
    uint256 public sellLiquidityFee = 2;
    uint256 public sellOperationsFee = 3;
    uint256 public sellTotalFees = sellBurnFee + sellLiquidityFee + sellOperationsFee;

    uint256 private _tokensForBurn = 0;
    uint256 private _tokensForOperations = 0;
    uint256 private _tokensForLiquidity = 0;

    // Fees and max TX exclusions
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedFromMaxTx;

    // Anti-bot
    bool public antiBotEnabled = true;
    mapping(address => bool) private _bots;
    uint256 private _launchTime = 0;
    uint256 private _launchBlock = 0;
    uint256 private _botBlocks = 1;
    uint256 private _botSeconds = 10;
    uint256 public totalBots = 0;

    // Reentrancy
    bool private _isSwapLocked = false;

    modifier lockSwap {
        _isSwapLocked = true;
        _;
        _isSwapLocked = false;
    }

    constructor(address operationsWallet_) payable ERC20("Shibella Inu", "SHIBELLA") {
        require(address(this).balance > 0, "Token: contract currency balance must be above 0");

        // DEX router
        if (block.chainid == 56) {
            dexRouter = IDexRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IDexRouter(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3);
        } else if (block.chainid == 1 || block.chainid == 4) {
            dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        } else {
            revert();
        }

        _approve(address(this), address(dexRouter), type(uint256).max);

        // Wallets
        operationsWallet = operationsWallet_;

        // Mint total supply - only called here
        _mint(address(this), 1_425_000 * 1e18);
        _mint(operationsWallet_, 75_000 * 1e18);
    }

    function lightTheFire(uint256 botBlocks_, uint256 botSeconds_, uint256 maxTxAmount_, uint256 maxWalletAmount_, address[] memory botAddresses_) external onlyOwner {
        require(!_tradingEnabled, "Token: trading already enabled");
        require(botBlocks_ >= 0 && botBlocks_ <= 3, "Token: bot blocks must range between 0 and 3");
        require(botSeconds_ >= 10 && botSeconds_ <= 120, "Token: bot seconds must range between 10 and 120");
        require(botAddresses_.length > 0 && botAddresses_.length <= 200, "Token: number of bot addresses cannot be above 200");

        // DEX pair
        dexPair = IDexFactory(dexRouter.factory()).createPair(address(this), dexRouter.WETH());

        // Exclude from fees
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
 
        // Exclude from max TX
        excludeFromMaxTx(owner(), true);
        excludeFromMaxTx(address(this), true);
        excludeFromMaxTx(address(0xdead), true);
        excludeFromMaxTx(address(dexRouter), true);
        excludeFromMaxTx(dexPair, true);

        // Add liquidity
        dexRouter.addLiquidityETH{value: address(this).balance}(address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp);
        IERC20(dexPair).approve(address(dexRouter), type(uint256).max);

        // Anti-bot
        setBots(botAddresses_, true);

        // Trade settings
        setMaxTxAmount(maxTxAmount_);
        setMaxWalletAmount(maxWalletAmount_);
        setSwapTokensAmount(((totalSupply() * 5) / 10000) / 1e18); // 0.05%

        // Launch settings
        _launchTime = block.timestamp;
        _launchBlock = block.number;
        _botBlocks = botBlocks_;
        _botSeconds = botSeconds_;

        swapEnabled = true;
        limitsEnabled = true;
        _tradingEnabled = true;
    }

    function setOperationsWallet(address operationsWallet_) public onlyOwner {
        require(operationsWallet_ != address(0), "Token: operations wallet address invalid");

        if (isExcludedFromFees(operationsWallet)) {
            excludeFromFees(operationsWallet, false);
        }

        if (isExcludedFromMaxTx(operationsWallet)) {
            excludeFromMaxTx(operationsWallet, false);
        }

        operationsWallet = operationsWallet_;

        excludeFromFees(operationsWallet_, true);
        excludeFromMaxTx(operationsWallet_, true);
    }

    function disableLimits() external onlyOwner {
    		require(limitsEnabled, "Token: limits already disabled");

        limitsEnabled = false;
    }

    function disableTransferDelay() external onlyOwner {
        require(transferDelayEnabled, "Token: transfer delay already disabled");

        transferDelayEnabled = false;
    }

    function setMaxTxAmount(uint256 maxTxAmount_) public onlyOwner {
        require(maxTxAmount_ >= (((totalSupply() * 75) / 10000) / 1e18), "Token: max TX amount cannot be below 0.75%");

        _maxTxAmount = maxTxAmount_ * 1e18;
    }

    function setMaxWalletAmount(uint256 maxWalletAmount_) public onlyOwner {
        require(maxWalletAmount_ >= ((totalSupply() / 100) / 1e18), "Token: max wallet amount cannot be below 1%");

        _maxWalletAmount = maxWalletAmount_ * 1e18;
    }

    function setSwapTokensAmount(uint256 swapTokensAmount_) public {
        require(_msgSender() == owner() || _msgSender() == operationsWallet, "Token: caller is not authorised");
        require(swapTokensAmount_ >= (((totalSupply() * 5) / 100000) / 1e18), "Token: swap tokens amount cannot be below 0.005%");
        require(swapTokensAmount_ <= ((totalSupply() / 1000) / 1e18), "Token: swap tokens amount cannot be above 0.1%");

        swapTokensAmount = swapTokensAmount_ * 1e18;
    }

    function excludeFromFees(address excludeAddress_, bool isExcluded_) public onlyOwner {
        if (isExcluded_) {
            require(excludeAddress_ != address(dexRouter) && excludeAddress_ != dexPair, "Token: excluded from fees address invalid");
        } else {
            require(excludeAddress_ != owner() && excludeAddress_ != address(this) && excludeAddress_ != address(0xdead), "Token: excluded from fees address invalid");
        }

        _isExcludedFromFees[excludeAddress_] = isExcluded_;
    }

    function isExcludedFromFees(address excludeAddress_) public view returns (bool) {
        return _isExcludedFromFees[excludeAddress_];
    }

    function excludeFromMaxTx(address excludeAddress_, bool isExcluded_) public onlyOwner {
        if (!isExcluded_) {
            require(excludeAddress_ != owner() && excludeAddress_ != address(this) && excludeAddress_ != address(0xdead) && excludeAddress_ != address(dexRouter) && excludeAddress_ != dexPair, "Token: excluded from max TX address invalid");
        }

        _isExcludedFromMaxTx[excludeAddress_] = isExcluded_;
    }

    function isExcludedFromMaxTx(address excludeAddress_) public view returns (bool) {
        return _isExcludedFromMaxTx[excludeAddress_];
    }

    function setAntiBotEnabled(bool antiBotEnabled_) external {
        require(_msgSender() == owner() || _msgSender() == operationsWallet, "Token: caller is not authorised");

        antiBotEnabled = antiBotEnabled_;
    }

    function setBots(address[] memory botAddresses_, bool isBlacklisting_) public {
        require(_msgSender() == owner() || _msgSender() == operationsWallet, "Token: caller is not authorised");
        require(botAddresses_.length > 0 && botAddresses_.length <= 200, "Token: number of bot addresses cannot be above 200");

        if (isBlacklisting_ && _tradingEnabled) {
            require(block.timestamp <= (_launchTime + (10 minutes)), "Token: bots can only be blacklisted within the first 10 minutes from launch");
        }

        for (uint256 i = 0; i < botAddresses_.length; i++) {
            if (isBlacklisting_ && (botAddresses_[i] == owner() || botAddresses_[i] == address(this) || botAddresses_[i] == address(0xdead) || botAddresses_[i] == dexPair || botAddresses_[i] == address(dexRouter))) continue;

            if (_bots[botAddresses_[i]] == isBlacklisting_) continue;

            _bots[botAddresses_[i]] = isBlacklisting_;

            if (isBlacklisting_) {
                totalBots++;
            } else {
                totalBots--;
            }
        }
    }

    function isBot(address botAddress_) public view returns (bool) {
        return _bots[botAddress_];
    }

    function setBuyFees(uint256 buyBurnFee_, uint256 buyLiquidityFee_, uint256 buyOperationsFee_) external {
        require(_msgSender() == owner() || _msgSender() == operationsWallet, "Token: caller is not authorised");
        require(buyBurnFee_ >= 0 && buyBurnFee_ <= 6, "Token: buy burn fee must range between 0% and 6%");
        require(buyLiquidityFee_ >= 0 && buyLiquidityFee_ <= 6, "Token: buy liquidity fee must range between 0% and 6%");
        require(buyOperationsFee_ >= 0 && buyOperationsFee_ <= 6, "Token: buy operations fee must range between 0% and 6%");
        require((buyBurnFee_ + buyLiquidityFee_ + buyOperationsFee_) <= 10, "Token: total buy fee must range between 0% and 10%");

        buyBurnFee = buyBurnFee_;
        buyLiquidityFee = buyLiquidityFee_;
        buyOperationsFee = buyOperationsFee_;
        buyTotalFees = buyBurnFee_ + buyLiquidityFee_ + buyOperationsFee_;
    }

    function setSellFees(uint256 sellBurnFee_, uint256 sellLiquidityFee_, uint256 sellOperationsFee_) external {
        require(_msgSender() == owner() || _msgSender() == operationsWallet, "Token: caller is not authorised");
        require(sellBurnFee_ >= 0 && sellBurnFee_ <= 6, "Token: sell burn fee must range between 0% and 6%");
        require(sellLiquidityFee_ >= 0 && sellLiquidityFee_ <= 6, "Token: sell liquidity fee must range between 0% and 6%");
        require(sellOperationsFee_ >= 0 && sellOperationsFee_ <= 6, "Token: sell operations fee must range between 0% and 6%");
        require((sellBurnFee_ + sellLiquidityFee_ + sellOperationsFee_) <= 10, "Token: total sell fee must range between 0% and 10%");

        sellBurnFee = sellBurnFee_;
        sellLiquidityFee = sellLiquidityFee_;
        sellOperationsFee = sellOperationsFee_;
        sellTotalFees = sellBurnFee_ + sellLiquidityFee_ + sellOperationsFee_;
    }

    function forceSwap(uint256 tokensAmount_) external {
        require(_msgSender() == owner() || _msgSender() == operationsWallet, "Token: caller is not authorised");

        uint256 contractTokenBalance = balanceOf(address(this));

        require(contractTokenBalance > 0, "Token: contract token balance must be above zero");
        require(tokensAmount_ <= contractTokenBalance, "Token: swap amount exceeds contract balance");

        _swapTokens(tokensAmount_);
    }

    function withdrawCurrency() external onlyOwner {
        uint256 currencyBalance = address(this).balance;

        require(currencyBalance > 0, "Token: contract currency balance must be above 0");

        (bool success, ) = _msgSender().call{value: currencyBalance}("");
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Token: transfer amount must be greater than zero");

        // Anti-bot
        if (antiBotEnabled) {
            require(!_bots[to] && !_bots[from], "Token: address blacklisted");
        }

        // Trading enabled
        if (!_tradingEnabled) {
            require(isExcludedFromFees(from) || isExcludedFromFees(to), "Token: trading not yet enabled");
        }

        if (limitsEnabled && !_isSwapLocked && from != owner() && to != owner() && to != address(0) && to != address(0xdead)) {
            // Blacklist bots
            if ((block.timestamp <= (_launchTime + _botSeconds) || block.number <= (_launchBlock + _botBlocks)) && to != address(this) && to != dexPair && to != address(dexRouter)) {
                _bots[to] = true;

                totalBots++;
            }

            // Block transfer restrictions
            if (transferDelayEnabled && from != address(this) && to != dexPair && to != address(dexRouter)) {
                require(_lastTransferBlock[tx.origin] < (block.number - _transferDelayBlocks) && _lastTransferBlock[to] < (block.number - _transferDelayBlocks), "Token: transfer delay enabled");

                _lastTransferBlock[tx.origin] = block.number;
                _lastTransferBlock[to] = block.number;
            }

            // Max TX and max wallet
            if (from == dexPair && !isExcludedFromMaxTx(to)) {
                // Buy
                require(amount <= _maxTxAmount, "Token: buy amount exceeds max TX limit");
                require(amount + balanceOf(to) <= _maxWalletAmount, "Token: amount would exceed max wallet limit");
            } else if (to == dexPair && !isExcludedFromMaxTx(from)) {
                // Sell
                require(amount <= _maxTxAmount, "Token: sell amount exceeds max TX limit");
            } else if (!isExcludedFromMaxTx(to)) {
                // Transfer
                require(amount + balanceOf(to) <= _maxWalletAmount, "Token: amount would exceed max wallet limit");
            }
        }

        if (swapEnabled && !_isSwapLocked && balanceOf(address(this)) > swapTokensAmount && from != dexPair && !isExcludedFromFees(from) && !isExcludedFromFees(to)) {
            _swapTokens(swapTokensAmount);
        }

        bool takeFees = !_isSwapLocked;

        // Skip fees for excluded
        if (isExcludedFromFees(from) || isExcludedFromFees(to) || to == address(dexRouter)) {
            takeFees = false;
        }
 
        uint256 totalAmount = amount;
        uint256 totalFees = 0;

        // Take fees
        if (takeFees) {
            if (to == dexPair && sellTotalFees > 0) {
                // Sell
                totalFees = (totalAmount * sellTotalFees) / 100;
                _tokensForBurn += (totalFees * sellBurnFee) / sellTotalFees;
                _tokensForLiquidity += (totalFees * sellLiquidityFee) / sellTotalFees;
                _tokensForOperations += (totalFees * sellOperationsFee) / sellTotalFees;
            } else if (from == dexPair && buyTotalFees > 0) {
                // Buy
                totalFees = (totalAmount * buyTotalFees) / 100;
                _tokensForBurn += (totalFees * buyBurnFee) / buyTotalFees;
                _tokensForLiquidity += (totalFees * buyLiquidityFee) / buyTotalFees;
                _tokensForOperations += (totalFees * buyOperationsFee) / buyTotalFees;
            }
 
            if (totalFees > 0) {
                super._transfer(from, address(this), totalFees);

                totalAmount -= totalFees;
            }
        }

        super._transfer(from, to, totalAmount);
    }

    function _swapTokens(uint256 tokensAmount) private lockSwap {
        uint256 totalTokensToSwap = _tokensForBurn + _tokensForLiquidity + _tokensForOperations;

        if (tokensAmount == 0 || totalTokensToSwap == 0) return;

        uint256 burnTokens = (tokensAmount * _tokensForBurn) / totalTokensToSwap;
        uint256 operationsTokens = (tokensAmount * _tokensForOperations) / totalTokensToSwap;
        uint256 halfLiquidityTokens = ((tokensAmount - burnTokens) - operationsTokens) / 2;

        _swapTokensForCurrency((tokensAmount - burnTokens) - halfLiquidityTokens);
 
        uint256 currencyBalance = address(this).balance;
        uint256 currencyForOperations = (currencyBalance * _tokensForOperations) / totalTokensToSwap;
        uint256 currencyForLiquidity = currencyBalance - currencyForOperations;

        if (halfLiquidityTokens > 0 && currencyForLiquidity > 0) {
            _addLiquidity(halfLiquidityTokens, currencyForLiquidity);
        }

        (bool success, ) = address(operationsWallet).call{value: address(this).balance}("");

        if (burnTokens > 0) {
            super._transfer(address(this), address(0xdead), burnTokens);
        }

        _tokensForBurn = 0;
        _tokensForLiquidity = 0;
        _tokensForOperations = 0;
    }

    function _swapTokensForCurrency(uint256 tokensAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();
 
        _approve(address(this), address(dexRouter), tokensAmount);
 
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokensAmount, 0, path, address(this), block.timestamp);
    }

    function _addLiquidity(uint256 tokensAmount, uint256 currencyAmount) private {
        _approve(address(this), address(dexRouter), tokensAmount);

        dexRouter.addLiquidityETH{value: currencyAmount}(address(this), tokensAmount, 0, 0, address(0xdead), block.timestamp);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"operationsWallet_","type":"address"}],"stateMutability":"payable","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":"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":[{"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":[],"name":"antiBotEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludeAddress_","type":"address"},{"internalType":"bool","name":"isExcluded_","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludeAddress_","type":"address"},{"internalType":"bool","name":"isExcluded_","type":"bool"}],"name":"excludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokensAmount_","type":"uint256"}],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"botAddress_","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludeAddress_","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludeAddress_","type":"address"}],"name":"isExcludedFromMaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"botBlocks_","type":"uint256"},{"internalType":"uint256","name":"botSeconds_","type":"uint256"},{"internalType":"uint256","name":"maxTxAmount_","type":"uint256"},{"internalType":"uint256","name":"maxWalletAmount_","type":"uint256"},{"internalType":"address[]","name":"botAddresses_","type":"address[]"}],"name":"lightTheFire","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"antiBotEnabled_","type":"bool"}],"name":"setAntiBotEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"botAddresses_","type":"address[]"},{"internalType":"bool","name":"isBlacklisting_","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyBurnFee_","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityFee_","type":"uint256"},{"internalType":"uint256","name":"buyOperationsFee_","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount_","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount_","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operationsWallet_","type":"address"}],"name":"setOperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellBurnFee_","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityFee_","type":"uint256"},{"internalType":"uint256","name":"sellOperationsFee_","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAmount_","type":"uint256"}],"name":"setSwapTokensAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBots","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawCurrency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526008805463ffffffff60a01b1916600160b81b179055600260098190556003600e819055600f8290556010819055906200003f908262000670565b6200004b919062000670565b601155600360128190556002601381905560148290556200006d908262000670565b62000079919062000670565b6015556000601681905560178190556018819055601b8054600160ff199182168117909255601d839055601e839055601f91909155600a6020556021919091556022805490911690556040516200439938819003908190833981016040819052620000e4916200052a565b604080518082018252600c81526b53686962656c6c6120496e7560a01b60208083019182528351808501909452600884526753484942454c4c4160c01b908401528151919291620001389160039162000484565b5080516200014e90600490602084019062000484565b5050506200016b62000165620002b560201b60201c565b620002b9565b60004711620001975760405162461bcd60e51b81526004016200018e906200059c565b60405180910390fd5b4660381415620001cd57600680546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e1790556200024a565b46606114156200020357600680546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c31790556200024a565b4660011480620002135750466004145b156200024557600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556200024a565b600080fd5b600654620002669030906001600160a01b03166000196200030b565b600880546001600160a01b0319166001600160a01b03831617905562000298306a012dc167a04a6c38a00000620003c7565b620002ae81690fe1c215e8f838e00000620003c7565b50620006d2565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316620003345760405162461bcd60e51b81526004016200018e90620005ec565b6001600160a01b0382166200035d5760405162461bcd60e51b81526004016200018e906200055a565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620003ba90859062000667565b60405180910390a3505050565b6001600160a01b038216620003f05760405162461bcd60e51b81526004016200018e9062000630565b806002600082825462000404919062000670565b90915550506001600160a01b038216600090815260208190526040812080548392906200043390849062000670565b90915550506040516001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200047890859062000667565b60405180910390a35050565b828054620004929062000695565b90600052602060002090601f016020900481019282620004b6576000855562000501565b82601f10620004d157805160ff191683800117855562000501565b8280016001018555821562000501579182015b8281111562000501578251825591602001919060010190620004e4565b506200050f92915062000513565b5090565b5b808211156200050f576000815560010162000514565b6000602082840312156200053c578081fd5b81516001600160a01b038116811462000553578182fd5b9392505050565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526030908201527f546f6b656e3a20636f6e74726163742063757272656e63792062616c616e636560408201526f0206d7573742062652061626f766520360841b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b600082198211156200069057634e487b7160e01b81526011600452602481fd5b500190565b600281046001821680620006aa57607f821691505b60208210811415620006cc57634e487b7160e01b600052602260045260246000fd5b50919050565b613cb780620006e26000396000f3fe6080604052600436106102975760003560e01c8063715018a61161015a578063d8c6404b116100c1578063ee5ecc891161007a578063ee5ecc8914610748578063f11a24d314610768578063f242ab411461077d578063f637434214610792578063f928364c146107a7578063fd72e22a146107bc5761029e565b8063d8c6404b146106a9578063dd62ed3e146106be578063e71dc3f5146106de578063e884f260146106f3578063ea65bad914610708578063ec28438a146107285761029e565b8063a9059cbb11610113578063a9059cbb1461060a578063adb873bd1461062a578063c02466681461063f578063c876d0b91461065f578063d4c989d314610674578063d85ba063146106945761029e565b8063715018a61461056b5780638a6918f5146105805780638da5cb5b146105a057806395d89b41146105b55780639c0db5f3146105ca578063a457c2d7146105ea5761029e565b80633bbac579116101fe5780635f1c3182116101b75780635f1c3182146104d7578063658c27a9146104ec57806365b99f631461050c5780636a486a8e146105215780636ddd17131461053657806370a082311461054b5761029e565b80633bbac5791461043857806343e716fe146104585780634f77f6c0146104785780634fbee1931461048d57806356b4bb6e146104ad5780635a139dd4146104c25761029e565b806321cd0c401161025057806321cd0c401461038157806323b872dd146103a157806327a14fc2146103c1578063313ce567146103e15780633582ad231461040357806339509351146104185761029e565b806306fdde03146102a35780630758d924146102ce578063095ea7b3146102f05780630d075d9c1461031d5780630f683e901461033f57806318160ddd1461035f5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b86107d1565b6040516102c59190612ec3565b60405180910390f35b3480156102da57600080fd5b506102e3610863565b6040516102c59190612e36565b3480156102fc57600080fd5b5061031061030b366004612cb9565b610872565b6040516102c59190612eb8565b34801561032957600080fd5b5061033d610338366004612d79565b610894565b005b34801561034b57600080fd5b5061033d61035a366004612d79565b6109c5565b34801561036b57600080fd5b50610374610aed565b6040516102c59190613ad0565b34801561038d57600080fd5b5061033d61039c366004612d29565b610af3565b3480156103ad57600080fd5b506103106103bc366004612c4c565b610b6a565b3480156103cd57600080fd5b5061033d6103dc366004612d61565b610b98565b3480156103ed57600080fd5b506103f6610c35565b6040516102c59190613b49565b34801561040f57600080fd5b50610310610c3a565b34801561042457600080fd5b50610310610433366004612cb9565b610c4a565b34801561044457600080fd5b50610310610453366004612bd5565b610c76565b34801561046457600080fd5b5061033d610473366004612d61565b610c98565b34801561048457600080fd5b50610374610dae565b34801561049957600080fd5b506103106104a8366004612bd5565b610db4565b3480156104b957600080fd5b50610374610dd2565b3480156104ce57600080fd5b50610374610dd8565b3480156104e357600080fd5b50610374610dde565b3480156104f857600080fd5b50610310610507366004612bd5565b610de4565b34801561051857600080fd5b5061033d610e02565b34801561052d57600080fd5b50610374610ec8565b34801561054257600080fd5b50610310610ece565b34801561055757600080fd5b50610374610566366004612bd5565b610ede565b34801561057757600080fd5b5061033d610ef9565b34801561058c57600080fd5b5061033d61059b366004612dd1565b610f44565b3480156105ac57600080fd5b506102e361141a565b3480156105c157600080fd5b506102b8611429565b3480156105d657600080fd5b5061033d6105e5366004612ce4565b611438565b3480156105f657600080fd5b50610310610605366004612cb9565b61179d565b34801561061657600080fd5b50610310610625366004612cb9565b6117e5565b34801561063657600080fd5b506103746117fd565b34801561064b57600080fd5b5061033d61065a366004612c8c565b611803565b34801561066b57600080fd5b50610310611925565b34801561068057600080fd5b5061033d61068f366004612c8c565b611935565b3480156106a057600080fd5b50610374611a3d565b3480156106b557600080fd5b50610310611a43565b3480156106ca57600080fd5b506103746106d9366004612c14565b611a4c565b3480156106ea57600080fd5b50610374611a77565b3480156106ff57600080fd5b5061033d611a7d565b34801561071457600080fd5b5061033d610723366004612d61565b611af4565b34801561073457600080fd5b5061033d610743366004612d61565b611bb2565b34801561075457600080fd5b5061033d610763366004612bd5565b611c5b565b34801561077457600080fd5b50610374611d56565b34801561078957600080fd5b506102e3611d5c565b34801561079e57600080fd5b50610374611d6b565b3480156107b357600080fd5b5061033d611d71565b3480156107c857600080fd5b506102e3611de8565b6060600380546107e090613bdc565b80601f016020809104026020016040519081016040528092919081815260200182805461080c90613bdc565b80156108595780601f1061082e57610100808354040283529160200191610859565b820191906000526020600020905b81548152906001019060200180831161083c57829003601f168201915b5050505050905090565b6006546001600160a01b031681565b60008061087d611df7565b905061088a818585611dfb565b5060019392505050565b61089c61141a565b6001600160a01b03166108ad611df7565b6001600160a01b031614806108dc57506008546001600160a01b03166108d1611df7565b6001600160a01b0316145b6109015760405162461bcd60e51b81526004016108f890613230565b60405180910390fd5b60068311156109225760405162461bcd60e51b81526004016108f8906132e9565b60068211156109435760405162461bcd60e51b81526004016108f89061353f565b60068111156109645760405162461bcd60e51b81526004016108f890613663565b600a816109718486613b57565b61097b9190613b57565b11156109995760405162461bcd60e51b81526004016108f890612f9f565b600e839055600f8290556010819055806109b38385613b57565b6109bd9190613b57565b601155505050565b6109cd61141a565b6001600160a01b03166109de611df7565b6001600160a01b03161480610a0d57506008546001600160a01b0316610a02611df7565b6001600160a01b0316145b610a295760405162461bcd60e51b81526004016108f890613230565b6006831115610a4a5760405162461bcd60e51b81526004016108f890613594565b6006821115610a6b5760405162461bcd60e51b81526004016108f8906136fe565b6006811115610a8c5760405162461bcd60e51b81526004016108f89061342c565b600a81610a998486613b57565b610aa39190613b57565b1115610ac15760405162461bcd60e51b81526004016108f8906133d9565b60128390556013829055601481905580610adb8385613b57565b610ae59190613b57565b601555505050565b60025490565b610afb61141a565b6001600160a01b0316610b0c611df7565b6001600160a01b03161480610b3b57506008546001600160a01b0316610b30611df7565b6001600160a01b0316145b610b575760405162461bcd60e51b81526004016108f890613230565b601b805460ff1916911515919091179055565b600080610b75611df7565b9050610b82858285611eaf565b610b8d858585611ef9565b506001949350505050565b610ba0611df7565b6001600160a01b0316610bb161141a565b6001600160a01b031614610bd75760405162461bcd60e51b81526004016108f890613489565b670de0b6b3a76400006064610bea610aed565b610bf49190613b6f565b610bfe9190613b6f565b811015610c1d5760405162461bcd60e51b81526004016108f8906131e5565b610c2f81670de0b6b3a7640000613b8f565b600c5550565b601290565b600854600160a81b900460ff1681565b600080610c55611df7565b905061088a818585610c678589611a4c565b610c719190613b57565b611dfb565b6001600160a01b0381166000908152601c602052604090205460ff165b919050565b610ca061141a565b6001600160a01b0316610cb1611df7565b6001600160a01b03161480610ce057506008546001600160a01b0316610cd5611df7565b6001600160a01b0316145b610cfc5760405162461bcd60e51b81526004016108f890613230565b670de0b6b3a7640000620186a0610d11610aed565b610d1c906005613b8f565b610d269190613b6f565b610d309190613b6f565b811015610d4f5760405162461bcd60e51b81526004016108f890613754565b670de0b6b3a76400006103e8610d63610aed565b610d6d9190613b6f565b610d779190613b6f565b811115610d965760405162461bcd60e51b81526004016108f89061381f565b610da881670de0b6b3a7640000613b8f565b600d5550565b60145481565b6001600160a01b031660009081526019602052604090205460ff1690565b60215481565b60105481565b600d5481565b6001600160a01b03166000908152601a602052604090205460ff1690565b610e0a611df7565b6001600160a01b0316610e1b61141a565b6001600160a01b031614610e415760405162461bcd60e51b81526004016108f890613489565b4780610e5f5760405162461bcd60e51b81526004016108f890613389565b6000610e69611df7565b6001600160a01b031682604051610e7f90612e33565b60006040518083038185875af1925050503d8060008114610ebc576040519150601f19603f3d011682016040523d82523d6000602084013e610ec1565b606091505b5050505050565b60155481565b600854600160a01b900460ff1681565b6001600160a01b031660009081526020819052604090205490565b610f01611df7565b6001600160a01b0316610f1261141a565b6001600160a01b031614610f385760405162461bcd60e51b81526004016108f890613489565b610f4260006125f4565b565b610f4c611df7565b6001600160a01b0316610f5d61141a565b6001600160a01b031614610f835760405162461bcd60e51b81526004016108f890613489565b600854600160b01b900460ff1615610fad5760405162461bcd60e51b81526004016108f89061362c565b6003851115610fce5760405162461bcd60e51b81526004016108f890613149565b600a8410158015610fe0575060788411155b610ffc5760405162461bcd60e51b81526004016108f890613339565b6000815111801561100f575060c8815111155b61102b5760405162461bcd60e51b81526004016108f890613937565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561107957600080fd5b505afa15801561108d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b19190612bf8565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111469190612bf8565b6040518363ffffffff1660e01b8152600401611163929190612e4a565b602060405180830381600087803b15801561117d57600080fd5b505af1158015611191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b59190612bf8565b600780546001600160a01b0319166001600160a01b03929092169190911790556111e76111e061141a565b6001611803565b6111f2306001611803565b6111ff61dead6001611803565b61121161120a61141a565b6001611935565b61121c306001611935565b61122961dead6001611935565b600654611240906001600160a01b03166001611935565b600754611257906001600160a01b03166001611935565b6006546001600160a01b031663f305d719473061127381610ede565b60008061127e61141a565b426040518863ffffffff1660e01b81526004016112a096959493929190612e7d565b6060604051808303818588803b1580156112b957600080fd5b505af11580156112cd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112f29190612da4565b505060075460065460405163095ea7b360e01b81526001600160a01b03928316935063095ea7b39261132c92169060001990600401612e64565b602060405180830381600087803b15801561134657600080fd5b505af115801561135a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137e9190612d45565b5061138a816001611438565b61139383611bb2565b61139c82610b98565b6113d2670de0b6b3a76400006127106113b3610aed565b6113be906005613b8f565b6113c89190613b6f565b6104739190613b6f565b505042601d555043601e55601f919091556020556008805460ff60b01b1960ff60a81b1960ff60a01b19909216600160a01b1791909116600160a81b1716600160b01b179055565b6005546001600160a01b031690565b6060600480546107e090613bdc565b61144061141a565b6001600160a01b0316611451611df7565b6001600160a01b0316148061148057506008546001600160a01b0316611475611df7565b6001600160a01b0316145b61149c5760405162461bcd60e51b81526004016108f890613230565b600082511180156114af575060c8825111155b6114cb5760405162461bcd60e51b81526004016108f890613937565b8080156114e15750600854600160b01b900460ff165b1561151457601d546114f590610258613b57565b4211156115145760405162461bcd60e51b81526004016108f890613a5f565b60005b825181101561179857818015611687575061153061141a565b6001600160a01b031683828151811061155957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031614806115ae5750306001600160a01b031683828151811061159b57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316145b806115f3575061dead6001600160a01b03168382815181106115e057634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316145b8061163d575060075483516001600160a01b039091169084908390811061162a57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316145b80611687575060065483516001600160a01b039091169084908390811061167457634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316145b1561169157611786565b811515601c60008584815181106116b857634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16151514156116ec57611786565b81601c600085848151811061171157634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508115611770576021805490600061176683613c17565b9190505550611786565b6021805490600061178083613bc5565b91905055505b8061179081613c17565b915050611517565b505050565b6000806117a8611df7565b905060006117b68286611a4c565b9050838110156117d85760405162461bcd60e51b81526004016108f890613a1a565b610b8d8286868403611dfb565b6000806117f0611df7565b905061088a818585611ef9565b60125481565b61180b611df7565b6001600160a01b031661181c61141a565b6001600160a01b0316146118425760405162461bcd60e51b81526004016108f890613489565b8015611895576006546001600160a01b0383811691161480159061187457506007546001600160a01b03838116911614155b6118905760405162461bcd60e51b81526004016108f890613033565b6118fa565b61189d61141a565b6001600160a01b0316826001600160a01b0316141580156118c757506001600160a01b0382163014155b80156118de57506001600160a01b03821661dead14155b6118fa5760405162461bcd60e51b81526004016108f890613033565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b600854600160b81b900460ff1681565b61193d611df7565b6001600160a01b031661194e61141a565b6001600160a01b0316146119745760405162461bcd60e51b81526004016108f890613489565b80611a125761198161141a565b6001600160a01b0316826001600160a01b0316141580156119ab57506001600160a01b0382163014155b80156119c257506001600160a01b03821661dead14155b80156119dc57506006546001600160a01b03838116911614155b80156119f657506007546001600160a01b03838116911614155b611a125760405162461bcd60e51b81526004016108f8906138a4565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b60115481565b601b5460ff1681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600e5481565b611a85611df7565b6001600160a01b0316611a9661141a565b6001600160a01b031614611abc5760405162461bcd60e51b81526004016108f890613489565b600854600160b81b900460ff16611ae55760405162461bcd60e51b81526004016108f890612f16565b6008805460ff60b81b19169055565b611afc61141a565b6001600160a01b0316611b0d611df7565b6001600160a01b03161480611b3c57506008546001600160a01b0316611b31611df7565b6001600160a01b0316145b611b585760405162461bcd60e51b81526004016108f890613230565b6000611b6330610ede565b905060008111611b855760405162461bcd60e51b81526004016108f89061307c565b80821115611ba55760405162461bcd60e51b81526004016108f890613267565b611bae82612646565b5050565b611bba611df7565b6001600160a01b0316611bcb61141a565b6001600160a01b031614611bf15760405162461bcd60e51b81526004016108f890613489565b670de0b6b3a7640000612710611c05610aed565b611c1090604b613b8f565b611c1a9190613b6f565b611c249190613b6f565b811015611c435760405162461bcd60e51b81526004016108f8906134f5565b611c5581670de0b6b3a7640000613b8f565b600b5550565b611c63611df7565b6001600160a01b0316611c7461141a565b6001600160a01b031614611c9a5760405162461bcd60e51b81526004016108f890613489565b6001600160a01b038116611cc05760405162461bcd60e51b81526004016108f8906138ef565b600854611cd5906001600160a01b0316610db4565b15611cf157600854611cf1906001600160a01b03166000611803565b600854611d06906001600160a01b0316610de4565b15611d2257600854611d22906001600160a01b03166000611935565b600880546001600160a01b0319166001600160a01b038316179055611d48816001611803565b611d53816001611935565b50565b600f5481565b6007546001600160a01b031681565b60135481565b611d79611df7565b6001600160a01b0316611d8a61141a565b6001600160a01b031614611db05760405162461bcd60e51b81526004016108f890613489565b600854600160a81b900460ff16611dd95760405162461bcd60e51b81526004016108f8906137e8565b6008805460ff60a81b19169055565b6008546001600160a01b031681565b3390565b6001600160a01b038316611e215760405162461bcd60e51b81526004016108f8906137a4565b6001600160a01b038216611e475760405162461bcd60e51b81526004016108f890612ff1565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611ea2908590613ad0565b60405180910390a3505050565b6000611ebb8484611a4c565b90506000198114611ef35781811015611ee65760405162461bcd60e51b81526004016108f8906130cc565b611ef38484848403611dfb565b50505050565b6001600160a01b038316611f1f5760405162461bcd60e51b81526004016108f8906136b9565b6001600160a01b038216611f455760405162461bcd60e51b81526004016108f890612f5c565b60008111611f655760405162461bcd60e51b81526004016108f890613195565b601b5460ff1615611fce576001600160a01b0382166000908152601c602052604090205460ff16158015611fb257506001600160a01b0383166000908152601c602052604090205460ff16155b611fce5760405162461bcd60e51b81526004016108f8906134be565b600854600160b01b900460ff1661201357611fe883610db4565b80611ff75750611ff782610db4565b6120135760405162461bcd60e51b81526004016108f89061386d565b600854600160a81b900460ff16801561202f575060225460ff16155b8015612054575061203e61141a565b6001600160a01b0316836001600160a01b031614155b8015612079575061206361141a565b6001600160a01b0316826001600160a01b031614155b801561208d57506001600160a01b03821615155b80156120a457506001600160a01b03821661dead14155b1561235257602054601d546120b99190613b57565b421115806120d65750601f54601e546120d29190613b57565b4311155b80156120eb57506001600160a01b0382163014155b801561210557506007546001600160a01b03838116911614155b801561211f57506006546001600160a01b03838116911614155b1561215b576001600160a01b0382166000908152601c60205260408120805460ff19166001179055602180549161215583613c17565b91905055505b600854600160b81b900460ff16801561217d57506001600160a01b0383163014155b801561219757506007546001600160a01b03838116911614155b80156121b157506006546001600160a01b03838116911614155b15612244576009546121c39043613bae565b326000908152600a602052604090205410801561220357506009546121e89043613bae565b6001600160a01b0383166000908152600a6020526040902054105b61221f5760405162461bcd60e51b81526004016108f8906132b2565b326000908152600a602052604080822043908190556001600160a01b03851683529120555b6007546001600160a01b038481169116148015612267575061226582610de4565b155b156122c757600b5481111561228e5760405162461bcd60e51b81526004016108f890613989565b600c5461229a83610ede565b6122a49083613b57565b11156122c25760405162461bcd60e51b81526004016108f8906139cf565b612352565b6007546001600160a01b0383811691161480156122ea57506122e883610de4565b155b1561231157600b548111156122c25760405162461bcd60e51b81526004016108f8906135e5565b61231a82610de4565b61235257600c5461232a83610ede565b6123349083613b57565b11156123525760405162461bcd60e51b81526004016108f8906139cf565b600854600160a01b900460ff16801561236e575060225460ff16155b80156123835750600d5461238130610ede565b115b801561239d57506007546001600160a01b03848116911614155b80156123af57506123ad83610db4565b155b80156123c157506123bf82610db4565b155b156123d1576123d1600d54612646565b60225460ff16156123e184610db4565b806123f057506123f083610db4565b8061240857506006546001600160a01b038481169116145b15612411575060005b81600082156125e1576007546001600160a01b03868116911614801561243957506000601554115b156124f15760646015548361244e9190613b8f565b6124589190613b6f565b90506015546012548261246b9190613b8f565b6124759190613b6f565b601660008282546124869190613b57565b909155505060155460135461249b9083613b8f565b6124a59190613b6f565b601860008282546124b69190613b57565b90915550506015546014546124cb9083613b8f565b6124d59190613b6f565b601760008282546124e69190613b57565b909155506125c39050565b6007546001600160a01b03878116911614801561251057506000601154115b156125c3576064601154836125259190613b8f565b61252f9190613b6f565b9050601154600e54826125429190613b8f565b61254c9190613b6f565b6016600082825461255d9190613b57565b9091555050601154600f546125729083613b8f565b61257c9190613b6f565b6018600082825461258d9190613b57565b90915550506011546010546125a29083613b8f565b6125ac9190613b6f565b601760008282546125bd9190613b57565b90915550505b80156125e1576125d48630836127f1565b6125de8183613bae565b91505b6125ec8686846127f1565b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6022805460ff191660011790556017546018546016546000929161266991613b57565b6126739190613b57565b9050811580612680575080155b1561268b57506127e4565b6000816016548461269c9190613b8f565b6126a69190613b6f565b9050600082601754856126b99190613b8f565b6126c39190613b6f565b905060006002826126d48588613bae565b6126de9190613bae565b6126e89190613b6f565b9050612707816126f88588613bae565b6127029190613bae565b612905565b6017544790600090869061271b9084613b8f565b6127259190613b6f565b905060006127338284613bae565b90506000841180156127455750600081115b15612754576127548482612a82565b6008546040516000916001600160a01b031690479061277290612e33565b60006040518083038185875af1925050503d80600081146127af576040519150601f19603f3d011682016040523d82523d6000602084013e6127b4565b606091505b509091505086156127cc576127cc3061dead896127f1565b50506000601681905560188190556017555050505050505b506022805460ff19169055565b6001600160a01b0383166128175760405162461bcd60e51b81526004016108f8906136b9565b6001600160a01b03821661283d5760405162461bcd60e51b81526004016108f890612f5c565b6001600160a01b038316600090815260208190526040902054818110156128765760405162461bcd60e51b81526004016108f890613103565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906128ad908490613b57565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128f79190613ad0565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061294857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561299c57600080fd5b505afa1580156129b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d49190612bf8565b816001815181106129f557634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600654612a1b9130911684611dfb565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612a54908590600090869030904290600401613ad9565b600060405180830381600087803b158015612a6e57600080fd5b505af11580156125ec573d6000803e3d6000fd5b600654612a9a9030906001600160a01b031684611dfb565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d719908390612ad99030908790600090819061dead904290600401612e7d565b6060604051808303818588803b158015612af257600080fd5b505af1158015612b06573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ec19190612da4565b8035610c9381613c5e565b600082601f830112612b46578081fd5b8135602067ffffffffffffffff80831115612b6357612b63613c48565b81830260405183828201018181108482111715612b8257612b82613c48565b60405284815283810192508684018288018501891015612ba0578687fd5b8692505b85831015612bc957612bb581612b2b565b845292840192600192909201918401612ba4565b50979650505050505050565b600060208284031215612be6578081fd5b8135612bf181613c5e565b9392505050565b600060208284031215612c09578081fd5b8151612bf181613c5e565b60008060408385031215612c26578081fd5b8235612c3181613c5e565b91506020830135612c4181613c5e565b809150509250929050565b600080600060608486031215612c60578081fd5b8335612c6b81613c5e565b92506020840135612c7b81613c5e565b929592945050506040919091013590565b60008060408385031215612c9e578182fd5b8235612ca981613c5e565b91506020830135612c4181613c73565b60008060408385031215612ccb578182fd5b8235612cd681613c5e565b946020939093013593505050565b60008060408385031215612cf6578182fd5b823567ffffffffffffffff811115612d0c578283fd5b612d1885828601612b36565b9250506020830135612c4181613c73565b600060208284031215612d3a578081fd5b8135612bf181613c73565b600060208284031215612d56578081fd5b8151612bf181613c73565b600060208284031215612d72578081fd5b5035919050565b600080600060608486031215612d8d578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612db8578283fd5b8351925060208401519150604084015190509250925092565b600080600080600060a08688031215612de8578081fd5b85359450602086013593506040860135925060608601359150608086013567ffffffffffffffff811115612e1a578182fd5b612e2688828901612b36565b9150509295509295909350565b90565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b81811015612eef57858101830151858201604001528201612ed3565b81811115612f005783604083870101525b50601f01601f1916929092016040019392505050565b60208082526026908201527f546f6b656e3a207472616e736665722064656c617920616c72656164792064696040820152651cd8589b195960d21b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526032908201527f546f6b656e3a20746f74616c2062757920666565206d7573742072616e6765206040820152716265747765656e20302520616e642031302560701b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526029908201527f546f6b656e3a206578636c756465642066726f6d2066656573206164647265736040820152681cc81a5b9d985b1a5960ba1b606082015260800190565b60208082526030908201527f546f6b656e3a20636f6e747261637420746f6b656e2062616c616e6365206d7560408201526f73742062652061626f7665207a65726f60801b606082015260800190565b6020808252601d908201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604082015260600190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b6020808252602c908201527f546f6b656e3a20626f7420626c6f636b73206d7573742072616e67652062657460408201526b7765656e203020616e64203360a01b606082015260800190565b60208082526030908201527f546f6b656e3a207472616e7366657220616d6f756e74206d757374206265206760408201526f726561746572207468616e207a65726f60801b606082015260800190565b6020808252602b908201527f546f6b656e3a206d61782077616c6c657420616d6f756e742063616e6e6f742060408201526a62652062656c6f7720312560a81b606082015260800190565b6020808252601f908201527f546f6b656e3a2063616c6c6572206973206e6f7420617574686f726973656400604082015260600190565b6020808252602b908201527f546f6b656e3a207377617020616d6f756e74206578636565647320636f6e747260408201526a6163742062616c616e636560a81b606082015260800190565b6020808252601d908201527f546f6b656e3a207472616e736665722064656c617920656e61626c6564000000604082015260600190565b60208082526030908201527f546f6b656e3a20627579206275726e20666565206d7573742072616e6765206260408201526f65747765656e20302520616e6420362560801b606082015260800190565b60208082526030908201527f546f6b656e3a20626f74207365636f6e6473206d7573742072616e676520626560408201526f0747765656e20313020616e64203132360841b606082015260800190565b60208082526030908201527f546f6b656e3a20636f6e74726163742063757272656e63792062616c616e636560408201526f0206d7573742062652061626f766520360841b606082015260800190565b60208082526033908201527f546f6b656e3a20746f74616c2073656c6c20666565206d7573742072616e6765604082015272206265747765656e20302520616e642031302560681b606082015260800190565b60208082526037908201527f546f6b656e3a2073656c6c206f7065726174696f6e7320666565206d7573742060408201527f72616e6765206265747765656e20302520616e64203625000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601a908201527f546f6b656e3a206164647265737320626c61636b6c6973746564000000000000604082015260600190565b6020808252602a908201527f546f6b656e3a206d617820545820616d6f756e742063616e6e6f742062652062604082015269656c6f7720302e37352560b01b606082015260800190565b60208082526035908201527f546f6b656e3a20627579206c697175696469747920666565206d7573742072616040820152746e6765206265747765656e20302520616e6420362560581b606082015260800190565b60208082526031908201527f546f6b656e3a2073656c6c206275726e20666565206d7573742072616e6765206040820152706265747765656e20302520616e6420362560781b606082015260800190565b60208082526027908201527f546f6b656e3a2073656c6c20616d6f756e742065786365656473206d6178205460408201526616081b1a5b5a5d60ca1b606082015260800190565b6020808252601e908201527f546f6b656e3a2074726164696e6720616c726561647920656e61626c65640000604082015260600190565b60208082526036908201527f546f6b656e3a20627579206f7065726174696f6e7320666565206d7573742072604082015275616e6765206265747765656e20302520616e6420362560501b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526036908201527f546f6b656e3a2073656c6c206c697175696469747920666565206d7573742072604082015275616e6765206265747765656e20302520616e6420362560501b606082015260800190565b60208082526030908201527f546f6b656e3a207377617020746f6b656e7320616d6f756e742063616e6e6f7460408201526f2062652062656c6f7720302e3030352560801b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601e908201527f546f6b656e3a206c696d69747320616c72656164792064697361626c65640000604082015260600190565b6020808252602e908201527f546f6b656e3a207377617020746f6b656e7320616d6f756e742063616e6e6f7460408201526d2062652061626f766520302e312560901b606082015260800190565b6020808252601e908201527f546f6b656e3a2074726164696e67206e6f742079657420656e61626c65640000604082015260600190565b6020808252602b908201527f546f6b656e3a206578636c756465642066726f6d206d6178205458206164647260408201526a195cdcc81a5b9d985b1a5960aa1b606082015260800190565b60208082526028908201527f546f6b656e3a206f7065726174696f6e732077616c6c65742061646472657373604082015267081a5b9d985b1a5960c21b606082015260800190565b60208082526032908201527f546f6b656e3a206e756d626572206f6620626f742061646472657373657320636040820152710616e6e6f742062652061626f7665203230360741b606082015260800190565b60208082526026908201527f546f6b656e3a2062757920616d6f756e742065786365656473206d6178205458604082015265081b1a5b5a5d60d21b606082015260800190565b6020808252602b908201527f546f6b656e3a20616d6f756e7420776f756c6420657863656564206d6178207760408201526a185b1b195d081b1a5b5a5d60aa1b606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b6020808252604b908201527f546f6b656e3a20626f74732063616e206f6e6c7920626520626c61636b6c697360408201527f7465642077697468696e20746865206669727374203130206d696e757465732060608201526a0cce4deda40d8c2eadcc6d60ab1b608082015260a00190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015613b285784516001600160a01b031683529383019391830191600101613b03565b50506001600160a01b03969096166060850152505050608001529392505050565b60ff91909116815260200190565b60008219821115613b6a57613b6a613c32565b500190565b600082613b8a57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615613ba957613ba9613c32565b500290565b600082821015613bc057613bc0613c32565b500390565b600081613bd457613bd4613c32565b506000190190565b600281046001821680613bf057607f821691505b60208210811415613c1157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613c2b57613c2b613c32565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611d5357600080fd5b8015158114611d5357600080fdfea2646970667358221220dce717546c03a0843e2ae71ddc129613365efe2ac0b211b79d15dfd3408ebdbc64736f6c63430008000033000000000000000000000000f8a20652aa5d5bec556d8915b603e243bdac9606

Deployed Bytecode

0x6080604052600436106102975760003560e01c8063715018a61161015a578063d8c6404b116100c1578063ee5ecc891161007a578063ee5ecc8914610748578063f11a24d314610768578063f242ab411461077d578063f637434214610792578063f928364c146107a7578063fd72e22a146107bc5761029e565b8063d8c6404b146106a9578063dd62ed3e146106be578063e71dc3f5146106de578063e884f260146106f3578063ea65bad914610708578063ec28438a146107285761029e565b8063a9059cbb11610113578063a9059cbb1461060a578063adb873bd1461062a578063c02466681461063f578063c876d0b91461065f578063d4c989d314610674578063d85ba063146106945761029e565b8063715018a61461056b5780638a6918f5146105805780638da5cb5b146105a057806395d89b41146105b55780639c0db5f3146105ca578063a457c2d7146105ea5761029e565b80633bbac579116101fe5780635f1c3182116101b75780635f1c3182146104d7578063658c27a9146104ec57806365b99f631461050c5780636a486a8e146105215780636ddd17131461053657806370a082311461054b5761029e565b80633bbac5791461043857806343e716fe146104585780634f77f6c0146104785780634fbee1931461048d57806356b4bb6e146104ad5780635a139dd4146104c25761029e565b806321cd0c401161025057806321cd0c401461038157806323b872dd146103a157806327a14fc2146103c1578063313ce567146103e15780633582ad231461040357806339509351146104185761029e565b806306fdde03146102a35780630758d924146102ce578063095ea7b3146102f05780630d075d9c1461031d5780630f683e901461033f57806318160ddd1461035f5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b86107d1565b6040516102c59190612ec3565b60405180910390f35b3480156102da57600080fd5b506102e3610863565b6040516102c59190612e36565b3480156102fc57600080fd5b5061031061030b366004612cb9565b610872565b6040516102c59190612eb8565b34801561032957600080fd5b5061033d610338366004612d79565b610894565b005b34801561034b57600080fd5b5061033d61035a366004612d79565b6109c5565b34801561036b57600080fd5b50610374610aed565b6040516102c59190613ad0565b34801561038d57600080fd5b5061033d61039c366004612d29565b610af3565b3480156103ad57600080fd5b506103106103bc366004612c4c565b610b6a565b3480156103cd57600080fd5b5061033d6103dc366004612d61565b610b98565b3480156103ed57600080fd5b506103f6610c35565b6040516102c59190613b49565b34801561040f57600080fd5b50610310610c3a565b34801561042457600080fd5b50610310610433366004612cb9565b610c4a565b34801561044457600080fd5b50610310610453366004612bd5565b610c76565b34801561046457600080fd5b5061033d610473366004612d61565b610c98565b34801561048457600080fd5b50610374610dae565b34801561049957600080fd5b506103106104a8366004612bd5565b610db4565b3480156104b957600080fd5b50610374610dd2565b3480156104ce57600080fd5b50610374610dd8565b3480156104e357600080fd5b50610374610dde565b3480156104f857600080fd5b50610310610507366004612bd5565b610de4565b34801561051857600080fd5b5061033d610e02565b34801561052d57600080fd5b50610374610ec8565b34801561054257600080fd5b50610310610ece565b34801561055757600080fd5b50610374610566366004612bd5565b610ede565b34801561057757600080fd5b5061033d610ef9565b34801561058c57600080fd5b5061033d61059b366004612dd1565b610f44565b3480156105ac57600080fd5b506102e361141a565b3480156105c157600080fd5b506102b8611429565b3480156105d657600080fd5b5061033d6105e5366004612ce4565b611438565b3480156105f657600080fd5b50610310610605366004612cb9565b61179d565b34801561061657600080fd5b50610310610625366004612cb9565b6117e5565b34801561063657600080fd5b506103746117fd565b34801561064b57600080fd5b5061033d61065a366004612c8c565b611803565b34801561066b57600080fd5b50610310611925565b34801561068057600080fd5b5061033d61068f366004612c8c565b611935565b3480156106a057600080fd5b50610374611a3d565b3480156106b557600080fd5b50610310611a43565b3480156106ca57600080fd5b506103746106d9366004612c14565b611a4c565b3480156106ea57600080fd5b50610374611a77565b3480156106ff57600080fd5b5061033d611a7d565b34801561071457600080fd5b5061033d610723366004612d61565b611af4565b34801561073457600080fd5b5061033d610743366004612d61565b611bb2565b34801561075457600080fd5b5061033d610763366004612bd5565b611c5b565b34801561077457600080fd5b50610374611d56565b34801561078957600080fd5b506102e3611d5c565b34801561079e57600080fd5b50610374611d6b565b3480156107b357600080fd5b5061033d611d71565b3480156107c857600080fd5b506102e3611de8565b6060600380546107e090613bdc565b80601f016020809104026020016040519081016040528092919081815260200182805461080c90613bdc565b80156108595780601f1061082e57610100808354040283529160200191610859565b820191906000526020600020905b81548152906001019060200180831161083c57829003601f168201915b5050505050905090565b6006546001600160a01b031681565b60008061087d611df7565b905061088a818585611dfb565b5060019392505050565b61089c61141a565b6001600160a01b03166108ad611df7565b6001600160a01b031614806108dc57506008546001600160a01b03166108d1611df7565b6001600160a01b0316145b6109015760405162461bcd60e51b81526004016108f890613230565b60405180910390fd5b60068311156109225760405162461bcd60e51b81526004016108f8906132e9565b60068211156109435760405162461bcd60e51b81526004016108f89061353f565b60068111156109645760405162461bcd60e51b81526004016108f890613663565b600a816109718486613b57565b61097b9190613b57565b11156109995760405162461bcd60e51b81526004016108f890612f9f565b600e839055600f8290556010819055806109b38385613b57565b6109bd9190613b57565b601155505050565b6109cd61141a565b6001600160a01b03166109de611df7565b6001600160a01b03161480610a0d57506008546001600160a01b0316610a02611df7565b6001600160a01b0316145b610a295760405162461bcd60e51b81526004016108f890613230565b6006831115610a4a5760405162461bcd60e51b81526004016108f890613594565b6006821115610a6b5760405162461bcd60e51b81526004016108f8906136fe565b6006811115610a8c5760405162461bcd60e51b81526004016108f89061342c565b600a81610a998486613b57565b610aa39190613b57565b1115610ac15760405162461bcd60e51b81526004016108f8906133d9565b60128390556013829055601481905580610adb8385613b57565b610ae59190613b57565b601555505050565b60025490565b610afb61141a565b6001600160a01b0316610b0c611df7565b6001600160a01b03161480610b3b57506008546001600160a01b0316610b30611df7565b6001600160a01b0316145b610b575760405162461bcd60e51b81526004016108f890613230565b601b805460ff1916911515919091179055565b600080610b75611df7565b9050610b82858285611eaf565b610b8d858585611ef9565b506001949350505050565b610ba0611df7565b6001600160a01b0316610bb161141a565b6001600160a01b031614610bd75760405162461bcd60e51b81526004016108f890613489565b670de0b6b3a76400006064610bea610aed565b610bf49190613b6f565b610bfe9190613b6f565b811015610c1d5760405162461bcd60e51b81526004016108f8906131e5565b610c2f81670de0b6b3a7640000613b8f565b600c5550565b601290565b600854600160a81b900460ff1681565b600080610c55611df7565b905061088a818585610c678589611a4c565b610c719190613b57565b611dfb565b6001600160a01b0381166000908152601c602052604090205460ff165b919050565b610ca061141a565b6001600160a01b0316610cb1611df7565b6001600160a01b03161480610ce057506008546001600160a01b0316610cd5611df7565b6001600160a01b0316145b610cfc5760405162461bcd60e51b81526004016108f890613230565b670de0b6b3a7640000620186a0610d11610aed565b610d1c906005613b8f565b610d269190613b6f565b610d309190613b6f565b811015610d4f5760405162461bcd60e51b81526004016108f890613754565b670de0b6b3a76400006103e8610d63610aed565b610d6d9190613b6f565b610d779190613b6f565b811115610d965760405162461bcd60e51b81526004016108f89061381f565b610da881670de0b6b3a7640000613b8f565b600d5550565b60145481565b6001600160a01b031660009081526019602052604090205460ff1690565b60215481565b60105481565b600d5481565b6001600160a01b03166000908152601a602052604090205460ff1690565b610e0a611df7565b6001600160a01b0316610e1b61141a565b6001600160a01b031614610e415760405162461bcd60e51b81526004016108f890613489565b4780610e5f5760405162461bcd60e51b81526004016108f890613389565b6000610e69611df7565b6001600160a01b031682604051610e7f90612e33565b60006040518083038185875af1925050503d8060008114610ebc576040519150601f19603f3d011682016040523d82523d6000602084013e610ec1565b606091505b5050505050565b60155481565b600854600160a01b900460ff1681565b6001600160a01b031660009081526020819052604090205490565b610f01611df7565b6001600160a01b0316610f1261141a565b6001600160a01b031614610f385760405162461bcd60e51b81526004016108f890613489565b610f4260006125f4565b565b610f4c611df7565b6001600160a01b0316610f5d61141a565b6001600160a01b031614610f835760405162461bcd60e51b81526004016108f890613489565b600854600160b01b900460ff1615610fad5760405162461bcd60e51b81526004016108f89061362c565b6003851115610fce5760405162461bcd60e51b81526004016108f890613149565b600a8410158015610fe0575060788411155b610ffc5760405162461bcd60e51b81526004016108f890613339565b6000815111801561100f575060c8815111155b61102b5760405162461bcd60e51b81526004016108f890613937565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561107957600080fd5b505afa15801561108d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b19190612bf8565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111469190612bf8565b6040518363ffffffff1660e01b8152600401611163929190612e4a565b602060405180830381600087803b15801561117d57600080fd5b505af1158015611191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b59190612bf8565b600780546001600160a01b0319166001600160a01b03929092169190911790556111e76111e061141a565b6001611803565b6111f2306001611803565b6111ff61dead6001611803565b61121161120a61141a565b6001611935565b61121c306001611935565b61122961dead6001611935565b600654611240906001600160a01b03166001611935565b600754611257906001600160a01b03166001611935565b6006546001600160a01b031663f305d719473061127381610ede565b60008061127e61141a565b426040518863ffffffff1660e01b81526004016112a096959493929190612e7d565b6060604051808303818588803b1580156112b957600080fd5b505af11580156112cd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112f29190612da4565b505060075460065460405163095ea7b360e01b81526001600160a01b03928316935063095ea7b39261132c92169060001990600401612e64565b602060405180830381600087803b15801561134657600080fd5b505af115801561135a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137e9190612d45565b5061138a816001611438565b61139383611bb2565b61139c82610b98565b6113d2670de0b6b3a76400006127106113b3610aed565b6113be906005613b8f565b6113c89190613b6f565b6104739190613b6f565b505042601d555043601e55601f919091556020556008805460ff60b01b1960ff60a81b1960ff60a01b19909216600160a01b1791909116600160a81b1716600160b01b179055565b6005546001600160a01b031690565b6060600480546107e090613bdc565b61144061141a565b6001600160a01b0316611451611df7565b6001600160a01b0316148061148057506008546001600160a01b0316611475611df7565b6001600160a01b0316145b61149c5760405162461bcd60e51b81526004016108f890613230565b600082511180156114af575060c8825111155b6114cb5760405162461bcd60e51b81526004016108f890613937565b8080156114e15750600854600160b01b900460ff165b1561151457601d546114f590610258613b57565b4211156115145760405162461bcd60e51b81526004016108f890613a5f565b60005b825181101561179857818015611687575061153061141a565b6001600160a01b031683828151811061155957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031614806115ae5750306001600160a01b031683828151811061159b57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316145b806115f3575061dead6001600160a01b03168382815181106115e057634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316145b8061163d575060075483516001600160a01b039091169084908390811061162a57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316145b80611687575060065483516001600160a01b039091169084908390811061167457634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316145b1561169157611786565b811515601c60008584815181106116b857634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16151514156116ec57611786565b81601c600085848151811061171157634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508115611770576021805490600061176683613c17565b9190505550611786565b6021805490600061178083613bc5565b91905055505b8061179081613c17565b915050611517565b505050565b6000806117a8611df7565b905060006117b68286611a4c565b9050838110156117d85760405162461bcd60e51b81526004016108f890613a1a565b610b8d8286868403611dfb565b6000806117f0611df7565b905061088a818585611ef9565b60125481565b61180b611df7565b6001600160a01b031661181c61141a565b6001600160a01b0316146118425760405162461bcd60e51b81526004016108f890613489565b8015611895576006546001600160a01b0383811691161480159061187457506007546001600160a01b03838116911614155b6118905760405162461bcd60e51b81526004016108f890613033565b6118fa565b61189d61141a565b6001600160a01b0316826001600160a01b0316141580156118c757506001600160a01b0382163014155b80156118de57506001600160a01b03821661dead14155b6118fa5760405162461bcd60e51b81526004016108f890613033565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b600854600160b81b900460ff1681565b61193d611df7565b6001600160a01b031661194e61141a565b6001600160a01b0316146119745760405162461bcd60e51b81526004016108f890613489565b80611a125761198161141a565b6001600160a01b0316826001600160a01b0316141580156119ab57506001600160a01b0382163014155b80156119c257506001600160a01b03821661dead14155b80156119dc57506006546001600160a01b03838116911614155b80156119f657506007546001600160a01b03838116911614155b611a125760405162461bcd60e51b81526004016108f8906138a4565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b60115481565b601b5460ff1681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600e5481565b611a85611df7565b6001600160a01b0316611a9661141a565b6001600160a01b031614611abc5760405162461bcd60e51b81526004016108f890613489565b600854600160b81b900460ff16611ae55760405162461bcd60e51b81526004016108f890612f16565b6008805460ff60b81b19169055565b611afc61141a565b6001600160a01b0316611b0d611df7565b6001600160a01b03161480611b3c57506008546001600160a01b0316611b31611df7565b6001600160a01b0316145b611b585760405162461bcd60e51b81526004016108f890613230565b6000611b6330610ede565b905060008111611b855760405162461bcd60e51b81526004016108f89061307c565b80821115611ba55760405162461bcd60e51b81526004016108f890613267565b611bae82612646565b5050565b611bba611df7565b6001600160a01b0316611bcb61141a565b6001600160a01b031614611bf15760405162461bcd60e51b81526004016108f890613489565b670de0b6b3a7640000612710611c05610aed565b611c1090604b613b8f565b611c1a9190613b6f565b611c249190613b6f565b811015611c435760405162461bcd60e51b81526004016108f8906134f5565b611c5581670de0b6b3a7640000613b8f565b600b5550565b611c63611df7565b6001600160a01b0316611c7461141a565b6001600160a01b031614611c9a5760405162461bcd60e51b81526004016108f890613489565b6001600160a01b038116611cc05760405162461bcd60e51b81526004016108f8906138ef565b600854611cd5906001600160a01b0316610db4565b15611cf157600854611cf1906001600160a01b03166000611803565b600854611d06906001600160a01b0316610de4565b15611d2257600854611d22906001600160a01b03166000611935565b600880546001600160a01b0319166001600160a01b038316179055611d48816001611803565b611d53816001611935565b50565b600f5481565b6007546001600160a01b031681565b60135481565b611d79611df7565b6001600160a01b0316611d8a61141a565b6001600160a01b031614611db05760405162461bcd60e51b81526004016108f890613489565b600854600160a81b900460ff16611dd95760405162461bcd60e51b81526004016108f8906137e8565b6008805460ff60a81b19169055565b6008546001600160a01b031681565b3390565b6001600160a01b038316611e215760405162461bcd60e51b81526004016108f8906137a4565b6001600160a01b038216611e475760405162461bcd60e51b81526004016108f890612ff1565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611ea2908590613ad0565b60405180910390a3505050565b6000611ebb8484611a4c565b90506000198114611ef35781811015611ee65760405162461bcd60e51b81526004016108f8906130cc565b611ef38484848403611dfb565b50505050565b6001600160a01b038316611f1f5760405162461bcd60e51b81526004016108f8906136b9565b6001600160a01b038216611f455760405162461bcd60e51b81526004016108f890612f5c565b60008111611f655760405162461bcd60e51b81526004016108f890613195565b601b5460ff1615611fce576001600160a01b0382166000908152601c602052604090205460ff16158015611fb257506001600160a01b0383166000908152601c602052604090205460ff16155b611fce5760405162461bcd60e51b81526004016108f8906134be565b600854600160b01b900460ff1661201357611fe883610db4565b80611ff75750611ff782610db4565b6120135760405162461bcd60e51b81526004016108f89061386d565b600854600160a81b900460ff16801561202f575060225460ff16155b8015612054575061203e61141a565b6001600160a01b0316836001600160a01b031614155b8015612079575061206361141a565b6001600160a01b0316826001600160a01b031614155b801561208d57506001600160a01b03821615155b80156120a457506001600160a01b03821661dead14155b1561235257602054601d546120b99190613b57565b421115806120d65750601f54601e546120d29190613b57565b4311155b80156120eb57506001600160a01b0382163014155b801561210557506007546001600160a01b03838116911614155b801561211f57506006546001600160a01b03838116911614155b1561215b576001600160a01b0382166000908152601c60205260408120805460ff19166001179055602180549161215583613c17565b91905055505b600854600160b81b900460ff16801561217d57506001600160a01b0383163014155b801561219757506007546001600160a01b03838116911614155b80156121b157506006546001600160a01b03838116911614155b15612244576009546121c39043613bae565b326000908152600a602052604090205410801561220357506009546121e89043613bae565b6001600160a01b0383166000908152600a6020526040902054105b61221f5760405162461bcd60e51b81526004016108f8906132b2565b326000908152600a602052604080822043908190556001600160a01b03851683529120555b6007546001600160a01b038481169116148015612267575061226582610de4565b155b156122c757600b5481111561228e5760405162461bcd60e51b81526004016108f890613989565b600c5461229a83610ede565b6122a49083613b57565b11156122c25760405162461bcd60e51b81526004016108f8906139cf565b612352565b6007546001600160a01b0383811691161480156122ea57506122e883610de4565b155b1561231157600b548111156122c25760405162461bcd60e51b81526004016108f8906135e5565b61231a82610de4565b61235257600c5461232a83610ede565b6123349083613b57565b11156123525760405162461bcd60e51b81526004016108f8906139cf565b600854600160a01b900460ff16801561236e575060225460ff16155b80156123835750600d5461238130610ede565b115b801561239d57506007546001600160a01b03848116911614155b80156123af57506123ad83610db4565b155b80156123c157506123bf82610db4565b155b156123d1576123d1600d54612646565b60225460ff16156123e184610db4565b806123f057506123f083610db4565b8061240857506006546001600160a01b038481169116145b15612411575060005b81600082156125e1576007546001600160a01b03868116911614801561243957506000601554115b156124f15760646015548361244e9190613b8f565b6124589190613b6f565b90506015546012548261246b9190613b8f565b6124759190613b6f565b601660008282546124869190613b57565b909155505060155460135461249b9083613b8f565b6124a59190613b6f565b601860008282546124b69190613b57565b90915550506015546014546124cb9083613b8f565b6124d59190613b6f565b601760008282546124e69190613b57565b909155506125c39050565b6007546001600160a01b03878116911614801561251057506000601154115b156125c3576064601154836125259190613b8f565b61252f9190613b6f565b9050601154600e54826125429190613b8f565b61254c9190613b6f565b6016600082825461255d9190613b57565b9091555050601154600f546125729083613b8f565b61257c9190613b6f565b6018600082825461258d9190613b57565b90915550506011546010546125a29083613b8f565b6125ac9190613b6f565b601760008282546125bd9190613b57565b90915550505b80156125e1576125d48630836127f1565b6125de8183613bae565b91505b6125ec8686846127f1565b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6022805460ff191660011790556017546018546016546000929161266991613b57565b6126739190613b57565b9050811580612680575080155b1561268b57506127e4565b6000816016548461269c9190613b8f565b6126a69190613b6f565b9050600082601754856126b99190613b8f565b6126c39190613b6f565b905060006002826126d48588613bae565b6126de9190613bae565b6126e89190613b6f565b9050612707816126f88588613bae565b6127029190613bae565b612905565b6017544790600090869061271b9084613b8f565b6127259190613b6f565b905060006127338284613bae565b90506000841180156127455750600081115b15612754576127548482612a82565b6008546040516000916001600160a01b031690479061277290612e33565b60006040518083038185875af1925050503d80600081146127af576040519150601f19603f3d011682016040523d82523d6000602084013e6127b4565b606091505b509091505086156127cc576127cc3061dead896127f1565b50506000601681905560188190556017555050505050505b506022805460ff19169055565b6001600160a01b0383166128175760405162461bcd60e51b81526004016108f8906136b9565b6001600160a01b03821661283d5760405162461bcd60e51b81526004016108f890612f5c565b6001600160a01b038316600090815260208190526040902054818110156128765760405162461bcd60e51b81526004016108f890613103565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906128ad908490613b57565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128f79190613ad0565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061294857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561299c57600080fd5b505afa1580156129b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d49190612bf8565b816001815181106129f557634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600654612a1b9130911684611dfb565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612a54908590600090869030904290600401613ad9565b600060405180830381600087803b158015612a6e57600080fd5b505af11580156125ec573d6000803e3d6000fd5b600654612a9a9030906001600160a01b031684611dfb565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d719908390612ad99030908790600090819061dead904290600401612e7d565b6060604051808303818588803b158015612af257600080fd5b505af1158015612b06573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ec19190612da4565b8035610c9381613c5e565b600082601f830112612b46578081fd5b8135602067ffffffffffffffff80831115612b6357612b63613c48565b81830260405183828201018181108482111715612b8257612b82613c48565b60405284815283810192508684018288018501891015612ba0578687fd5b8692505b85831015612bc957612bb581612b2b565b845292840192600192909201918401612ba4565b50979650505050505050565b600060208284031215612be6578081fd5b8135612bf181613c5e565b9392505050565b600060208284031215612c09578081fd5b8151612bf181613c5e565b60008060408385031215612c26578081fd5b8235612c3181613c5e565b91506020830135612c4181613c5e565b809150509250929050565b600080600060608486031215612c60578081fd5b8335612c6b81613c5e565b92506020840135612c7b81613c5e565b929592945050506040919091013590565b60008060408385031215612c9e578182fd5b8235612ca981613c5e565b91506020830135612c4181613c73565b60008060408385031215612ccb578182fd5b8235612cd681613c5e565b946020939093013593505050565b60008060408385031215612cf6578182fd5b823567ffffffffffffffff811115612d0c578283fd5b612d1885828601612b36565b9250506020830135612c4181613c73565b600060208284031215612d3a578081fd5b8135612bf181613c73565b600060208284031215612d56578081fd5b8151612bf181613c73565b600060208284031215612d72578081fd5b5035919050565b600080600060608486031215612d8d578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612db8578283fd5b8351925060208401519150604084015190509250925092565b600080600080600060a08688031215612de8578081fd5b85359450602086013593506040860135925060608601359150608086013567ffffffffffffffff811115612e1a578182fd5b612e2688828901612b36565b9150509295509295909350565b90565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b81811015612eef57858101830151858201604001528201612ed3565b81811115612f005783604083870101525b50601f01601f1916929092016040019392505050565b60208082526026908201527f546f6b656e3a207472616e736665722064656c617920616c72656164792064696040820152651cd8589b195960d21b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526032908201527f546f6b656e3a20746f74616c2062757920666565206d7573742072616e6765206040820152716265747765656e20302520616e642031302560701b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526029908201527f546f6b656e3a206578636c756465642066726f6d2066656573206164647265736040820152681cc81a5b9d985b1a5960ba1b606082015260800190565b60208082526030908201527f546f6b656e3a20636f6e747261637420746f6b656e2062616c616e6365206d7560408201526f73742062652061626f7665207a65726f60801b606082015260800190565b6020808252601d908201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604082015260600190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b6020808252602c908201527f546f6b656e3a20626f7420626c6f636b73206d7573742072616e67652062657460408201526b7765656e203020616e64203360a01b606082015260800190565b60208082526030908201527f546f6b656e3a207472616e7366657220616d6f756e74206d757374206265206760408201526f726561746572207468616e207a65726f60801b606082015260800190565b6020808252602b908201527f546f6b656e3a206d61782077616c6c657420616d6f756e742063616e6e6f742060408201526a62652062656c6f7720312560a81b606082015260800190565b6020808252601f908201527f546f6b656e3a2063616c6c6572206973206e6f7420617574686f726973656400604082015260600190565b6020808252602b908201527f546f6b656e3a207377617020616d6f756e74206578636565647320636f6e747260408201526a6163742062616c616e636560a81b606082015260800190565b6020808252601d908201527f546f6b656e3a207472616e736665722064656c617920656e61626c6564000000604082015260600190565b60208082526030908201527f546f6b656e3a20627579206275726e20666565206d7573742072616e6765206260408201526f65747765656e20302520616e6420362560801b606082015260800190565b60208082526030908201527f546f6b656e3a20626f74207365636f6e6473206d7573742072616e676520626560408201526f0747765656e20313020616e64203132360841b606082015260800190565b60208082526030908201527f546f6b656e3a20636f6e74726163742063757272656e63792062616c616e636560408201526f0206d7573742062652061626f766520360841b606082015260800190565b60208082526033908201527f546f6b656e3a20746f74616c2073656c6c20666565206d7573742072616e6765604082015272206265747765656e20302520616e642031302560681b606082015260800190565b60208082526037908201527f546f6b656e3a2073656c6c206f7065726174696f6e7320666565206d7573742060408201527f72616e6765206265747765656e20302520616e64203625000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601a908201527f546f6b656e3a206164647265737320626c61636b6c6973746564000000000000604082015260600190565b6020808252602a908201527f546f6b656e3a206d617820545820616d6f756e742063616e6e6f742062652062604082015269656c6f7720302e37352560b01b606082015260800190565b60208082526035908201527f546f6b656e3a20627579206c697175696469747920666565206d7573742072616040820152746e6765206265747765656e20302520616e6420362560581b606082015260800190565b60208082526031908201527f546f6b656e3a2073656c6c206275726e20666565206d7573742072616e6765206040820152706265747765656e20302520616e6420362560781b606082015260800190565b60208082526027908201527f546f6b656e3a2073656c6c20616d6f756e742065786365656473206d6178205460408201526616081b1a5b5a5d60ca1b606082015260800190565b6020808252601e908201527f546f6b656e3a2074726164696e6720616c726561647920656e61626c65640000604082015260600190565b60208082526036908201527f546f6b656e3a20627579206f7065726174696f6e7320666565206d7573742072604082015275616e6765206265747765656e20302520616e6420362560501b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526036908201527f546f6b656e3a2073656c6c206c697175696469747920666565206d7573742072604082015275616e6765206265747765656e20302520616e6420362560501b606082015260800190565b60208082526030908201527f546f6b656e3a207377617020746f6b656e7320616d6f756e742063616e6e6f7460408201526f2062652062656c6f7720302e3030352560801b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601e908201527f546f6b656e3a206c696d69747320616c72656164792064697361626c65640000604082015260600190565b6020808252602e908201527f546f6b656e3a207377617020746f6b656e7320616d6f756e742063616e6e6f7460408201526d2062652061626f766520302e312560901b606082015260800190565b6020808252601e908201527f546f6b656e3a2074726164696e67206e6f742079657420656e61626c65640000604082015260600190565b6020808252602b908201527f546f6b656e3a206578636c756465642066726f6d206d6178205458206164647260408201526a195cdcc81a5b9d985b1a5960aa1b606082015260800190565b60208082526028908201527f546f6b656e3a206f7065726174696f6e732077616c6c65742061646472657373604082015267081a5b9d985b1a5960c21b606082015260800190565b60208082526032908201527f546f6b656e3a206e756d626572206f6620626f742061646472657373657320636040820152710616e6e6f742062652061626f7665203230360741b606082015260800190565b60208082526026908201527f546f6b656e3a2062757920616d6f756e742065786365656473206d6178205458604082015265081b1a5b5a5d60d21b606082015260800190565b6020808252602b908201527f546f6b656e3a20616d6f756e7420776f756c6420657863656564206d6178207760408201526a185b1b195d081b1a5b5a5d60aa1b606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b6020808252604b908201527f546f6b656e3a20626f74732063616e206f6e6c7920626520626c61636b6c697360408201527f7465642077697468696e20746865206669727374203130206d696e757465732060608201526a0cce4deda40d8c2eadcc6d60ab1b608082015260a00190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015613b285784516001600160a01b031683529383019391830191600101613b03565b50506001600160a01b03969096166060850152505050608001529392505050565b60ff91909116815260200190565b60008219821115613b6a57613b6a613c32565b500190565b600082613b8a57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615613ba957613ba9613c32565b500290565b600082821015613bc057613bc0613c32565b500390565b600081613bd457613bd4613c32565b506000190190565b600281046001821680613bf057607f821691505b60208210811415613c1157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613c2b57613c2b613c32565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611d5357600080fd5b8015158114611d5357600080fdfea2646970667358221220dce717546c03a0843e2ae71ddc129613365efe2ac0b211b79d15dfd3408ebdbc64736f6c63430008000033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000f8a20652aa5d5bec556d8915b603e243bdac9606

-----Decoded View---------------
Arg [0] : operationsWallet_ (address): 0xF8a20652Aa5D5bEc556d8915B603E243bDAC9606

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f8a20652aa5d5bec556d8915b603e243bdac9606


Deployed Bytecode Sourcemap

6975:17978:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1788:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7042:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2724:205::-;;;;;;;;;;-1:-1:-1;2724:205:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;16322:919::-;;;;;;;;;;-1:-1:-1;16322:919:0;;;;;:::i;:::-;;:::i;:::-;;17249:946;;;;;;;;;;-1:-1:-1;17249:946:0;;;;;:::i;:::-;;:::i;2109:108::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14856:225::-;;;;;;;;;;-1:-1:-1;14856:225:0;;;;;:::i;:::-;;:::i;2937:265::-;;;;;;;;;;-1:-1:-1;2937:265:0;;;;;:::i;:::-;;:::i;12818:251::-;;;;;;;;;;-1:-1:-1;12818:251:0;;;;;:::i;:::-;;:::i;2008:93::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7224:33::-;;;;;;;;;;;;;:::i;3210:242::-;;;;;;;;;;-1:-1:-1;3210:242:0;;;;;:::i;:::-;;:::i;16207:107::-;;;;;;;;;;-1:-1:-1;16207:107:0;;;;;:::i;:::-;;:::i;13077:495::-;;;;;;;;;;-1:-1:-1;13077:495:0;;;;;:::i;:::-;;:::i;7885:36::-;;;;;;;;;;;;;:::i;14106:142::-;;;;;;;;;;-1:-1:-1;14106:142:0;;;;;:::i;:::-;;:::i;8565:28::-;;;;;;;;;;;;;:::i;7678:35::-;;;;;;;;;;;;;:::i;7543:31::-;;;;;;;;;;;;;:::i;14704:144::-;;;;;;;;;;-1:-1:-1;14704:144:0;;;;;:::i;:::-;;:::i;18693:283::-;;;;;;;;;;;;;:::i;7928:81::-;;;;;;;;;;;;;:::i;7186:31::-;;;;;;;;;;;;;:::i;2225:127::-;;;;;;;;;;-1:-1:-1;2225:127:0;;;;;:::i;:::-;;:::i;5993:103::-;;;;;;;;;;;;;:::i;9724:1908::-;;;;;;;;;;-1:-1:-1;9724:1908:0;;;;;:::i;:::-;;:::i;5770:87::-;;;;;;;;;;;;;:::i;1896:104::-;;;;;;;;;;;;;:::i;15089:1110::-;;;;;;;;;;-1:-1:-1;15089:1110:0;;;;;:::i;:::-;;:::i;3460:440::-;;;;;;;;;;-1:-1:-1;3460:440:0;;;;;:::i;:::-;;:::i;2360:197::-;;;;;;;;;;-1:-1:-1;2360:197:0;;;;;:::i;:::-;;:::i;7806:30::-;;;;;;;;;;;;;:::i;13580:518::-;;;;;;;;;;-1:-1:-1;13580:518:0;;;;;:::i;:::-;;:::i;7309:39::-;;;;;;;;;;;;;:::i;14256:440::-;;;;;;;;;;-1:-1:-1;14256:440:0;;;;;:::i;:::-;;:::i;7720:77::-;;;;;;;;;;;;;:::i;8327:33::-;;;;;;;;;;;;;:::i;2565:151::-;;;;;;;;;;-1:-1:-1;2565:151:0;;;;;:::i;:::-;;:::i;7601:29::-;;;;;;;;;;;;;:::i;12381:182::-;;;;;;;;;;;;;:::i;18203:482::-;;;;;;;;;;-1:-1:-1;18203:482:0;;;;;:::i;:::-;;:::i;12571:239::-;;;;;;;;;;-1:-1:-1;12571:239:0;;;;;:::i;:::-;;:::i;11640:574::-;;;;;;;;;;-1:-1:-1;11640:574:0;;;;;:::i;:::-;;:::i;7637:34::-;;;;;;;;;;;;;:::i;7076:22::-;;;;;;;;;;;;;:::i;7843:35::-;;;;;;;;;;;;;:::i;12222:151::-;;;;;;;;;;;;;:::i;7123:31::-;;;;;;;;;;;;;:::i;1788:100::-;1842:13;1875:5;1868:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1788:100;:::o;7042:27::-;;;-1:-1:-1;;;;;7042:27:0;;:::o;2724:205::-;2807:4;2824:13;2840:12;:10;:12::i;:::-;2824:28;;2865:32;2874:5;2881:7;2890:6;2865:8;:32::i;:::-;-1:-1:-1;2917:4:0;;2724:205;-1:-1:-1;;;2724:205:0:o;16322:919::-;16460:7;:5;:7::i;:::-;-1:-1:-1;;;;;16444:23:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;16444:23:0;;:59;;;-1:-1:-1;16487:16:0;;-1:-1:-1;;;;;16487:16:0;16471:12;:10;:12::i;:::-;-1:-1:-1;;;;;16471:32:0;;16444:59;16436:103;;;;-1:-1:-1;;;16436:103:0;;;;;;;:::i;:::-;;;;;;;;;16593:1;16578:11;:16;;16550:97;;;;-1:-1:-1;;;16550:97:0;;;;;;;:::i;:::-;16711:1;16691:16;:21;;16658:112;;;;-1:-1:-1;;;16658:112:0;;;;;;;:::i;:::-;16836:1;16815:17;:22;;16781:115;;;;-1:-1:-1;;;16781:115:0;;;;;;;:::i;:::-;16971:2;16949:17;16916:30;16930:16;16916:11;:30;:::i;:::-;:50;;;;:::i;:::-;16915:58;;16907:121;;;;-1:-1:-1;;;16907:121:0;;;;;;;:::i;:::-;17041:10;:24;;;17076:15;:34;;;17121:16;:36;;;17140:17;17183:30;17094:16;17054:11;17183:30;:::i;:::-;:50;;;;:::i;:::-;17168:12;:65;-1:-1:-1;;;16322:919:0:o;17249:946::-;17391:7;:5;:7::i;:::-;-1:-1:-1;;;;;17375:23:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;17375:23:0;;:59;;;-1:-1:-1;17418:16:0;;-1:-1:-1;;;;;17418:16:0;17402:12;:10;:12::i;:::-;-1:-1:-1;;;;;17402:32:0;;17375:59;17367:103;;;;-1:-1:-1;;;17367:103:0;;;;;;;:::i;:::-;17526:1;17510:12;:17;;17481:100;;;;-1:-1:-1;;;17481:100:0;;;;;;;:::i;:::-;17647:1;17626:17;:22;;17592:115;;;;-1:-1:-1;;;17592:115:0;;;;;;;:::i;:::-;17775:1;17753:18;:23;;17718:118;;;;-1:-1:-1;;;17718:118:0;;;;;;;:::i;:::-;17914:2;17891:18;17856:32;17871:17;17856:12;:32;:::i;:::-;:53;;;;:::i;:::-;17855:61;;17847:125;;;;-1:-1:-1;;;17847:125:0;;;;;;;:::i;:::-;17985:11;:26;;;18022:16;:36;;;18069:17;:38;;;18089:18;18134:32;18041:17;17999:12;18134:32;:::i;:::-;:53;;;;:::i;:::-;18118:13;:69;-1:-1:-1;;;17249:946:0:o;2109:108::-;2197:12;;2109:108;:::o;14856:225::-;14949:7;:5;:7::i;:::-;-1:-1:-1;;;;;14933:23:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;14933:23:0;;:59;;;-1:-1:-1;14976:16:0;;-1:-1:-1;;;;;14976:16:0;14960:12;:10;:12::i;:::-;-1:-1:-1;;;;;14960:32:0;;14933:59;14925:103;;;;-1:-1:-1;;;14925:103:0;;;;;;;:::i;:::-;15041:14;:32;;-1:-1:-1;;15041:32:0;;;;;;;;;;14856:225::o;2937:265::-;3034:4;3051:15;3069:12;:10;:12::i;:::-;3051:30;;3094:38;3110:4;3116:7;3125:6;3094:15;:38::i;:::-;3143:27;3153:4;3159:2;3163:6;3143:9;:27::i;:::-;-1:-1:-1;3190:4:0;;2937:265;-1:-1:-1;;;;2937:265:0:o;12818:251::-;5916:12;:10;:12::i;:::-;-1:-1:-1;;;;;5905:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;5905:23:0;;5897:68;;;;-1:-1:-1;;;5897:68:0;;;;;;;:::i;:::-;12953:4:::1;12946:3;12930:13;:11;:13::i;:::-;:19;;;;:::i;:::-;12929:28;;;;:::i;:::-;12908:16;:50;;12900:106;;;;-1:-1:-1::0;;;12900:106:0::1;;;;;;;:::i;:::-;13038:23;:16:::0;13057:4:::1;13038:23;:::i;:::-;13019:16;:42:::0;-1:-1:-1;12818:251:0:o;2008:93::-;2091:2;2008:93;:::o;7224:33::-;;;-1:-1:-1;;;7224:33:0;;;;;:::o;3210:242::-;3298:4;3315:13;3331:12;:10;:12::i;:::-;3315:28;;3356:64;3365:5;3372:7;3409:10;3381:25;3391:5;3398:7;3381:9;:25::i;:::-;:38;;;;:::i;:::-;3356:8;:64::i;16207:107::-;-1:-1:-1;;;;;16288:18:0;;16264:4;16288:18;;;:5;:18;;;;;;;;16207:107;;;;:::o;13077:495::-;13175:7;:5;:7::i;:::-;-1:-1:-1;;;;;13159:23:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;13159:23:0;;:59;;;-1:-1:-1;13202:16:0;;-1:-1:-1;;;;;13202:16:0;13186:12;:10;:12::i;:::-;-1:-1:-1;;;;;13186:32:0;;13159:59;13151:103;;;;-1:-1:-1;;;13151:103:0;;;;;;;:::i;:::-;13328:4;13318:6;13297:13;:11;:13::i;:::-;:17;;13313:1;13297:17;:::i;:::-;13296:28;;;;:::i;:::-;13295:37;;;;:::i;:::-;13273:17;:60;;13265:121;;;;-1:-1:-1;;;13265:121:0;;;;;;;:::i;:::-;13452:4;13444;13428:13;:11;:13::i;:::-;:20;;;;:::i;:::-;13427:29;;;;:::i;:::-;13405:17;:52;;13397:111;;;;-1:-1:-1;;;13397:111:0;;;;;;;:::i;:::-;13540:24;:17;13560:4;13540:24;:::i;:::-;13521:16;:43;-1:-1:-1;13077:495:0:o;7885:36::-;;;;:::o;14106:142::-;-1:-1:-1;;;;;14204:36:0;14180:4;14204:36;;;:19;:36;;;;;;;;;14106:142::o;8565:28::-;;;;:::o;7678:35::-;;;;:::o;7543:31::-;;;;:::o;14704:144::-;-1:-1:-1;;;;;14803:37:0;14779:4;14803:37;;;:20;:37;;;;;;;;;14704:144::o;18693:283::-;5916:12;:10;:12::i;:::-;-1:-1:-1;;;;;5905:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;5905:23:0;;5897:68;;;;-1:-1:-1;;;5897:68:0;;;;;;;:::i;:::-;18777:21:::1;18819:19:::0;18811:80:::1;;;;-1:-1:-1::0;;;18811:80:0::1;;;;;;;:::i;:::-;18905:12;18923;:10;:12::i;:::-;-1:-1:-1::0;;;;;18923:17:0::1;18948:15;18923:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;18693:283:0:o;7928:81::-;;;;:::o;7186:31::-;;;-1:-1:-1;;;7186:31:0;;;;;:::o;2225:127::-;-1:-1:-1;;;;;2326:18:0;2299:7;2326:18;;;;;;;;;;;;2225:127::o;5993:103::-;5916:12;:10;:12::i;:::-;-1:-1:-1;;;;;5905:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;5905:23:0;;5897:68;;;;-1:-1:-1;;;5897:68:0;;;;;;;:::i;:::-;6058:30:::1;6085:1;6058:18;:30::i;:::-;5993:103::o:0;9724:1908::-;5916:12;:10;:12::i;:::-;-1:-1:-1;;;;;5905:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;5905:23:0;;5897:68;;;;-1:-1:-1;;;5897:68:0;;;;;;;:::i;:::-;9906:15:::1;::::0;-1:-1:-1;;;9906:15:0;::::1;;;9905:16;9897:59;;;;-1:-1:-1::0;;;9897:59:0::1;;;;;;;:::i;:::-;10008:1;9994:10;:15;;9967:91;;;;-1:-1:-1::0;;;9967:91:0::1;;;;;;;:::i;:::-;10092:2;10077:11;:17;;:39;;;;;10113:3;10098:11;:18;;10077:39;10069:100;;;;-1:-1:-1::0;;;10069:100:0::1;;;;;;;:::i;:::-;10211:1;10188:13;:20;:24;:55;;;;;10240:3;10216:13;:20;:27;;10188:55;10180:118;;;;-1:-1:-1::0;;;10180:118:0::1;;;;;;;:::i;:::-;10354:9;;;;;;;;;-1:-1:-1::0;;;;;10354:9:0::1;-1:-1:-1::0;;;;;10354:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10342:43:0::1;;10394:4;10401:9;;;;;;;;;-1:-1:-1::0;;;;;10401:9:0::1;-1:-1:-1::0;;;;;10401:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10342:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10332:7;:86:::0;;-1:-1:-1;;;;;;10332:86:0::1;-1:-1:-1::0;;;;;10332:86:0;;;::::1;::::0;;;::::1;::::0;;10461:30:::1;10477:7;:5;:7::i;:::-;10486:4;10461:15;:30::i;:::-;10502:36;10526:4;10533;10502:15;:36::i;:::-;10549:38;10573:6;10582:4;10549:15;:38::i;:::-;10633:31;10650:7;:5;:7::i;:::-;10659:4;10633:16;:31::i;:::-;10675:37;10700:4;10707;10675:16;:37::i;:::-;10723:39;10748:6;10757:4;10723:16;:39::i;:::-;10798:9;::::0;10773:42:::1;::::0;-1:-1:-1;;;;;10798:9:0::1;::::0;10773:16:::1;:42::i;:::-;10843:7;::::0;10826:31:::1;::::0;-1:-1:-1;;;;;10843:7:0::1;::::0;10826:16:::1;:31::i;:::-;10896:9;::::0;-1:-1:-1;;;;;10896:9:0::1;:25;10929:21;10960:4;10967:24;10960:4:::0;10967:9:::1;:24::i;:::-;10993:1;10996::::0;10999:7:::1;:5;:7::i;:::-;11008:15;10896:128;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11042:7:0::1;::::0;11067:9:::1;::::0;11035:62:::1;::::0;-1:-1:-1;;;11035:62:0;;-1:-1:-1;;;;;11042:7:0;;::::1;::::0;-1:-1:-1;11035:23:0::1;::::0;:62:::1;::::0;11067:9:::1;::::0;-1:-1:-1;;11079:17:0;11035:62:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11131:28;11139:13;11154:4;11131:7;:28::i;:::-;11199;11214:12;11199:14;:28::i;:::-;11238:36;11257:16;11238:18;:36::i;:::-;11285:57;11337:4;11328:5;11307:13;:11;:13::i;:::-;:17;::::0;11323:1:::1;11307:17;:::i;:::-;11306:27;;;;:::i;:::-;11305:36;;;;:::i;11285:57::-;-1:-1:-1::0;;11406:15:0::1;11392:11;:29:::0;-1:-1:-1;11447:12:0::1;11432;:27:::0;11470:10:::1;:23:::0;;;;11504:11:::1;:25:::0;11542:11:::1;:18:::0;;-1:-1:-1;;;;;;;;;;;;11542:18:0;;::::1;-1:-1:-1::0;;;11542:18:0::1;11571:20:::0;;;::::1;-1:-1:-1::0;;;11571:20:0::1;11602:22;-1:-1:-1::0;;;11602:22:0::1;::::0;;9724:1908::o;5770:87::-;5843:6;;-1:-1:-1;;;;;5843:6:0;5770:87;:::o;1896:104::-;1952:13;1985:7;1978:14;;;;;:::i;15089:1110::-;15202:7;:5;:7::i;:::-;-1:-1:-1;;;;;15186:23:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;15186:23:0;;:59;;;-1:-1:-1;15229:16:0;;-1:-1:-1;;;;;15229:16:0;15213:12;:10;:12::i;:::-;-1:-1:-1;;;;;15213:32:0;;15186:59;15178:103;;;;-1:-1:-1;;;15178:103:0;;;;;;;:::i;:::-;15323:1;15300:13;:20;:24;:55;;;;;15352:3;15328:13;:20;:27;;15300:55;15292:118;;;;-1:-1:-1;;;15292:118:0;;;;;;;:::i;:::-;15427:15;:34;;;;-1:-1:-1;15446:15:0;;-1:-1:-1;;;15446:15:0;;;;15427:34;15423:202;;;15506:11;;:26;;15521:10;15506:26;:::i;:::-;15486:15;:47;;15478:135;;;;-1:-1:-1;;;15478:135:0;;;;;;;:::i;:::-;15642:9;15637:555;15661:13;:20;15657:1;:24;15637:555;;;15707:15;:197;;;;;15747:7;:5;:7::i;:::-;-1:-1:-1;;;;;15727:27:0;:13;15741:1;15727:16;;;;;;-1:-1:-1;;;15727:16:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15727:27:0;;:64;;;;15786:4;-1:-1:-1;;;;;15758:33:0;:13;15772:1;15758:16;;;;;;-1:-1:-1;;;15758:16:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15758:33:0;;15727:64;:103;;;;15823:6;-1:-1:-1;;;;;15795:35:0;:13;15809:1;15795:16;;;;;;-1:-1:-1;;;15795:16:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15795:35:0;;15727:103;:134;;;-1:-1:-1;15854:7:0;;15834:16;;-1:-1:-1;;;;;15854:7:0;;;;15834:13;;15848:1;;15834:16;;;;-1:-1:-1;;;15834:16:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15834:27:0;;15727:134;:176;;;-1:-1:-1;15893:9:0;;15865:16;;-1:-1:-1;;;;;15893:9:0;;;;15865:13;;15879:1;;15865:16;;;;-1:-1:-1;;;15865:16:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15865:38:0;;15727:176;15703:211;;;15906:8;;15703:211;15962:15;15935:42;;:5;:23;15941:13;15955:1;15941:16;;;;;;-1:-1:-1;;;15941:16:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15935:23:0;;;;;;;;;;;-1:-1:-1;15935:23:0;;;;:42;;;15931:56;;;15979:8;;15931:56;16030:15;16004:5;:23;16010:13;16024:1;16010:16;;;;;;-1:-1:-1;;;16010:16:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16004:23:0;-1:-1:-1;;;;;16004:23:0;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;16066:15;16062:119;;;16102:9;:11;;;:9;:11;;;:::i;:::-;;;;;;16062:119;;;16154:9;:11;;;:9;:11;;;:::i;:::-;;;;;;16062:119;15683:3;;;;:::i;:::-;;;;15637:555;;;;15089:1110;;:::o;3460:440::-;3553:4;3570:13;3586:12;:10;:12::i;:::-;3570:28;;3609:24;3636:25;3646:5;3653:7;3636:9;:25::i;:::-;3609:52;;3702:15;3682:16;:35;;3674:85;;;;-1:-1:-1;;;3674:85:0;;;;;;;:::i;:::-;3797:60;3806:5;3813:7;3841:15;3822:16;:34;3797:8;:60::i;2360:197::-;2439:4;2456:13;2472:12;:10;:12::i;:::-;2456:28;;2497;2507:5;2514:2;2518:6;2497:9;:28::i;7806:30::-;;;;:::o;13580:518::-;5916:12;:10;:12::i;:::-;-1:-1:-1;;;;;5905:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;5905:23:0;;5897:68;;;;-1:-1:-1;;;5897:68:0;;;;;;;:::i;:::-;13680:11:::1;13676:352;;;13743:9;::::0;-1:-1:-1;;;;;13716:37:0;;::::1;13743:9:::0;::::1;13716:37;::::0;::::1;::::0;:67:::1;;-1:-1:-1::0;13776:7:0::1;::::0;-1:-1:-1;;;;;13757:26:0;;::::1;13776:7:::0;::::1;13757:26;;13716:67;13708:121;;;;-1:-1:-1::0;;;13708:121:0::1;;;;;;;:::i;:::-;13676:352;;;13889:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;13870:26:0::1;:15;-1:-1:-1::0;;;;;13870:26:0::1;;;:62;;;;-1:-1:-1::0;;;;;;13900:32:0;::::1;13927:4;13900:32;;13870:62;:100;;;;-1:-1:-1::0;;;;;;13936:34:0;::::1;13963:6;13936:34;;13870:100;13862:154;;;;-1:-1:-1::0;;;13862:154:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14040:36:0;;;::::1;;::::0;;;:19:::1;:36;::::0;;;;:50;;-1:-1:-1;;14040:50:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13580:518::o;7309:39::-;;;-1:-1:-1;;;7309:39:0;;;;;:::o;14256:440::-;5916:12;:10;:12::i;:::-;-1:-1:-1;;;;;5905:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;5905:23:0;;5897:68;;;;-1:-1:-1;;;5897:68:0;;;;;;;:::i;:::-;14358:11:::1;14353:272;;14413:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;14394:26:0::1;:15;-1:-1:-1::0;;;;;14394:26:0::1;;;:62;;;;-1:-1:-1::0;;;;;;14424:32:0;::::1;14451:4;14424:32;;14394:62;:100;;;;-1:-1:-1::0;;;;;;14460:34:0;::::1;14487:6;14460:34;;14394:100;:141;;;;-1:-1:-1::0;14525:9:0::1;::::0;-1:-1:-1;;;;;14498:37:0;;::::1;14525:9:::0;::::1;14498:37;;14394:141;:171;;;;-1:-1:-1::0;14558:7:0::1;::::0;-1:-1:-1;;;;;14539:26:0;;::::1;14558:7:::0;::::1;14539:26;;14394:171;14386:227;;;;-1:-1:-1::0;;;14386:227:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14637:37:0;;;::::1;;::::0;;;:20:::1;:37;::::0;;;;:51;;-1:-1:-1;;14637:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14256:440::o;7720:77::-;;;;:::o;8327:33::-;;;;;;:::o;2565:151::-;-1:-1:-1;;;;;2681:18:0;;;2654:7;2681:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2565:151::o;7601:29::-;;;;:::o;12381:182::-;5916:12;:10;:12::i;:::-;-1:-1:-1;;;;;5905:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;5905:23:0;;5897:68;;;;-1:-1:-1;;;5897:68:0;;;;;;;:::i;:::-;12451:20:::1;::::0;-1:-1:-1;;;12451:20:0;::::1;;;12443:71;;;;-1:-1:-1::0;;;12443:71:0::1;;;;;;;:::i;:::-;12527:20;:28:::0;;-1:-1:-1;;;;12527:28:0::1;::::0;;12381:182::o;18203:482::-;18289:7;:5;:7::i;:::-;-1:-1:-1;;;;;18273:23:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;18273:23:0;;:59;;;-1:-1:-1;18316:16:0;;-1:-1:-1;;;;;18316:16:0;18300:12;:10;:12::i;:::-;-1:-1:-1;;;;;18300:32:0;;18273:59;18265:103;;;;-1:-1:-1;;;18265:103:0;;;;;;;:::i;:::-;18381:28;18412:24;18430:4;18412:9;:24::i;:::-;18381:55;;18480:1;18457:20;:24;18449:85;;;;-1:-1:-1;;;18449:85:0;;;;;;;:::i;:::-;18570:20;18553:13;:37;;18545:93;;;;-1:-1:-1;;;18545:93:0;;;;;;;:::i;:::-;18651:26;18663:13;18651:11;:26::i;:::-;18203:482;;:::o;12571:239::-;5916:12;:10;:12::i;:::-;-1:-1:-1;;;;;5905:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;5905:23:0;;5897:68;;;;-1:-1:-1;;;5897:68:0;;;;;;;:::i;:::-;12703:4:::1;12694:5;12672:13;:11;:13::i;:::-;:18;::::0;12688:2:::1;12672:18;:::i;:::-;12671:28;;;;:::i;:::-;12670:37;;;;:::i;:::-;12653:12;:55;;12645:110;;;;-1:-1:-1::0;;;12645:110:0::1;;;;;;;:::i;:::-;12783:19;:12:::0;12798:4:::1;12783:19;:::i;:::-;12768:12;:34:::0;-1:-1:-1;12571:239:0:o;11640:574::-;5916:12;:10;:12::i;:::-;-1:-1:-1;;;;;5905:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;5905:23:0;;5897:68;;;;-1:-1:-1;;;5897:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11732:31:0;::::1;11724:84;;;;-1:-1:-1::0;;;11724:84:0::1;;;;;;;:::i;:::-;11844:16;::::0;11825:36:::1;::::0;-1:-1:-1;;;;;11844:16:0::1;11825:18;:36::i;:::-;11821:109;;;11894:16;::::0;11878:40:::1;::::0;-1:-1:-1;;;;;11894:16:0::1;;11878:15;:40::i;:::-;11966:16;::::0;11946:37:::1;::::0;-1:-1:-1;;;;;11966:16:0::1;11946:19;:37::i;:::-;11942:111;;;12017:16;::::0;12000:41:::1;::::0;-1:-1:-1;;;;;12017:16:0::1;;12000;:41::i;:::-;12065:16;:36:::0;;-1:-1:-1;;;;;;12065:36:0::1;-1:-1:-1::0;;;;;12065:36:0;::::1;;::::0;;12114:40:::1;12065:36:::0;-1:-1:-1;12114:15:0::1;:40::i;:::-;12165:41;12182:17;12201:4;12165:16;:41::i;:::-;11640:574:::0;:::o;7637:34::-;;;;:::o;7076:22::-;;;-1:-1:-1;;;;;7076:22:0;;:::o;7843:35::-;;;;:::o;12222:151::-;5916:12;:10;:12::i;:::-;-1:-1:-1;;;;;5905:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;5905:23:0;;5897:68;;;;-1:-1:-1;;;5897:68:0;;;;;;;:::i;:::-;12283:13:::1;::::0;-1:-1:-1;;;12283:13:0;::::1;;;12275:56;;;;-1:-1:-1::0;;;12275:56:0::1;;;;;;;:::i;:::-;12344:13;:21:::0;;-1:-1:-1;;;;12344:21:0::1;::::0;;12222:151::o;7123:31::-;;;-1:-1:-1;;;;;7123:31:0;;:::o;377:98::-;457:10;377:98;:::o;4744:348::-;-1:-1:-1;;;;;4846:19:0;;4838:68;;;;-1:-1:-1;;;4838:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4925:21:0;;4917:68;;;;-1:-1:-1;;;4917:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4998:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;5052:32;;;;;5028:6;;5052:32;:::i;:::-;;;;;;;;4744:348;;;:::o;5100:423::-;5201:24;5228:25;5238:5;5245:7;5228:9;:25::i;:::-;5201:52;;-1:-1:-1;;5270:16:0;:37;5266:250;;5352:6;5332:16;:26;;5324:68;;;;-1:-1:-1;;;5324:68:0;;;;;;;:::i;:::-;5438:51;5447:5;5454:7;5482:6;5463:16;:25;5438:8;:51::i;:::-;5100:423;;;;:::o;18984:3926::-;-1:-1:-1;;;;;19082:18:0;;19074:68;;;;-1:-1:-1;;;19074:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19161:16:0;;19153:64;;;;-1:-1:-1;;;19153:64:0;;;;;;;:::i;:::-;19245:1;19236:6;:10;19228:71;;;;-1:-1:-1;;;19228:71:0;;;;;;;:::i;:::-;19337:14;;;;19333:112;;;-1:-1:-1;;;;;19377:9:0;;;;;;:5;:9;;;;;;;;19376:10;:26;;;;-1:-1:-1;;;;;;19391:11:0;;;;;;:5;:11;;;;;;;;19390:12;19376:26;19368:65;;;;-1:-1:-1;;;19368:65:0;;;;;;;:::i;:::-;19490:15;;-1:-1:-1;;;19490:15:0;;;;19485:142;;19530:24;19549:4;19530:18;:24::i;:::-;:50;;;;19558:22;19577:2;19558:18;:22::i;:::-;19522:93;;;;-1:-1:-1;;;19522:93:0;;;;;;;:::i;:::-;19643:13;;-1:-1:-1;;;19643:13:0;;;;:31;;;;-1:-1:-1;19661:13:0;;;;19660:14;19643:31;:50;;;;;19686:7;:5;:7::i;:::-;-1:-1:-1;;;;;19678:15:0;:4;-1:-1:-1;;;;;19678:15:0;;;19643:50;:67;;;;;19703:7;:5;:7::i;:::-;-1:-1:-1;;;;;19697:13:0;:2;-1:-1:-1;;;;;19697:13:0;;;19643:67;:87;;;;-1:-1:-1;;;;;;19714:16:0;;;;19643:87;:112;;;;-1:-1:-1;;;;;;19734:21:0;;19748:6;19734:21;;19643:112;19639:1655;;;19842:11;;19828;;:25;;;;:::i;:::-;19808:15;:46;;:93;;;;19890:10;;19875:12;;:25;;;;:::i;:::-;19858:12;:43;;19808:93;19807:118;;;;-1:-1:-1;;;;;;19906:19:0;;19920:4;19906:19;;19807:118;:135;;;;-1:-1:-1;19935:7:0;;-1:-1:-1;;;;;19929:13:0;;;19935:7;;19929:13;;19807:135;:163;;;;-1:-1:-1;19960:9:0;;-1:-1:-1;;;;;19946:24:0;;;19960:9;;19946:24;;19807:163;19803:252;;;-1:-1:-1;;;;;19991:9:0;;;;;;:5;:9;;;;;:16;;-1:-1:-1;;19991:16:0;20003:4;19991:16;;;20028:9;:11;;;;;;:::i;:::-;;;;;;19803:252;20119:20;;-1:-1:-1;;;20119:20:0;;;;:45;;;;-1:-1:-1;;;;;;20143:21:0;;20159:4;20143:21;;20119:45;:62;;;;-1:-1:-1;20174:7:0;;-1:-1:-1;;;;;20168:13:0;;;20174:7;;20168:13;;20119:62;:90;;;;-1:-1:-1;20199:9:0;;-1:-1:-1;;;;;20185:24:0;;;20199:9;;20185:24;;20119:90;20115:429;;;20286:20;;20271:35;;:12;:35;:::i;:::-;20257:9;20238:29;;;;:18;:29;;;;;;:69;:135;;;;-1:-1:-1;20352:20:0;;20337:35;;:12;:35;:::i;:::-;-1:-1:-1;;;;;20311:22:0;;;;;;:18;:22;;;;;;:62;20238:135;20230:177;;;;-1:-1:-1;;;20230:177:0;;;;;;;:::i;:::-;20447:9;20428:29;;;;:18;:29;;;;;;20460:12;20428:44;;;;-1:-1:-1;;;;;20491:22:0;;;;;;:37;20115:429;20610:7;;-1:-1:-1;;;;;20602:15:0;;;20610:7;;20602:15;:43;;;;;20622:23;20642:2;20622:19;:23::i;:::-;20621:24;20602:43;20598:685;;;20708:12;;20698:6;:22;;20690:73;;;;-1:-1:-1;;;20690:73:0;;;;;;;:::i;:::-;20816:16;;20799:13;20809:2;20799:9;:13::i;:::-;20790:22;;:6;:22;:::i;:::-;:42;;20782:98;;;;-1:-1:-1;;;20782:98:0;;;;;;;:::i;:::-;20598:685;;;20912:7;;-1:-1:-1;;;;;20906:13:0;;;20912:7;;20906:13;:43;;;;;20924:25;20944:4;20924:19;:25::i;:::-;20923:26;20906:43;20902:381;;;21013:12;;21003:6;:22;;20995:74;;;;-1:-1:-1;;;20995:74:0;;;;;;;:::i;20902:381::-;21096:23;21116:2;21096:19;:23::i;:::-;21091:192;;21203:16;;21186:13;21196:2;21186:9;:13::i;:::-;21177:22;;:6;:22;:::i;:::-;:42;;21169:98;;;;-1:-1:-1;;;21169:98:0;;;;;;;:::i;:::-;21310:11;;-1:-1:-1;;;21310:11:0;;;;:29;;;;-1:-1:-1;21326:13:0;;;;21325:14;21310:29;:76;;;;;21370:16;;21343:24;21361:4;21343:9;:24::i;:::-;:43;21310:76;:95;;;;-1:-1:-1;21398:7:0;;-1:-1:-1;;;;;21390:15:0;;;21398:7;;21390:15;;21310:95;:124;;;;;21410:24;21429:4;21410:18;:24::i;:::-;21409:25;21310:124;:151;;;;;21439:22;21458:2;21439:18;:22::i;:::-;21438:23;21310:151;21306:213;;;21478:29;21490:16;;21478:11;:29::i;:::-;21548:13;;;;21547:14;21613:24;21632:4;21613:18;:24::i;:::-;:50;;;;21641:22;21660:2;21641:18;:22::i;:::-;21613:78;;;-1:-1:-1;21681:9:0;;-1:-1:-1;;;;;21667:24:0;;;21681:9;;21667:24;21613:78;21609:127;;;-1:-1:-1;21719:5:0;21609:127;21771:6;21749:19;21844:1008;;;;21883:7;;-1:-1:-1;;;;;21877:13:0;;;21883:7;;21877:13;:34;;;;;21910:1;21894:13;;:17;21877:34;21873:805;;;22001:3;21984:13;;21970:11;:27;;;;:::i;:::-;21969:35;;;;:::i;:::-;21957:47;;22069:13;;22054:11;;22042:9;:23;;;;:::i;:::-;22041:41;;;;:::i;:::-;22023:14;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;22157:13:0;;22137:16;;22125:28;;:9;:28;:::i;:::-;22124:46;;;;:::i;:::-;22101:19;;:69;;;;;;;:::i;:::-;;;;-1:-1:-1;;22247:13:0;;22226:17;;22214:29;;:9;:29;:::i;:::-;22213:47;;;;:::i;:::-;22189:20;;:71;;;;;;;:::i;:::-;;;;-1:-1:-1;21873:805:0;;-1:-1:-1;21873:805:0;;22294:7;;-1:-1:-1;;;;;22286:15:0;;;22294:7;;22286:15;:35;;;;;22320:1;22305:12;;:16;22286:35;22282:396;;;22409:3;22393:12;;22379:11;:26;;;;:::i;:::-;22378:34;;;;:::i;:::-;22366:46;;22476:12;;22462:10;;22450:9;:22;;;;:::i;:::-;22449:39;;;;:::i;:::-;22431:14;;:57;;;;;;;:::i;:::-;;;;-1:-1:-1;;22562:12:0;;22543:15;;22531:27;;:9;:27;:::i;:::-;22530:44;;;;:::i;:::-;22507:19;;:67;;;;;;;:::i;:::-;;;;-1:-1:-1;;22650:12:0;;22630:16;;22618:28;;:9;:28;:::i;:::-;22617:45;;;;:::i;:::-;22593:20;;:69;;;;;;;:::i;:::-;;;;-1:-1:-1;;22282:396:0;22699:13;;22695:146;;22733:47;22749:4;22763;22770:9;22733:15;:47::i;:::-;22801:24;22816:9;22801:24;;:::i;:::-;;;22695:146;22864:38;22880:4;22886:2;22890:11;22864:15;:38::i;:::-;18984:3926;;;;;;:::o;6104:193::-;6197:6;;;-1:-1:-1;;;;;6214:17:0;;;-1:-1:-1;;;;;;6214:17:0;;;;;;;6249:40;;6197:6;;;6214:17;6197:6;;6249:40;;6178:16;;6249:40;6104:193;;:::o;22918:1304::-;8693:13;:20;;-1:-1:-1;;8693:20:0;8709:4;8693:20;;;23056::::1;::::0;23034:19:::1;::::0;23017:14:::1;::::0;8693:13;;23056:20;23017:36:::1;::::0;::::1;:::i;:::-;:59;;;;:::i;:::-;22989:87:::0;-1:-1:-1;23093:17:0;;;:43:::1;;-1:-1:-1::0;23114:22:0;;23093:43:::1;23089:56;;;23138:7;;;23089:56;23157:18;23212:17;23194:14;;23179:12;:29;;;;:::i;:::-;23178:51;;;;:::i;:::-;23157:72;;23240:24;23307:17;23283:20;;23268:12;:35;;;;:::i;:::-;23267:57;;;;:::i;:::-;23240:84:::0;-1:-1:-1;23335:27:0::1;23416:1;23240:84:::0;23367:25:::1;23382:10:::0;23367:12;:25:::1;:::i;:::-;23366:46;;;;:::i;:::-;23365:52;;;;:::i;:::-;23335:82:::0;-1:-1:-1;23430:73:0::1;23335:82:::0;23454:25:::1;23469:10:::0;23454:12;:25:::1;:::i;:::-;23453:49;;;;:::i;:::-;23430:22;:73::i;:::-;23626:20;::::0;23543:21:::1;::::0;23517:23:::1;::::0;23650:17;;23608:38:::1;::::0;23543:21;23608:38:::1;:::i;:::-;23607:60;;;;:::i;:::-;23575:92:::0;-1:-1:-1;23678:28:0::1;23709:39;23575:92:::0;23709:15;:39:::1;:::i;:::-;23678:70;;23787:1;23765:19;:23;:51;;;;;23815:1;23792:20;:24;23765:51;23761:140;;;23833:56;23847:19;23868:20;23833:13;:56::i;:::-;23940:16;::::0;23932:64:::1;::::0;23914:12:::1;::::0;-1:-1:-1;;;;;23940:16:0::1;::::0;23970:21:::1;::::0;23932:64:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23913:83:0;;-1:-1:-1;;24013:14:0;;24009:106:::1;;24044:59;24068:4;24083:6;24092:10;24044:15;:59::i;:::-;-1:-1:-1::0;;24144:1:0::1;24127:14;:18:::0;;;24156:19:::1;:23:::0;;;24190:20:::1;:24:::0;-1:-1:-1;;;;;;8724:1:0::1;-1:-1:-1::0;8736:13:0;:21;;-1:-1:-1;;8736:21:0;;;22918:1304::o;3908:542::-;-1:-1:-1;;;;;4005:18:0;;3997:68;;;;-1:-1:-1;;;3997:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4084:16:0;;4076:64;;;;-1:-1:-1;;;4076:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4175:15:0;;4153:19;4175:15;;;;;;;;;;;4211:21;;;;4203:72;;;;-1:-1:-1;;;4203:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4313:15:0;;;:9;:15;;;;;;;;;;;4331:20;;;4313:38;;4375:13;;;;;;;;:23;;4345:6;;4313:9;4375:23;;4345:6;;4375:23;:::i;:::-;;;;;;;;4431:2;-1:-1:-1;;;;;4416:26:0;4425:4;-1:-1:-1;;;;;4416:26:0;;4435:6;4416:26;;;;;;:::i;:::-;;;;;;;;3908:542;;;;:::o;24230:392::-;24327:16;;;24341:1;24327:16;;;;;;;;24303:21;;24327:16;;;;;;;;;;-1:-1:-1;24327:16:0;24303:40;;24372:4;24354;24359:1;24354:7;;;;;;-1:-1:-1;;;24354:7:0;;;;;;;;;-1:-1:-1;;;;;24354:23:0;;;:7;;;;;;;;;;:23;;;;24398:9;;:16;;;-1:-1:-1;;;24398:16:0;;;;:9;;;;;:14;;:16;;;;;24354:7;;24398:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24388:4;24393:1;24388:7;;;;;;-1:-1:-1;;;24388:7:0;;;;;;;;;-1:-1:-1;;;;;24388:26:0;;;:7;;;;;;;;;:26;24460:9;;24428:57;;24445:4;;24460:9;24472:12;24428:8;:57::i;:::-;24499:9;;:115;;-1:-1:-1;;;24499:115:0;;-1:-1:-1;;;;;24499:9:0;;;;:60;;:115;;24560:12;;24499:9;;24577:4;;24591;;24598:15;;24499:115;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24630:283;24750:9;;24718:57;;24735:4;;-1:-1:-1;;;;;24750:9:0;24762:12;24718:8;:57::i;:::-;24788:9;;:117;;-1:-1:-1;;;24788:117:0;;-1:-1:-1;;;;;24788:9:0;;;;:25;;24821:14;;24788:117;;24845:4;;24852:12;;24788:9;;;;24880:6;;24889:15;;24788:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:138:1:-;84:20;;113:33;84:20;113:33;:::i;157:934::-;;270:3;263:4;255:6;251:17;247:27;237:2;;292:5;285;278:20;237:2;332:6;319:20;358:4;381:18;418:2;414;411:10;408:2;;;424:18;;:::i;:::-;471:2;467;463:11;503:2;497:9;554:2;549;541:6;537:15;533:24;607:6;595:10;592:22;587:2;575:10;572:18;569:46;566:2;;;618:18;;:::i;:::-;654:2;647:22;704:18;;;738:15;;;;-1:-1:-1;773:15:1;;;807;;;803:24;;800:33;-1:-1:-1;797:2:1;;;850:5;843;836:20;797:2;876:5;867:14;;890:171;904:2;901:1;898:9;890:171;;;961:25;982:3;961:25;:::i;:::-;949:38;;1007:12;;;;922:1;915:9;;;;;1039:12;;890:171;;;-1:-1:-1;1079:6:1;227:864;-1:-1:-1;;;;;;;227:864:1:o;1096:259::-;;1208:2;1196:9;1187:7;1183:23;1179:32;1176:2;;;1229:6;1221;1214:22;1176:2;1273:9;1260:23;1292:33;1319:5;1292:33;:::i;:::-;1344:5;1166:189;-1:-1:-1;;;1166:189:1:o;1360:263::-;;1483:2;1471:9;1462:7;1458:23;1454:32;1451:2;;;1504:6;1496;1489:22;1451:2;1541:9;1535:16;1560:33;1587:5;1560:33;:::i;1628:402::-;;;1757:2;1745:9;1736:7;1732:23;1728:32;1725:2;;;1778:6;1770;1763:22;1725:2;1822:9;1809:23;1841:33;1868:5;1841:33;:::i;:::-;1893:5;-1:-1:-1;1950:2:1;1935:18;;1922:32;1963:35;1922:32;1963:35;:::i;:::-;2017:7;2007:17;;;1715:315;;;;;:::o;2035:470::-;;;;2181:2;2169:9;2160:7;2156:23;2152:32;2149:2;;;2202:6;2194;2187:22;2149:2;2246:9;2233:23;2265:33;2292:5;2265:33;:::i;:::-;2317:5;-1:-1:-1;2374:2:1;2359:18;;2346:32;2387:35;2346:32;2387:35;:::i;:::-;2139:366;;2441:7;;-1:-1:-1;;;2495:2:1;2480:18;;;;2467:32;;2139:366::o;2510:396::-;;;2636:2;2624:9;2615:7;2611:23;2607:32;2604:2;;;2657:6;2649;2642:22;2604:2;2701:9;2688:23;2720:33;2747:5;2720:33;:::i;:::-;2772:5;-1:-1:-1;2829:2:1;2814:18;;2801:32;2842;2801;2842;:::i;2911:327::-;;;3040:2;3028:9;3019:7;3015:23;3011:32;3008:2;;;3061:6;3053;3046:22;3008:2;3105:9;3092:23;3124:33;3151:5;3124:33;:::i;:::-;3176:5;3228:2;3213:18;;;;3200:32;;-1:-1:-1;;;2998:240:1:o;3243:505::-;;;3394:2;3382:9;3373:7;3369:23;3365:32;3362:2;;;3415:6;3407;3400:22;3362:2;3460:9;3447:23;3493:18;3485:6;3482:30;3479:2;;;3530:6;3522;3515:22;3479:2;3558:67;3617:7;3608:6;3597:9;3593:22;3558:67;:::i;:::-;3548:77;;;3675:2;3664:9;3660:18;3647:32;3688:30;3712:5;3688:30;:::i;3753:253::-;;3862:2;3850:9;3841:7;3837:23;3833:32;3830:2;;;3883:6;3875;3868:22;3830:2;3927:9;3914:23;3946:30;3970:5;3946:30;:::i;4011:257::-;;4131:2;4119:9;4110:7;4106:23;4102:32;4099:2;;;4152:6;4144;4137:22;4099:2;4189:9;4183:16;4208:30;4232:5;4208:30;:::i;4273:190::-;;4385:2;4373:9;4364:7;4360:23;4356:32;4353:2;;;4406:6;4398;4391:22;4353:2;-1:-1:-1;4434:23:1;;4343:120;-1:-1:-1;4343:120:1:o;4468:326::-;;;;4614:2;4602:9;4593:7;4589:23;4585:32;4582:2;;;4635:6;4627;4620:22;4582:2;-1:-1:-1;;4663:23:1;;;4733:2;4718:18;;4705:32;;-1:-1:-1;4784:2:1;4769:18;;;4756:32;;4572:222;-1:-1:-1;4572:222:1:o;4799:316::-;;;;4956:2;4944:9;4935:7;4931:23;4927:32;4924:2;;;4977:6;4969;4962:22;4924:2;5011:9;5005:16;4995:26;;5061:2;5050:9;5046:18;5040:25;5030:35;;5105:2;5094:9;5090:18;5084:25;5074:35;;4914:201;;;;;:::o;5120:648::-;;;;;;5325:3;5313:9;5304:7;5300:23;5296:33;5293:2;;;5347:6;5339;5332:22;5293:2;5388:9;5375:23;5365:33;;5445:2;5434:9;5430:18;5417:32;5407:42;;5496:2;5485:9;5481:18;5468:32;5458:42;;5547:2;5536:9;5532:18;5519:32;5509:42;;5602:3;5591:9;5587:19;5574:33;5630:18;5622:6;5619:30;5616:2;;;5667:6;5659;5652:22;5616:2;5695:67;5754:7;5745:6;5734:9;5730:22;5695:67;:::i;:::-;5685:77;;;5283:485;;;;;;;;:::o;5773:205::-;5973:3;5964:14::o;5983:203::-;-1:-1:-1;;;;;6147:32:1;;;;6129:51;;6117:2;6102:18;;6084:102::o;6191:304::-;-1:-1:-1;;;;;6421:15:1;;;6403:34;;6473:15;;6468:2;6453:18;;6446:43;6353:2;6338:18;;6320:175::o;6500:274::-;-1:-1:-1;;;;;6692:32:1;;;;6674:51;;6756:2;6741:18;;6734:34;6662:2;6647:18;;6629:145::o;6779:607::-;-1:-1:-1;;;;;7138:15:1;;;7120:34;;7185:2;7170:18;;7163:34;;;;7228:2;7213:18;;7206:34;;;;7271:2;7256:18;;7249:34;;;;7320:15;;;7314:3;7299:19;;7292:44;7100:3;7352:19;;7345:35;;;;7069:3;7054:19;;7036:350::o;7391:187::-;7556:14;;7549:22;7531:41;;7519:2;7504:18;;7486:92::o;7809:603::-;;7950:2;7979;7968:9;7961:21;8011:6;8005:13;8054:6;8049:2;8038:9;8034:18;8027:34;8079:4;8092:140;8106:6;8103:1;8100:13;8092:140;;;8201:14;;;8197:23;;8191:30;8167:17;;;8186:2;8163:26;8156:66;8121:10;;8092:140;;;8250:6;8247:1;8244:13;8241:2;;;8320:4;8315:2;8306:6;8295:9;8291:22;8287:31;8280:45;8241:2;-1:-1:-1;8396:2:1;8375:15;-1:-1:-1;;8371:29:1;8356:45;;;;8403:2;8352:54;;7930:482;-1:-1:-1;;;7930:482:1:o;8417:402::-;8619:2;8601:21;;;8658:2;8638:18;;;8631:30;8697:34;8692:2;8677:18;;8670:62;-1:-1:-1;;;8763:2:1;8748:18;;8741:36;8809:3;8794:19;;8591:228::o;8824:399::-;9026:2;9008:21;;;9065:2;9045:18;;;9038:30;9104:34;9099:2;9084:18;;9077:62;-1:-1:-1;;;9170:2:1;9155:18;;9148:33;9213:3;9198:19;;8998:225::o;9228:414::-;9430:2;9412:21;;;9469:2;9449:18;;;9442:30;9508:34;9503:2;9488:18;;9481:62;-1:-1:-1;;;9574:2:1;9559:18;;9552:48;9632:3;9617:19;;9402:240::o;9647:398::-;9849:2;9831:21;;;9888:2;9868:18;;;9861:30;9927:34;9922:2;9907:18;;9900:62;-1:-1:-1;;;9993:2:1;9978:18;;9971:32;10035:3;10020:19;;9821:224::o;10050:405::-;10252:2;10234:21;;;10291:2;10271:18;;;10264:30;10330:34;10325:2;10310:18;;10303:62;-1:-1:-1;;;10396:2:1;10381:18;;10374:39;10445:3;10430:19;;10224:231::o;10460:412::-;10662:2;10644:21;;;10701:2;10681:18;;;10674:30;10740:34;10735:2;10720:18;;10713:62;-1:-1:-1;;;10806:2:1;10791:18;;10784:46;10862:3;10847:19;;10634:238::o;10877:353::-;11079:2;11061:21;;;11118:2;11098:18;;;11091:30;11157:31;11152:2;11137:18;;11130:59;11221:2;11206:18;;11051:179::o;11235:402::-;11437:2;11419:21;;;11476:2;11456:18;;;11449:30;11515:34;11510:2;11495:18;;11488:62;-1:-1:-1;;;11581:2:1;11566:18;;11559:36;11627:3;11612:19;;11409:228::o;11642:408::-;11844:2;11826:21;;;11883:2;11863:18;;;11856:30;11922:34;11917:2;11902:18;;11895:62;-1:-1:-1;;;11988:2:1;11973:18;;11966:42;12040:3;12025:19;;11816:234::o;12055:412::-;12257:2;12239:21;;;12296:2;12276:18;;;12269:30;12335:34;12330:2;12315:18;;12308:62;-1:-1:-1;;;12401:2:1;12386:18;;12379:46;12457:3;12442:19;;12229:238::o;12472:407::-;12674:2;12656:21;;;12713:2;12693:18;;;12686:30;12752:34;12747:2;12732:18;;12725:62;-1:-1:-1;;;12818:2:1;12803:18;;12796:41;12869:3;12854:19;;12646:233::o;12884:355::-;13086:2;13068:21;;;13125:2;13105:18;;;13098:30;13164:33;13159:2;13144:18;;13137:61;13230:2;13215:18;;13058:181::o;13244:407::-;13446:2;13428:21;;;13485:2;13465:18;;;13458:30;13524:34;13519:2;13504:18;;13497:62;-1:-1:-1;;;13590:2:1;13575:18;;13568:41;13641:3;13626:19;;13418:233::o;13656:353::-;13858:2;13840:21;;;13897:2;13877:18;;;13870:30;13936:31;13931:2;13916:18;;13909:59;14000:2;13985:18;;13830:179::o;14014:412::-;14216:2;14198:21;;;14255:2;14235:18;;;14228:30;14294:34;14289:2;14274:18;;14267:62;-1:-1:-1;;;14360:2:1;14345:18;;14338:46;14416:3;14401:19;;14188:238::o;14431:412::-;14633:2;14615:21;;;14672:2;14652:18;;;14645:30;14711:34;14706:2;14691:18;;14684:62;-1:-1:-1;;;14777:2:1;14762:18;;14755:46;14833:3;14818:19;;14605:238::o;14848:412::-;15050:2;15032:21;;;15089:2;15069:18;;;15062:30;15128:34;15123:2;15108:18;;15101:62;-1:-1:-1;;;15194:2:1;15179:18;;15172:46;15250:3;15235:19;;15022:238::o;15265:415::-;15467:2;15449:21;;;15506:2;15486:18;;;15479:30;15545:34;15540:2;15525:18;;15518:62;-1:-1:-1;;;15611:2:1;15596:18;;15589:49;15670:3;15655:19;;15439:241::o;15685:419::-;15887:2;15869:21;;;15926:2;15906:18;;;15899:30;15965:34;15960:2;15945:18;;15938:62;16036:25;16031:2;16016:18;;16009:53;16094:3;16079:19;;15859:245::o;16109:356::-;16311:2;16293:21;;;16330:18;;;16323:30;16389:34;16384:2;16369:18;;16362:62;16456:2;16441:18;;16283:182::o;16470:350::-;16672:2;16654:21;;;16711:2;16691:18;;;16684:30;16750:28;16745:2;16730:18;;16723:56;16811:2;16796:18;;16644:176::o;16825:406::-;17027:2;17009:21;;;17066:2;17046:18;;;17039:30;17105:34;17100:2;17085:18;;17078:62;-1:-1:-1;;;17171:2:1;17156:18;;17149:40;17221:3;17206:19;;16999:232::o;17236:417::-;17438:2;17420:21;;;17477:2;17457:18;;;17450:30;17516:34;17511:2;17496:18;;17489:62;-1:-1:-1;;;17582:2:1;17567:18;;17560:51;17643:3;17628:19;;17410:243::o;17658:413::-;17860:2;17842:21;;;17899:2;17879:18;;;17872:30;17938:34;17933:2;17918:18;;17911:62;-1:-1:-1;;;18004:2:1;17989:18;;17982:47;18061:3;18046:19;;17832:239::o;18076:403::-;18278:2;18260:21;;;18317:2;18297:18;;;18290:30;18356:34;18351:2;18336:18;;18329:62;-1:-1:-1;;;18422:2:1;18407:18;;18400:37;18469:3;18454:19;;18250:229::o;18484:354::-;18686:2;18668:21;;;18725:2;18705:18;;;18698:30;18764:32;18759:2;18744:18;;18737:60;18829:2;18814:18;;18658:180::o;18843:418::-;19045:2;19027:21;;;19084:2;19064:18;;;19057:30;19123:34;19118:2;19103:18;;19096:62;-1:-1:-1;;;19189:2:1;19174:18;;19167:52;19251:3;19236:19;;19017:244::o;19266:401::-;19468:2;19450:21;;;19507:2;19487:18;;;19480:30;19546:34;19541:2;19526:18;;19519:62;-1:-1:-1;;;19612:2:1;19597:18;;19590:35;19657:3;19642:19;;19440:227::o;19672:418::-;19874:2;19856:21;;;19913:2;19893:18;;;19886:30;19952:34;19947:2;19932:18;;19925:62;-1:-1:-1;;;20018:2:1;20003:18;;19996:52;20080:3;20065:19;;19846:244::o;20095:412::-;20297:2;20279:21;;;20336:2;20316:18;;;20309:30;20375:34;20370:2;20355:18;;20348:62;-1:-1:-1;;;20441:2:1;20426:18;;20419:46;20497:3;20482:19;;20269:238::o;20512:400::-;20714:2;20696:21;;;20753:2;20733:18;;;20726:30;20792:34;20787:2;20772:18;;20765:62;-1:-1:-1;;;20858:2:1;20843:18;;20836:34;20902:3;20887:19;;20686:226::o;20917:354::-;21119:2;21101:21;;;21158:2;21138:18;;;21131:30;21197:32;21192:2;21177:18;;21170:60;21262:2;21247:18;;21091:180::o;21276:410::-;21478:2;21460:21;;;21517:2;21497:18;;;21490:30;21556:34;21551:2;21536:18;;21529:62;-1:-1:-1;;;21622:2:1;21607:18;;21600:44;21676:3;21661:19;;21450:236::o;21691:354::-;21893:2;21875:21;;;21932:2;21912:18;;;21905:30;21971:32;21966:2;21951:18;;21944:60;22036:2;22021:18;;21865:180::o;22050:407::-;22252:2;22234:21;;;22291:2;22271:18;;;22264:30;22330:34;22325:2;22310:18;;22303:62;-1:-1:-1;;;22396:2:1;22381:18;;22374:41;22447:3;22432:19;;22224:233::o;22462:404::-;22664:2;22646:21;;;22703:2;22683:18;;;22676:30;22742:34;22737:2;22722:18;;22715:62;-1:-1:-1;;;22808:2:1;22793:18;;22786:38;22856:3;22841:19;;22636:230::o;22871:414::-;23073:2;23055:21;;;23112:2;23092:18;;;23085:30;23151:34;23146:2;23131:18;;23124:62;-1:-1:-1;;;23217:2:1;23202:18;;23195:48;23275:3;23260:19;;23045:240::o;23290:402::-;23492:2;23474:21;;;23531:2;23511:18;;;23504:30;23570:34;23565:2;23550:18;;23543:62;-1:-1:-1;;;23636:2:1;23621:18;;23614:36;23682:3;23667:19;;23464:228::o;23697:407::-;23899:2;23881:21;;;23938:2;23918:18;;;23911:30;23977:34;23972:2;23957:18;;23950:62;-1:-1:-1;;;24043:2:1;24028:18;;24021:41;24094:3;24079:19;;23871:233::o;24109:401::-;24311:2;24293:21;;;24350:2;24330:18;;;24323:30;24389:34;24384:2;24369:18;;24362:62;-1:-1:-1;;;24455:2:1;24440:18;;24433:35;24500:3;24485:19;;24283:227::o;24515:479::-;24717:2;24699:21;;;24756:2;24736:18;;;24729:30;24795:34;24790:2;24775:18;;24768:62;24866:34;24861:2;24846:18;;24839:62;-1:-1:-1;;;24932:3:1;24917:19;;24910:42;24984:3;24969:19;;24689:305::o;24999:177::-;25145:25;;;25133:2;25118:18;;25100:76::o;25181:983::-;;25491:3;25480:9;25476:19;25522:6;25511:9;25504:25;25548:2;25586:6;25581:2;25570:9;25566:18;25559:34;25629:3;25624:2;25613:9;25609:18;25602:31;25653:6;25688;25682:13;25719:6;25711;25704:22;25757:3;25746:9;25742:19;25735:26;;25796:2;25788:6;25784:15;25770:29;;25817:4;25830:195;25844:6;25841:1;25838:13;25830:195;;;25909:13;;-1:-1:-1;;;;;25905:39:1;25893:52;;26000:15;;;;25965:12;;;;25941:1;25859:9;25830:195;;;-1:-1:-1;;;;;;;26081:32:1;;;;26076:2;26061:18;;26054:60;-1:-1:-1;;;26145:3:1;26130:19;26123:35;26042:3;25452:712;-1:-1:-1;;;25452:712:1:o;26169:184::-;26341:4;26329:17;;;;26311:36;;26299:2;26284:18;;26266:87::o;26358:128::-;;26429:1;26425:6;26422:1;26419:13;26416:2;;;26435:18;;:::i;:::-;-1:-1:-1;26471:9:1;;26406:80::o;26491:217::-;;26557:1;26547:2;;-1:-1:-1;;;26582:31:1;;26636:4;26633:1;26626:15;26664:4;26589:1;26654:15;26547:2;-1:-1:-1;26693:9:1;;26537:171::o;26713:168::-;;26819:1;26815;26811:6;26807:14;26804:1;26801:21;26796:1;26789:9;26782:17;26778:45;26775:2;;;26826:18;;:::i;:::-;-1:-1:-1;26866:9:1;;26765:116::o;26886:125::-;;26954:1;26951;26948:8;26945:2;;;26959:18;;:::i;:::-;-1:-1:-1;26996:9:1;;26935:76::o;27016:136::-;;27083:5;27073:2;;27092:18;;:::i;:::-;-1:-1:-1;;;27128:18:1;;27063:89::o;27157:380::-;27242:1;27232:12;;27289:1;27279:12;;;27300:2;;27354:4;27346:6;27342:17;27332:27;;27300:2;27407;27399:6;27396:14;27376:18;27373:38;27370:2;;;27453:10;27448:3;27444:20;27441:1;27434:31;27488:4;27485:1;27478:15;27516:4;27513:1;27506:15;27370:2;;27212:325;;;:::o;27542:135::-;;-1:-1:-1;;27602:17:1;;27599:2;;;27622:18;;:::i;:::-;-1:-1:-1;27669:1:1;27658:13;;27589:88::o;27682:127::-;27743:10;27738:3;27734:20;27731:1;27724:31;27774:4;27771:1;27764:15;27798:4;27795:1;27788:15;27814:127;27875:10;27870:3;27866:20;27863:1;27856:31;27906:4;27903:1;27896:15;27930:4;27927:1;27920:15;27946:133;-1:-1:-1;;;;;28023:31:1;;28013:42;;28003:2;;28069:1;28066;28059:12;28084:120;28172:5;28165:13;28158:21;28151:5;28148:32;28138:2;;28194:1;28191;28184:12

Swarm Source

ipfs://dce717546c03a0843e2ae71ddc129613365efe2ac0b211b79d15dfd3408ebdbc

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.