ETH Price: $2,423.18 (-0.07%)

Contract

0x7586dc7301d44D93468124Af10727540684CF9CC
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve200396452024-06-07 11:26:11120 days ago1717759571IN
0x7586dc73...0684CF9CC
0 ETH0.000423888.98333824
Approve196529792024-04-14 9:48:35174 days ago1713088115IN
0x7586dc73...0684CF9CC
0 ETH0.0003075312.34993987
Approve194244242024-03-13 6:40:35207 days ago1710312035IN
0x7586dc73...0684CF9CC
0 ETH0.0018332639.08046003
Approve193001232024-02-24 21:27:47224 days ago1708810067IN
0x7586dc73...0684CF9CC
0 ETH0.0010865123.02632111
Approve192959522024-02-24 7:27:59225 days ago1708759679IN
0x7586dc73...0684CF9CC
0 ETH0.0014454630.59448292
Approve192953592024-02-24 5:28:47225 days ago1708752527IN
0x7586dc73...0684CF9CC
0 ETH0.0010696622.77914073
Approve192933452024-02-23 22:43:11225 days ago1708728191IN
0x7586dc73...0684CF9CC
0 ETH0.0008491728.42891678
Approve192885712024-02-23 6:41:47226 days ago1708670507IN
0x7586dc73...0684CF9CC
0 ETH0.0013125127.97943604
Approve192875112024-02-23 3:07:11226 days ago1708657631IN
0x7586dc73...0684CF9CC
0 ETH0.0016892535.75437569
Approve192873972024-02-23 2:44:11226 days ago1708656251IN
0x7586dc73...0684CF9CC
0 ETH0.0016824835.61115614
Approve192862022024-02-22 22:43:35226 days ago1708641815IN
0x7586dc73...0684CF9CC
0 ETH0.003395971.96854542
Approve192853072024-02-22 19:44:23226 days ago1708631063IN
0x7586dc73...0684CF9CC
0 ETH0.0032748569.31504701
Approve192852542024-02-22 19:33:23226 days ago1708630403IN
0x7586dc73...0684CF9CC
0 ETH0.0024790552.53800215
Approve192848582024-02-22 18:13:59226 days ago1708625639IN
0x7586dc73...0684CF9CC
0 ETH0.0029201761.88653573
Approve192846842024-02-22 17:38:59226 days ago1708623539IN
0x7586dc73...0684CF9CC
0 ETH0.0026645556.46916857
Approve192837412024-02-22 14:28:11226 days ago1708612091IN
0x7586dc73...0684CF9CC
0 ETH0.0030464264.89214213
Transfer192825682024-02-22 10:29:47226 days ago1708597787IN
0x7586dc73...0684CF9CC
0 ETH0.0021848645.76595905
Transfer192797142024-02-22 0:52:11227 days ago1708563131IN
0x7586dc73...0684CF9CC
0 ETH0.006140634.61033817
Approve192792142024-02-21 23:10:59227 days ago1708557059IN
0x7586dc73...0684CF9CC
0 ETH0.0020524443.76393056
Transfer192781282024-02-21 19:31:35227 days ago1708543895IN
0x7586dc73...0684CF9CC
0 ETH0.0027210751.79051261
Approve192781262024-02-21 19:31:11227 days ago1708543871IN
0x7586dc73...0684CF9CC
0 ETH0.0025584154.21968553
Approve192781152024-02-21 19:28:59227 days ago1708543739IN
0x7586dc73...0684CF9CC
0 ETH0.0023912850.61349577
Approve192781022024-02-21 19:26:23227 days ago1708543583IN
0x7586dc73...0684CF9CC
0 ETH0.0015031231.85529269
Approve192780342024-02-21 19:12:47227 days ago1708542767IN
0x7586dc73...0684CF9CC
0 ETH0.0016227334.39015314
Approve192780232024-02-21 19:10:35227 days ago1708542635IN
0x7586dc73...0684CF9CC
0 ETH0.0016972936.13576214
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
192699582024-02-20 15:59:59228 days ago1708444799
0x7586dc73...0684CF9CC
1 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CHAINWATCHER

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-20
*/

/**
 *Submitted for verification at Etherscan.io on 2024-02-20

// SPDX-License-Identifier: MIT

/*

Stay ahead, stay informed

Step into the future of crypto alerts with ChainWatcher. 
Simplify your Ethereum journey through real-time notifications, tailored just for you. 
Empower your decisions, stay informed.

OFFICIAL CHAIN WATCHER $EYE SOCIALS AND BOT:

Telegram: https://t.me/ChainWatcher_Portal
Twitter: https://twitter.com/ChainWatcherETH
Utility Bot: https://t.me/chainwatcher_robot
Website: https://chainwatcher.tech/

*/

pragma solidity = 0.8.21;
pragma experimental ABIEncoderV2;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

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

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

abstract contract Ownable is Context {
    address private _owner;

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

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

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

        _beforeTokenTransfer(from, to, amount);

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

        _afterTokenTransfer(from, to, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            _totalSupply -= amount;
        }

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

        _afterTokenTransfer(account, address(0), 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);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract CHAINWATCHER is ERC20, Ownable {
    using SafeMath for uint256;
    
    IUniswapV2Router02 public immutable _uniswapV2Router;
    address private uniswapV2Pair;
    address private deployerWallet;
    address private marketingWallet;
    address private constant deadAddress = address(0xdead);

    bool private swapping;

    string private constant _name = "Chain Watcher";
    string private constant _symbol = "EYE";

    uint256 public initialTotalSupply = 100000 * 1e18;
    uint256 public maxTransactionAmount = 2000 * 1e18;
    uint256 public maxWallet = 2000 * 1e18;
    uint256 public swapTokensAtAmount = 1000 * 1e18;

    bool public tradingOpen = false;
    bool public swapEnabled = false;

    uint256 public BuyFee = 20;
    uint256 public SellFee = 20;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor(address wallet) ERC20(_name, _symbol) {

        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        marketingWallet = payable(wallet);     
        
        deployerWallet = payable(_msgSender());
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(wallet), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(wallet), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(deployerWallet, initialTotalSupply);
    }

    receive() external payable {}

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"Trading is already open");
        _approve(address(this), address(_uniswapV2Router), initialTotalSupply);
        IERC20(uniswapV2Pair).approve(address(_uniswapV2Router), type(uint).max);
        address wethAddress = _uniswapV2Router.WETH();
        uint256 wethBalance = IERC20(wethAddress).balanceOf(uniswapV2Pair);
        uint256 initialTokens = initialTotalSupply.mul(60).div(100); uint256 desiredETHAmount;
        if (wethBalance > 0) {desiredETHAmount = address(this).balance.sub(wethBalance);
        uint256 tokenValue = initialTokens.mul(wethBalance).div(desiredETHAmount);
        super._transfer(address(this), uniswapV2Pair, tokenValue);
        IUniswapV2Pair(uniswapV2Pair).sync();
        _uniswapV2Router.addLiquidityETH{value: desiredETHAmount}(address(this), initialTokens, 0, desiredETHAmount, owner(), block.timestamp);}
        else {_uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this), initialTokens, 0, 0, owner(), block.timestamp);}
        swapEnabled = true;
        tradingOpen = true;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
                if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {

                if (!tradingOpen) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }

                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                } 
                
                else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance > 0;

        if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack(amount);
            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            if (automatedMarketMakerPairs[to]) {
                fees = amount.mul(SellFee).div(100);
            }
            else {
                fees = amount.mul(BuyFee).div(100);
            }

        if (fees > 0) {
            super._transfer(from, address(this), fees);
        }
        amount -= fees;
    }
        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();

        _approve(address(this), address(_uniswapV2Router), tokenAmount);

        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            marketingWallet,
            block.timestamp
        );
    }

   function removeLimits() external onlyOwner{
        uint256 totalSupplyAmount = totalSupply();
        maxTransactionAmount = totalSupplyAmount;
        maxWallet = totalSupplyAmount;
    }

    function clearStuckEth() external onlyOwner{
        require(address(this).balance > 0, "Token: no ETH to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function SetFee(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 30 && _sellFee <= 99, "Fees cannot exceed 30%");
        BuyFee = _buyFee;
        SellFee = _sellFee;
    }

    function setSwapTokensAtAmount(uint256 _amount) external onlyOwner {
        swapTokensAtAmount = _amount * (10 ** 18);
    }

    function swapBack(uint256 tokens) private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap; 

        if (contractBalance == 0) {
            return;
        }

    if ((BuyFee+SellFee) == 0) {

        if(contractBalance > 0 && contractBalance < swapTokensAtAmount) {
            tokensToSwap = contractBalance;
        }
        else {
            uint256 sellFeeTokens = tokens.mul(SellFee).div(100);
            tokens -= sellFeeTokens;
            if (tokens > swapTokensAtAmount) {
                tokensToSwap = swapTokensAtAmount;
            }
            else {
                tokensToSwap = tokens;
            }
        }
    }

    else {

        if(contractBalance > 0 && contractBalance < swapTokensAtAmount.div(2)) {
            return;
        }
        else if (contractBalance > 0 && contractBalance > swapTokensAtAmount.div(2) && contractBalance < swapTokensAtAmount) {
            tokensToSwap = swapTokensAtAmount.div(2);
        }
        else {
            uint256 sellFeeTokens = tokens.mul(SellFee).div(100);
            tokens -= sellFeeTokens;
            if (tokens > swapTokensAtAmount) {
                tokensToSwap = swapTokensAtAmount;
            } else {
                tokensToSwap = tokens;
            }
        }
    }
        swapTokensForEth(tokensToSwap);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"SetFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","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":[],"name":"initialTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405269152d02c7e14af6800000600955686c6b935b8bbd400000600a55686c6b935b8bbd400000600b55683635c9adc5dea00000600c555f600d5f6101000a81548160ff0219169083151502179055505f600d60016101000a81548160ff0219169083151502179055506014600e556014600f5534801562000082575f80fd5b50604051620049dc380380620049dc8339818101604052810190620000a8919062000a5a565b6040518060400160405280600d81526020017f436861696e2057617463686572000000000000000000000000000000000000008152506040518060400160405280600381526020017f4559450000000000000000000000000000000000000000000000000000000000815250816003908162000125919062000cee565b50806004908162000137919062000cee565b5050506200015a6200014e6200054560201b60201c565b6200054c60201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000214919062000a5a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a2919062000a5a565b6040518363ffffffff1660e01b8152600401620002c192919062000de3565b6020604051808303815f875af1158015620002de573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000304919062000a5a565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200037760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200060f60201b60201c565b620003ab60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006ad60201b60201c565b620003c06080516001620006ad60201b60201c565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004106200054560201b60201c565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000471620004636200071560201b60201c565b60016200073d60201b60201c565b620004843060016200073d60201b60201c565b620004978160016200073d60201b60201c565b620004ac61dead60016200073d60201b60201c565b620004ce620004c06200071560201b60201c565b6001620006ad60201b60201c565b620004e1306001620006ad60201b60201c565b620004f4816001620006ad60201b60201c565b6200050961dead6001620006ad60201b60201c565b6200053e60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954620007f560201b60201c565b5062000fc4565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620006bd6200095a60201b60201c565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200074d6200095a60201b60201c565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620007e9919062000e2a565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000866576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200085d9062000ea3565b60405180910390fd5b620008795f8383620009eb60201b60201c565b8060025f8282546200088c919062000ef0565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200093b919062000f3b565b60405180910390a3620009565f8383620009f060201b60201c565b5050565b6200096a6200054560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009906200071560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009e09062000fa4565b60405180910390fd5b565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000a2482620009f9565b9050919050565b62000a368162000a18565b811462000a41575f80fd5b50565b5f8151905062000a548162000a2b565b92915050565b5f6020828403121562000a725762000a71620009f5565b5b5f62000a818482850162000a44565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b0657607f821691505b60208210810362000b1c5762000b1b62000ac1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b43565b62000b8c868362000b43565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000bd662000bd062000bca8462000ba4565b62000bad565b62000ba4565b9050919050565b5f819050919050565b62000bf18362000bb6565b62000c0962000c008262000bdd565b84845462000b4f565b825550505050565b5f90565b62000c1f62000c11565b62000c2c81848462000be6565b505050565b5b8181101562000c535762000c475f8262000c15565b60018101905062000c32565b5050565b601f82111562000ca25762000c6c8162000b22565b62000c778462000b34565b8101602085101562000c87578190505b62000c9f62000c968562000b34565b83018262000c31565b50505b505050565b5f82821c905092915050565b5f62000cc45f198460080262000ca7565b1980831691505092915050565b5f62000cde838362000cb3565b9150826002028217905092915050565b62000cf98262000a8a565b67ffffffffffffffff81111562000d155762000d1462000a94565b5b62000d21825462000aee565b62000d2e82828562000c57565b5f60209050601f83116001811462000d64575f841562000d4f578287015190505b62000d5b858262000cd1565b86555062000dca565b601f19841662000d748662000b22565b5f5b8281101562000d9d5784890151825560018201915060208501945060208101905062000d76565b8683101562000dbd578489015162000db9601f89168262000cb3565b8355505b6001600288020188555050505b505050505050565b62000ddd8162000a18565b82525050565b5f60408201905062000df85f83018562000dd2565b62000e07602083018462000dd2565b9392505050565b5f8115159050919050565b62000e248162000e0e565b82525050565b5f60208201905062000e3f5f83018462000e19565b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000e8b601f8362000e45565b915062000e988262000e55565b602082019050919050565b5f6020820190508181035f83015262000ebc8162000e7d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000efc8262000ba4565b915062000f098362000ba4565b925082820190508082111562000f245762000f2362000ec3565b5b92915050565b62000f358162000ba4565b82525050565b5f60208201905062000f505f83018462000f2a565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000f8c60208362000e45565b915062000f998262000f56565b602082019050919050565b5f6020820190508181035f83015262000fbd8162000f7e565b9050919050565b6080516139c7620010155f395f818161095101528181610e1c01528181610e8201528181610f23015281816111680152818161121d0152818161262601528181612705015261272c01526139c75ff3fe6080604052600436106101e6575f3560e01c80638da5cb5b11610101578063c9567bf911610094578063e2f4560511610063578063e2f45605146106bf578063f2fde38b146106e9578063f8b45b0514610711578063ffb54a991461073b576101ed565b8063c9567bf914610619578063cf9522fd1461062f578063dd62ed3e14610659578063dd85465214610695576101ed565b8063a9059cbb116100d0578063a9059cbb14610563578063afa4f3b21461059f578063c0246668146105c7578063c8c8ebe4146105ef576101ed565b80638da5cb5b146104ab57806395d89b41146104d55780639a7a23d6146104ff578063a457c2d714610527576101ed565b80634fbee19311610179578063715018a611610148578063715018a614610441578063751039fc146104575780637571336a1461046d57806389291a8f14610495576101ed565b80634fbee19314610375578063583e0568146103b15780636ddd1713146103db57806370a0823114610405576101ed565b806323b872dd116101b557806323b872dd146102a9578063311028af146102e5578063313ce5671461030f5780633950935114610339576101ed565b8063032dc6a2146101f157806306fdde0314610219578063095ea7b31461024357806318160ddd1461027f576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190612814565b610765565b005b348015610224575f80fd5b5061022d6107d0565b60405161023a91906128dc565b60405180910390f35b34801561024e575f80fd5b5061026960048036038101906102649190612956565b610860565b60405161027691906129ae565b60405180910390f35b34801561028a575f80fd5b50610293610882565b6040516102a091906129d6565b60405180910390f35b3480156102b4575f80fd5b506102cf60048036038101906102ca91906129ef565b61088b565b6040516102dc91906129ae565b60405180910390f35b3480156102f0575f80fd5b506102f96108b9565b60405161030691906129d6565b60405180910390f35b34801561031a575f80fd5b506103236108bf565b6040516103309190612a5a565b60405180910390f35b348015610344575f80fd5b5061035f600480360381019061035a9190612956565b6108c7565b60405161036c91906129ae565b60405180910390f35b348015610380575f80fd5b5061039b60048036038101906103969190612a73565b6108fd565b6040516103a891906129ae565b60405180910390f35b3480156103bc575f80fd5b506103c561094f565b6040516103d29190612af9565b60405180910390f35b3480156103e6575f80fd5b506103ef610973565b6040516103fc91906129ae565b60405180910390f35b348015610410575f80fd5b5061042b60048036038101906104269190612a73565b610986565b60405161043891906129d6565b60405180910390f35b34801561044c575f80fd5b506104556109cb565b005b348015610462575f80fd5b5061046b6109de565b005b348015610478575f80fd5b50610493600480360381019061048e9190612b3c565b610a02565b005b3480156104a0575f80fd5b506104a9610a62565b005b3480156104b6575f80fd5b506104bf610af2565b6040516104cc9190612b89565b60405180910390f35b3480156104e0575f80fd5b506104e9610b1a565b6040516104f691906128dc565b60405180910390f35b34801561050a575f80fd5b5061052560048036038101906105209190612b3c565b610baa565b005b348015610532575f80fd5b5061054d60048036038101906105489190612956565b610c4f565b60405161055a91906129ae565b60405180910390f35b34801561056e575f80fd5b5061058960048036038101906105849190612956565b610cc4565b60405161059691906129ae565b60405180910390f35b3480156105aa575f80fd5b506105c560048036038101906105c09190612ba2565b610ce6565b005b3480156105d2575f80fd5b506105ed60048036038101906105e89190612b3c565b610d0b565b005b3480156105fa575f80fd5b50610603610db9565b60405161061091906129d6565b60405180910390f35b348015610624575f80fd5b5061062d610dbf565b005b34801561063a575f80fd5b50610643611306565b60405161065091906129d6565b60405180910390f35b348015610664575f80fd5b5061067f600480360381019061067a9190612bcd565b61130c565b60405161068c91906129d6565b60405180910390f35b3480156106a0575f80fd5b506106a961138e565b6040516106b691906129d6565b60405180910390f35b3480156106ca575f80fd5b506106d3611394565b6040516106e091906129d6565b60405180910390f35b3480156106f4575f80fd5b5061070f600480360381019061070a9190612a73565b61139a565b005b34801561071c575f80fd5b5061072561141c565b60405161073291906129d6565b60405180910390f35b348015610746575f80fd5b5061074f611422565b60405161075c91906129ae565b60405180910390f35b61076d611434565b601e821115801561077f575060638111155b6107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b590612c55565b60405180910390fd5b81600e8190555080600f819055505050565b6060600380546107df90612ca0565b80601f016020809104026020016040519081016040528092919081815260200182805461080b90612ca0565b80156108565780601f1061082d57610100808354040283529160200191610856565b820191905f5260205f20905b81548152906001019060200180831161083957829003601f168201915b5050505050905090565b5f8061086a6114b2565b90506108778185856114b9565b600191505092915050565b5f600254905090565b5f806108956114b2565b90506108a285828561167c565b6108ad858585611707565b60019150509392505050565b60095481565b5f6012905090565b5f806108d16114b2565b90506108f28185856108e3858961130c565b6108ed9190612cfd565b6114b9565b600191505092915050565b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109d3611434565b6109dc5f611fe9565b565b6109e6611434565b5f6109ef610882565b905080600a8190555080600b8190555050565b610a0a611434565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610a6a611434565b5f4711610aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa390612d7a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610aef573d5f803e3d5ffd5b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b2990612ca0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5590612ca0565b8015610ba05780601f10610b7757610100808354040283529160200191610ba0565b820191905f5260205f20905b815481529060010190602001808311610b8357829003601f168201915b5050505050905090565b610bb2611434565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3890612e08565b60405180910390fd5b610c4b82826120ac565b5050565b5f80610c596114b2565b90505f610c66828661130c565b905083811015610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca290612e96565b60405180910390fd5b610cb882868684036114b9565b60019250505092915050565b5f80610cce6114b2565b9050610cdb818585611707565b600191505092915050565b610cee611434565b670de0b6b3a764000081610d029190612eb4565b600c8190555050565b610d13611434565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610dad91906129ae565b60405180910390a25050565b600a5481565b610dc7611434565b600d5f9054906101000a900460ff1615610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90612f3f565b60405180910390fd5b610e43307f00000000000000000000000000000000000000000000000000000000000000006009546114b9565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610edf929190612f5d565b6020604051808303815f875af1158015610efb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1f9190612f98565b505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fae9190612fd7565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a0823160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161100b9190612b89565b602060405180830381865afa158015611026573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104a9190613016565b90505f6110766064611068603c60095461214a90919063ffffffff16565b61215f90919063ffffffff16565b90505f8083111561121b57611094834761217490919063ffffffff16565b90505f6110bc826110ae868661214a90919063ffffffff16565b61215f90919063ffffffff16565b90506110ea3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612189565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611150575f80fd5b505af1158015611162573d5f803e3d5ffd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330865f876111af610af2565b426040518863ffffffff1660e01b81526004016111d19695949392919061307a565b60606040518083038185885af11580156111ed573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061121291906130d9565b505050506112cb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7194730855f80611264610af2565b426040518863ffffffff1660e01b815260040161128696959493929190613129565b60606040518083038185885af11580156112a2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112c791906130d9565b5050505b6001600d60016101000a81548160ff0219169083151502179055506001600d5f6101000a81548160ff02191690831515021790555050505050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b600c5481565b6113a2611434565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611410576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611407906131f8565b60405180910390fd5b61141981611fe9565b50565b600b5481565b600d5f9054906101000a900460ff1681565b61143c6114b2565b73ffffffffffffffffffffffffffffffffffffffff1661145a610af2565b73ffffffffffffffffffffffffffffffffffffffff16146114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a790613260565b60405180910390fd5b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e906132ee565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158c9061337c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161166f91906129d6565b60405180910390a3505050565b5f611687848461130c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461170157818110156116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea906133e4565b60405180910390fd5b61170084848484036114b9565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c90613472565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da90613500565b60405180910390fd5b5f81036117fa576117f583835f612189565b611fe4565b611802610af2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118705750611840610af2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118a857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118e2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118fb5750600860149054906101000a900460ff16155b15611cc857600d5f9054906101000a900460ff166119ee5760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806119ae575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613568565b60405180910390fd5b5b60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a8b575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b3257600a54811115611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc906135f6565b60405180910390fd5b600b54611ae183610986565b82611aec9190612cfd565b1115611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b249061365e565b60405180910390fd5b611cc7565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611bcf575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c1e57600a54811115611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c10906136ec565b60405180910390fd5b611cc6565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611cc557600b54611c7883610986565b82611c839190612cfd565b1115611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb9061365e565b60405180910390fd5b5b5b5b5b5f611cd230610986565b90505f8082119050808015611cf35750600d60019054906101000a900460ff165b8015611d0c5750600860149054906101000a900460ff16155b8015611d5f575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611db2575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e05575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e49576001600860146101000a81548160ff021916908315150217905550611e2e836123f5565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ef8575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f01575f90505b5f8115611fd45760125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611f8657611f7f6064611f71600f548861214a90919063ffffffff16565b61215f90919063ffffffff16565b9050611fb1565b611fae6064611fa0600e548861214a90919063ffffffff16565b61215f90919063ffffffff16565b90505b5f811115611fc557611fc4873083612189565b5b8085611fd1919061370a565b94505b611fdf878787612189565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f81836121579190612eb4565b905092915050565b5f818361216c919061376a565b905092915050565b5f8183612181919061370a565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ee90613472565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225c90613500565b60405180910390fd5b61227083838361257f565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea9061380a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123dc91906129d6565b60405180910390a36123ef848484612584565b50505050565b5f6123ff30610986565b90505f80820361241057505061257c565b5f600f54600e546124219190612cfd565b0361249b575f821180156124365750600c5482105b1561244357819050612496565b5f61246c606461245e600f548761214a90919063ffffffff16565b61215f90919063ffffffff16565b9050808461247a919061370a565b9350600c5484111561249057600c549150612494565b8391505b505b612570565b5f821180156124be57506124bb6002600c5461215f90919063ffffffff16565b82105b156124ca57505061257c565b5f821180156124ed57506124ea6002600c5461215f90919063ffffffff16565b82115b80156124fa5750600c5482105b1561251c576125156002600c5461215f90919063ffffffff16565b905061256f565b5f6125456064612537600f548761214a90919063ffffffff16565b61215f90919063ffffffff16565b90508084612553919061370a565b9350600c5484111561256957600c54915061256d565b8391505b505b5b61257981612589565b50505b50565b505050565b505050565b5f600267ffffffffffffffff8111156125a5576125a4613828565b5b6040519080825280602002602001820160405280156125d35781602001602082028036833780820191505090505b50905030815f815181106125ea576125e9613855565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561268d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b19190612fd7565b816001815181106126c5576126c4613855565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061272a307f0000000000000000000000000000000000000000000000000000000000000000846114b9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016127ac959493929190613939565b5f604051808303815f87803b1580156127c3575f80fd5b505af11580156127d5573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b6127f3816127e1565b81146127fd575f80fd5b50565b5f8135905061280e816127ea565b92915050565b5f806040838503121561282a576128296127dd565b5b5f61283785828601612800565b925050602061284885828601612800565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561288957808201518184015260208101905061286e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128ae82612852565b6128b8818561285c565b93506128c881856020860161286c565b6128d181612894565b840191505092915050565b5f6020820190508181035f8301526128f481846128a4565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612925826128fc565b9050919050565b6129358161291b565b811461293f575f80fd5b50565b5f813590506129508161292c565b92915050565b5f806040838503121561296c5761296b6127dd565b5b5f61297985828601612942565b925050602061298a85828601612800565b9150509250929050565b5f8115159050919050565b6129a881612994565b82525050565b5f6020820190506129c15f83018461299f565b92915050565b6129d0816127e1565b82525050565b5f6020820190506129e95f8301846129c7565b92915050565b5f805f60608486031215612a0657612a056127dd565b5b5f612a1386828701612942565b9350506020612a2486828701612942565b9250506040612a3586828701612800565b9150509250925092565b5f60ff82169050919050565b612a5481612a3f565b82525050565b5f602082019050612a6d5f830184612a4b565b92915050565b5f60208284031215612a8857612a876127dd565b5b5f612a9584828501612942565b91505092915050565b5f819050919050565b5f612ac1612abc612ab7846128fc565b612a9e565b6128fc565b9050919050565b5f612ad282612aa7565b9050919050565b5f612ae382612ac8565b9050919050565b612af381612ad9565b82525050565b5f602082019050612b0c5f830184612aea565b92915050565b612b1b81612994565b8114612b25575f80fd5b50565b5f81359050612b3681612b12565b92915050565b5f8060408385031215612b5257612b516127dd565b5b5f612b5f85828601612942565b9250506020612b7085828601612b28565b9150509250929050565b612b838161291b565b82525050565b5f602082019050612b9c5f830184612b7a565b92915050565b5f60208284031215612bb757612bb66127dd565b5b5f612bc484828501612800565b91505092915050565b5f8060408385031215612be357612be26127dd565b5b5f612bf085828601612942565b9250506020612c0185828601612942565b9150509250929050565b7f466565732063616e6e6f742065786365656420333025000000000000000000005f82015250565b5f612c3f60168361285c565b9150612c4a82612c0b565b602082019050919050565b5f6020820190508181035f830152612c6c81612c33565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612cb757607f821691505b602082108103612cca57612cc9612c73565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d07826127e1565b9150612d12836127e1565b9250828201905080821115612d2a57612d29612cd0565b5b92915050565b7f546f6b656e3a206e6f2045544820746f20636c656172000000000000000000005f82015250565b5f612d6460168361285c565b9150612d6f82612d30565b602082019050919050565b5f6020820190508181035f830152612d9181612d58565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f612df260398361285c565b9150612dfd82612d98565b604082019050919050565b5f6020820190508181035f830152612e1f81612de6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612e8060258361285c565b9150612e8b82612e26565b604082019050919050565b5f6020820190508181035f830152612ead81612e74565b9050919050565b5f612ebe826127e1565b9150612ec9836127e1565b9250828202612ed7816127e1565b91508282048414831517612eee57612eed612cd0565b5b5092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612f2960178361285c565b9150612f3482612ef5565b602082019050919050565b5f6020820190508181035f830152612f5681612f1d565b9050919050565b5f604082019050612f705f830185612b7a565b612f7d60208301846129c7565b9392505050565b5f81519050612f9281612b12565b92915050565b5f60208284031215612fad57612fac6127dd565b5b5f612fba84828501612f84565b91505092915050565b5f81519050612fd18161292c565b92915050565b5f60208284031215612fec57612feb6127dd565b5b5f612ff984828501612fc3565b91505092915050565b5f81519050613010816127ea565b92915050565b5f6020828403121561302b5761302a6127dd565b5b5f61303884828501613002565b91505092915050565b5f819050919050565b5f61306461305f61305a84613041565b612a9e565b6127e1565b9050919050565b6130748161304a565b82525050565b5f60c08201905061308d5f830189612b7a565b61309a60208301886129c7565b6130a7604083018761306b565b6130b460608301866129c7565b6130c16080830185612b7a565b6130ce60a08301846129c7565b979650505050505050565b5f805f606084860312156130f0576130ef6127dd565b5b5f6130fd86828701613002565b935050602061310e86828701613002565b925050604061311f86828701613002565b9150509250925092565b5f60c08201905061313c5f830189612b7a565b61314960208301886129c7565b613156604083018761306b565b613163606083018661306b565b6131706080830185612b7a565b61317d60a08301846129c7565b979650505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6131e260268361285c565b91506131ed82613188565b604082019050919050565b5f6020820190508181035f83015261320f816131d6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61324a60208361285c565b915061325582613216565b602082019050919050565b5f6020820190508181035f8301526132778161323e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132d860248361285c565b91506132e38261327e565b604082019050919050565b5f6020820190508181035f830152613305816132cc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61336660228361285c565b91506133718261330c565b604082019050919050565b5f6020820190508181035f8301526133938161335a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6133ce601d8361285c565b91506133d98261339a565b602082019050919050565b5f6020820190508181035f8301526133fb816133c2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61345c60258361285c565b915061346782613402565b604082019050919050565b5f6020820190508181035f83015261348981613450565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134ea60238361285c565b91506134f582613490565b604082019050919050565b5f6020820190508181035f830152613517816134de565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61355260168361285c565b915061355d8261351e565b602082019050919050565b5f6020820190508181035f83015261357f81613546565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6135e060358361285c565b91506135eb82613586565b604082019050919050565b5f6020820190508181035f83015261360d816135d4565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61364860138361285c565b915061365382613614565b602082019050919050565b5f6020820190508181035f8301526136758161363c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6136d660368361285c565b91506136e18261367c565b604082019050919050565b5f6020820190508181035f830152613703816136ca565b9050919050565b5f613714826127e1565b915061371f836127e1565b925082820390508181111561373757613736612cd0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613774826127e1565b915061377f836127e1565b92508261378f5761378e61373d565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6137f460268361285c565b91506137ff8261379a565b604082019050919050565b5f6020820190508181035f830152613821816137e8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138b48161291b565b82525050565b5f6138c583836138ab565b60208301905092915050565b5f602082019050919050565b5f6138e782613882565b6138f1818561388c565b93506138fc8361389c565b805f5b8381101561392c57815161391388826138ba565b975061391e836138d1565b9250506001810190506138ff565b5085935050505092915050565b5f60a08201905061394c5f8301886129c7565b613959602083018761306b565b818103604083015261396b81866138dd565b905061397a6060830185612b7a565b61398760808301846129c7565b969550505050505056fea26469706673582212209d254f688f6dc7c65f94f98b77fb14d8e9c3ca8fc77b87efa433522192b4e9ff64736f6c63430008150033000000000000000000000000231185086af173f04f4e908e801785e7f6ca4134

Deployed Bytecode

0x6080604052600436106101e6575f3560e01c80638da5cb5b11610101578063c9567bf911610094578063e2f4560511610063578063e2f45605146106bf578063f2fde38b146106e9578063f8b45b0514610711578063ffb54a991461073b576101ed565b8063c9567bf914610619578063cf9522fd1461062f578063dd62ed3e14610659578063dd85465214610695576101ed565b8063a9059cbb116100d0578063a9059cbb14610563578063afa4f3b21461059f578063c0246668146105c7578063c8c8ebe4146105ef576101ed565b80638da5cb5b146104ab57806395d89b41146104d55780639a7a23d6146104ff578063a457c2d714610527576101ed565b80634fbee19311610179578063715018a611610148578063715018a614610441578063751039fc146104575780637571336a1461046d57806389291a8f14610495576101ed565b80634fbee19314610375578063583e0568146103b15780636ddd1713146103db57806370a0823114610405576101ed565b806323b872dd116101b557806323b872dd146102a9578063311028af146102e5578063313ce5671461030f5780633950935114610339576101ed565b8063032dc6a2146101f157806306fdde0314610219578063095ea7b31461024357806318160ddd1461027f576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190612814565b610765565b005b348015610224575f80fd5b5061022d6107d0565b60405161023a91906128dc565b60405180910390f35b34801561024e575f80fd5b5061026960048036038101906102649190612956565b610860565b60405161027691906129ae565b60405180910390f35b34801561028a575f80fd5b50610293610882565b6040516102a091906129d6565b60405180910390f35b3480156102b4575f80fd5b506102cf60048036038101906102ca91906129ef565b61088b565b6040516102dc91906129ae565b60405180910390f35b3480156102f0575f80fd5b506102f96108b9565b60405161030691906129d6565b60405180910390f35b34801561031a575f80fd5b506103236108bf565b6040516103309190612a5a565b60405180910390f35b348015610344575f80fd5b5061035f600480360381019061035a9190612956565b6108c7565b60405161036c91906129ae565b60405180910390f35b348015610380575f80fd5b5061039b60048036038101906103969190612a73565b6108fd565b6040516103a891906129ae565b60405180910390f35b3480156103bc575f80fd5b506103c561094f565b6040516103d29190612af9565b60405180910390f35b3480156103e6575f80fd5b506103ef610973565b6040516103fc91906129ae565b60405180910390f35b348015610410575f80fd5b5061042b60048036038101906104269190612a73565b610986565b60405161043891906129d6565b60405180910390f35b34801561044c575f80fd5b506104556109cb565b005b348015610462575f80fd5b5061046b6109de565b005b348015610478575f80fd5b50610493600480360381019061048e9190612b3c565b610a02565b005b3480156104a0575f80fd5b506104a9610a62565b005b3480156104b6575f80fd5b506104bf610af2565b6040516104cc9190612b89565b60405180910390f35b3480156104e0575f80fd5b506104e9610b1a565b6040516104f691906128dc565b60405180910390f35b34801561050a575f80fd5b5061052560048036038101906105209190612b3c565b610baa565b005b348015610532575f80fd5b5061054d60048036038101906105489190612956565b610c4f565b60405161055a91906129ae565b60405180910390f35b34801561056e575f80fd5b5061058960048036038101906105849190612956565b610cc4565b60405161059691906129ae565b60405180910390f35b3480156105aa575f80fd5b506105c560048036038101906105c09190612ba2565b610ce6565b005b3480156105d2575f80fd5b506105ed60048036038101906105e89190612b3c565b610d0b565b005b3480156105fa575f80fd5b50610603610db9565b60405161061091906129d6565b60405180910390f35b348015610624575f80fd5b5061062d610dbf565b005b34801561063a575f80fd5b50610643611306565b60405161065091906129d6565b60405180910390f35b348015610664575f80fd5b5061067f600480360381019061067a9190612bcd565b61130c565b60405161068c91906129d6565b60405180910390f35b3480156106a0575f80fd5b506106a961138e565b6040516106b691906129d6565b60405180910390f35b3480156106ca575f80fd5b506106d3611394565b6040516106e091906129d6565b60405180910390f35b3480156106f4575f80fd5b5061070f600480360381019061070a9190612a73565b61139a565b005b34801561071c575f80fd5b5061072561141c565b60405161073291906129d6565b60405180910390f35b348015610746575f80fd5b5061074f611422565b60405161075c91906129ae565b60405180910390f35b61076d611434565b601e821115801561077f575060638111155b6107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b590612c55565b60405180910390fd5b81600e8190555080600f819055505050565b6060600380546107df90612ca0565b80601f016020809104026020016040519081016040528092919081815260200182805461080b90612ca0565b80156108565780601f1061082d57610100808354040283529160200191610856565b820191905f5260205f20905b81548152906001019060200180831161083957829003601f168201915b5050505050905090565b5f8061086a6114b2565b90506108778185856114b9565b600191505092915050565b5f600254905090565b5f806108956114b2565b90506108a285828561167c565b6108ad858585611707565b60019150509392505050565b60095481565b5f6012905090565b5f806108d16114b2565b90506108f28185856108e3858961130c565b6108ed9190612cfd565b6114b9565b600191505092915050565b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600d60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109d3611434565b6109dc5f611fe9565b565b6109e6611434565b5f6109ef610882565b905080600a8190555080600b8190555050565b610a0a611434565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610a6a611434565b5f4711610aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa390612d7a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610aef573d5f803e3d5ffd5b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b2990612ca0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5590612ca0565b8015610ba05780601f10610b7757610100808354040283529160200191610ba0565b820191905f5260205f20905b815481529060010190602001808311610b8357829003601f168201915b5050505050905090565b610bb2611434565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3890612e08565b60405180910390fd5b610c4b82826120ac565b5050565b5f80610c596114b2565b90505f610c66828661130c565b905083811015610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca290612e96565b60405180910390fd5b610cb882868684036114b9565b60019250505092915050565b5f80610cce6114b2565b9050610cdb818585611707565b600191505092915050565b610cee611434565b670de0b6b3a764000081610d029190612eb4565b600c8190555050565b610d13611434565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610dad91906129ae565b60405180910390a25050565b600a5481565b610dc7611434565b600d5f9054906101000a900460ff1615610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90612f3f565b60405180910390fd5b610e43307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6009546114b9565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610edf929190612f5d565b6020604051808303815f875af1158015610efb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1f9190612f98565b505f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fae9190612fd7565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a0823160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161100b9190612b89565b602060405180830381865afa158015611026573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104a9190613016565b90505f6110766064611068603c60095461214a90919063ffffffff16565b61215f90919063ffffffff16565b90505f8083111561121b57611094834761217490919063ffffffff16565b90505f6110bc826110ae868661214a90919063ffffffff16565b61215f90919063ffffffff16565b90506110ea3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612189565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611150575f80fd5b505af1158015611162573d5f803e3d5ffd5b505050507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198330865f876111af610af2565b426040518863ffffffff1660e01b81526004016111d19695949392919061307a565b60606040518083038185885af11580156111ed573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061121291906130d9565b505050506112cb565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7194730855f80611264610af2565b426040518863ffffffff1660e01b815260040161128696959493929190613129565b60606040518083038185885af11580156112a2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112c791906130d9565b5050505b6001600d60016101000a81548160ff0219169083151502179055506001600d5f6101000a81548160ff02191690831515021790555050505050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b600c5481565b6113a2611434565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611410576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611407906131f8565b60405180910390fd5b61141981611fe9565b50565b600b5481565b600d5f9054906101000a900460ff1681565b61143c6114b2565b73ffffffffffffffffffffffffffffffffffffffff1661145a610af2565b73ffffffffffffffffffffffffffffffffffffffff16146114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a790613260565b60405180910390fd5b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e906132ee565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158c9061337c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161166f91906129d6565b60405180910390a3505050565b5f611687848461130c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461170157818110156116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea906133e4565b60405180910390fd5b61170084848484036114b9565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c90613472565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da90613500565b60405180910390fd5b5f81036117fa576117f583835f612189565b611fe4565b611802610af2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118705750611840610af2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118a857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118e2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118fb5750600860149054906101000a900460ff16155b15611cc857600d5f9054906101000a900460ff166119ee5760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806119ae575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613568565b60405180910390fd5b5b60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a8b575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b3257600a54811115611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc906135f6565b60405180910390fd5b600b54611ae183610986565b82611aec9190612cfd565b1115611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b249061365e565b60405180910390fd5b611cc7565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611bcf575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c1e57600a54811115611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c10906136ec565b60405180910390fd5b611cc6565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611cc557600b54611c7883610986565b82611c839190612cfd565b1115611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb9061365e565b60405180910390fd5b5b5b5b5b5f611cd230610986565b90505f8082119050808015611cf35750600d60019054906101000a900460ff165b8015611d0c5750600860149054906101000a900460ff16155b8015611d5f575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611db2575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e05575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e49576001600860146101000a81548160ff021916908315150217905550611e2e836123f5565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ef8575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f01575f90505b5f8115611fd45760125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611f8657611f7f6064611f71600f548861214a90919063ffffffff16565b61215f90919063ffffffff16565b9050611fb1565b611fae6064611fa0600e548861214a90919063ffffffff16565b61215f90919063ffffffff16565b90505b5f811115611fc557611fc4873083612189565b5b8085611fd1919061370a565b94505b611fdf878787612189565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f81836121579190612eb4565b905092915050565b5f818361216c919061376a565b905092915050565b5f8183612181919061370a565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ee90613472565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225c90613500565b60405180910390fd5b61227083838361257f565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea9061380a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123dc91906129d6565b60405180910390a36123ef848484612584565b50505050565b5f6123ff30610986565b90505f80820361241057505061257c565b5f600f54600e546124219190612cfd565b0361249b575f821180156124365750600c5482105b1561244357819050612496565b5f61246c606461245e600f548761214a90919063ffffffff16565b61215f90919063ffffffff16565b9050808461247a919061370a565b9350600c5484111561249057600c549150612494565b8391505b505b612570565b5f821180156124be57506124bb6002600c5461215f90919063ffffffff16565b82105b156124ca57505061257c565b5f821180156124ed57506124ea6002600c5461215f90919063ffffffff16565b82115b80156124fa5750600c5482105b1561251c576125156002600c5461215f90919063ffffffff16565b905061256f565b5f6125456064612537600f548761214a90919063ffffffff16565b61215f90919063ffffffff16565b90508084612553919061370a565b9350600c5484111561256957600c54915061256d565b8391505b505b5b61257981612589565b50505b50565b505050565b505050565b5f600267ffffffffffffffff8111156125a5576125a4613828565b5b6040519080825280602002602001820160405280156125d35781602001602082028036833780820191505090505b50905030815f815181106125ea576125e9613855565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561268d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b19190612fd7565b816001815181106126c5576126c4613855565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061272a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846114b9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016127ac959493929190613939565b5f604051808303815f87803b1580156127c3575f80fd5b505af11580156127d5573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b6127f3816127e1565b81146127fd575f80fd5b50565b5f8135905061280e816127ea565b92915050565b5f806040838503121561282a576128296127dd565b5b5f61283785828601612800565b925050602061284885828601612800565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561288957808201518184015260208101905061286e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128ae82612852565b6128b8818561285c565b93506128c881856020860161286c565b6128d181612894565b840191505092915050565b5f6020820190508181035f8301526128f481846128a4565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612925826128fc565b9050919050565b6129358161291b565b811461293f575f80fd5b50565b5f813590506129508161292c565b92915050565b5f806040838503121561296c5761296b6127dd565b5b5f61297985828601612942565b925050602061298a85828601612800565b9150509250929050565b5f8115159050919050565b6129a881612994565b82525050565b5f6020820190506129c15f83018461299f565b92915050565b6129d0816127e1565b82525050565b5f6020820190506129e95f8301846129c7565b92915050565b5f805f60608486031215612a0657612a056127dd565b5b5f612a1386828701612942565b9350506020612a2486828701612942565b9250506040612a3586828701612800565b9150509250925092565b5f60ff82169050919050565b612a5481612a3f565b82525050565b5f602082019050612a6d5f830184612a4b565b92915050565b5f60208284031215612a8857612a876127dd565b5b5f612a9584828501612942565b91505092915050565b5f819050919050565b5f612ac1612abc612ab7846128fc565b612a9e565b6128fc565b9050919050565b5f612ad282612aa7565b9050919050565b5f612ae382612ac8565b9050919050565b612af381612ad9565b82525050565b5f602082019050612b0c5f830184612aea565b92915050565b612b1b81612994565b8114612b25575f80fd5b50565b5f81359050612b3681612b12565b92915050565b5f8060408385031215612b5257612b516127dd565b5b5f612b5f85828601612942565b9250506020612b7085828601612b28565b9150509250929050565b612b838161291b565b82525050565b5f602082019050612b9c5f830184612b7a565b92915050565b5f60208284031215612bb757612bb66127dd565b5b5f612bc484828501612800565b91505092915050565b5f8060408385031215612be357612be26127dd565b5b5f612bf085828601612942565b9250506020612c0185828601612942565b9150509250929050565b7f466565732063616e6e6f742065786365656420333025000000000000000000005f82015250565b5f612c3f60168361285c565b9150612c4a82612c0b565b602082019050919050565b5f6020820190508181035f830152612c6c81612c33565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612cb757607f821691505b602082108103612cca57612cc9612c73565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d07826127e1565b9150612d12836127e1565b9250828201905080821115612d2a57612d29612cd0565b5b92915050565b7f546f6b656e3a206e6f2045544820746f20636c656172000000000000000000005f82015250565b5f612d6460168361285c565b9150612d6f82612d30565b602082019050919050565b5f6020820190508181035f830152612d9181612d58565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f612df260398361285c565b9150612dfd82612d98565b604082019050919050565b5f6020820190508181035f830152612e1f81612de6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612e8060258361285c565b9150612e8b82612e26565b604082019050919050565b5f6020820190508181035f830152612ead81612e74565b9050919050565b5f612ebe826127e1565b9150612ec9836127e1565b9250828202612ed7816127e1565b91508282048414831517612eee57612eed612cd0565b5b5092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612f2960178361285c565b9150612f3482612ef5565b602082019050919050565b5f6020820190508181035f830152612f5681612f1d565b9050919050565b5f604082019050612f705f830185612b7a565b612f7d60208301846129c7565b9392505050565b5f81519050612f9281612b12565b92915050565b5f60208284031215612fad57612fac6127dd565b5b5f612fba84828501612f84565b91505092915050565b5f81519050612fd18161292c565b92915050565b5f60208284031215612fec57612feb6127dd565b5b5f612ff984828501612fc3565b91505092915050565b5f81519050613010816127ea565b92915050565b5f6020828403121561302b5761302a6127dd565b5b5f61303884828501613002565b91505092915050565b5f819050919050565b5f61306461305f61305a84613041565b612a9e565b6127e1565b9050919050565b6130748161304a565b82525050565b5f60c08201905061308d5f830189612b7a565b61309a60208301886129c7565b6130a7604083018761306b565b6130b460608301866129c7565b6130c16080830185612b7a565b6130ce60a08301846129c7565b979650505050505050565b5f805f606084860312156130f0576130ef6127dd565b5b5f6130fd86828701613002565b935050602061310e86828701613002565b925050604061311f86828701613002565b9150509250925092565b5f60c08201905061313c5f830189612b7a565b61314960208301886129c7565b613156604083018761306b565b613163606083018661306b565b6131706080830185612b7a565b61317d60a08301846129c7565b979650505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6131e260268361285c565b91506131ed82613188565b604082019050919050565b5f6020820190508181035f83015261320f816131d6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61324a60208361285c565b915061325582613216565b602082019050919050565b5f6020820190508181035f8301526132778161323e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132d860248361285c565b91506132e38261327e565b604082019050919050565b5f6020820190508181035f830152613305816132cc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61336660228361285c565b91506133718261330c565b604082019050919050565b5f6020820190508181035f8301526133938161335a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6133ce601d8361285c565b91506133d98261339a565b602082019050919050565b5f6020820190508181035f8301526133fb816133c2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61345c60258361285c565b915061346782613402565b604082019050919050565b5f6020820190508181035f83015261348981613450565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134ea60238361285c565b91506134f582613490565b604082019050919050565b5f6020820190508181035f830152613517816134de565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61355260168361285c565b915061355d8261351e565b602082019050919050565b5f6020820190508181035f83015261357f81613546565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6135e060358361285c565b91506135eb82613586565b604082019050919050565b5f6020820190508181035f83015261360d816135d4565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61364860138361285c565b915061365382613614565b602082019050919050565b5f6020820190508181035f8301526136758161363c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6136d660368361285c565b91506136e18261367c565b604082019050919050565b5f6020820190508181035f830152613703816136ca565b9050919050565b5f613714826127e1565b915061371f836127e1565b925082820390508181111561373757613736612cd0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613774826127e1565b915061377f836127e1565b92508261378f5761378e61373d565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6137f460268361285c565b91506137ff8261379a565b604082019050919050565b5f6020820190508181035f830152613821816137e8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138b48161291b565b82525050565b5f6138c583836138ab565b60208301905092915050565b5f602082019050919050565b5f6138e782613882565b6138f1818561388c565b93506138fc8361389c565b805f5b8381101561392c57815161391388826138ba565b975061391e836138d1565b9250506001810190506138ff565b5085935050505092915050565b5f60a08201905061394c5f8301886129c7565b613959602083018761306b565b818103604083015261396b81866138dd565b905061397a6060830185612b7a565b61398760808301846129c7565b969550505050505056fea26469706673582212209d254f688f6dc7c65f94f98b77fb14d8e9c3ca8fc77b87efa433522192b4e9ff64736f6c63430008150033

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

000000000000000000000000231185086af173f04f4e908e801785e7f6ca4134

-----Decoded View---------------
Arg [0] : wallet (address): 0x231185086aF173f04F4E908e801785E7f6cA4134

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000231185086af173f04f4e908e801785e7f6ca4134


Deployed Bytecode Sourcemap

15144:9393:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22787:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10168:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11100:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10489:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11309:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15595:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10388:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11612:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19384:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15230:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15846:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10605:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9244:103;;;;;;;;;;;;;:::i;:::-;;22394:193;;;;;;;;;;;;;:::i;:::-;;18552:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22595:184;;;;;;;;;;;;;:::i;:::-;;9009:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10276:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18917:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11858:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10740:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23006:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18727:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15651:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17406:1138;;;;;;;;;;;;;:::i;:::-;;15919:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10941:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15886:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15752:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9355:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15707:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15808:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22787:211;8968:13;:11;:13::i;:::-;22887:2:::1;22876:7;:13;;:31;;;;;22905:2;22893:8;:14;;22876:31;22868:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;22954:7;22945:6;:16;;;;22982:8;22972:7;:18;;;;22787:211:::0;;:::o;10168:100::-;10222:13;10255:5;10248:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10168:100;:::o;11100:201::-;11183:4;11200:13;11216:12;:10;:12::i;:::-;11200:28;;11239:32;11248:5;11255:7;11264:6;11239:8;:32::i;:::-;11289:4;11282:11;;;11100:201;;;;:::o;10489:108::-;10550:7;10577:12;;10570:19;;10489:108;:::o;11309:295::-;11440:4;11457:15;11475:12;:10;:12::i;:::-;11457:30;;11498:38;11514:4;11520:7;11529:6;11498:15;:38::i;:::-;11547:27;11557:4;11563:2;11567:6;11547:9;:27::i;:::-;11592:4;11585:11;;;11309:295;;;;;:::o;15595:49::-;;;;:::o;10388:93::-;10446:5;10471:2;10464:9;;10388:93;:::o;11612:238::-;11700:4;11717:13;11733:12;:10;:12::i;:::-;11717:28;;11756:64;11765:5;11772:7;11809:10;11781:25;11791:5;11798:7;11781:9;:25::i;:::-;:38;;;;:::i;:::-;11756:8;:64::i;:::-;11838:4;11831:11;;;11612:238;;;;:::o;19384:126::-;19450:4;19474:19;:28;19494:7;19474:28;;;;;;;;;;;;;;;;;;;;;;;;;19467:35;;19384:126;;;:::o;15230:52::-;;;:::o;15846:31::-;;;;;;;;;;;;;:::o;10605:127::-;10679:7;10706:9;:18;10716:7;10706:18;;;;;;;;;;;;;;;;10699:25;;10605:127;;;:::o;9244:103::-;8968:13;:11;:13::i;:::-;9309:30:::1;9336:1;9309:18;:30::i;:::-;9244:103::o:0;22394:193::-;8968:13;:11;:13::i;:::-;22447:25:::1;22475:13;:11;:13::i;:::-;22447:41;;22522:17;22499:20;:40;;;;22562:17;22550:9;:29;;;;22436:151;22394:193::o:0;18552:167::-;8968:13;:11;:13::i;:::-;18707:4:::1;18665:31;:39;18697:6;18665:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18552:167:::0;;:::o;22595:184::-;8968:13;:11;:13::i;:::-;22681:1:::1;22657:21;:25;22649:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22728:10;22720:28;;:51;22749:21;22720:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22595:184::o:0;9009:87::-;9055:7;9082:6;;;;;;;;;;;9075:13;;9009:87;:::o;10276:104::-;10332:13;10365:7;10358:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10276:104;:::o;18917:265::-;8968:13;:11;:13::i;:::-;19047::::1;;;;;;;;;;;19039:21;;:4;:21;;::::0;19031:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19133:41;19162:4;19168:5;19133:28;:41::i;:::-;18917:265:::0;;:::o;11858:436::-;11951:4;11968:13;11984:12;:10;:12::i;:::-;11968:28;;12007:24;12034:25;12044:5;12051:7;12034:9;:25::i;:::-;12007:52;;12098:15;12078:16;:35;;12070:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12191:60;12200:5;12207:7;12235:15;12216:16;:34;12191:8;:60::i;:::-;12282:4;12275:11;;;;11858:436;;;;:::o;10740:193::-;10819:4;10836:13;10852:12;:10;:12::i;:::-;10836:28;;10875;10885:5;10892:2;10896:6;10875:9;:28::i;:::-;10921:4;10914:11;;;10740:193;;;;:::o;23006:127::-;8968:13;:11;:13::i;:::-;23116:8:::1;23105:7;:20;;;;:::i;:::-;23084:18;:41;;;;23006:127:::0;:::o;18727:182::-;8968:13;:11;:13::i;:::-;18843:8:::1;18812:19;:28;18832:7;18812:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18883:7;18867:34;;;18892:8;18867:34;;;;;;:::i;:::-;;;;;;;;18727:182:::0;;:::o;15651:49::-;;;;:::o;17406:1138::-;8968:13;:11;:13::i;:::-;17470:11:::1;;;;;;;;;;;17469:12;17461:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;17519:70;17536:4;17551:16;17570:18;;17519:8;:70::i;:::-;17607:13;;;;;;;;;;;17600:29;;;17638:16;17657:14;17600:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17683:19;17705:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17683:45;;17739:19;17768:11;17761:29;;;17791:13;;;;;;;;;;;17761:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17739:66;;17816:21;17840:35;17871:3;17840:26;17863:2;17840:18;;:22;;:26;;;;:::i;:::-;:30;;:35;;;;:::i;:::-;17816:59;;17877:24;17930:1:::0;17916:11:::1;:15;17912:567;;;17953:38;17979:11;17953:21;:25;;:38;;;;:::i;:::-;17934:57;;18002:18;18023:52;18058:16;18023:30;18041:11;18023:13;:17;;:30;;;;:::i;:::-;:34;;:52;;;;:::i;:::-;18002:73;;18086:57;18110:4;18117:13;;;;;;;;;;;18132:10;18086:15;:57::i;:::-;18169:13;;;;;;;;;;;18154:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18201:16;:32;;;18241:16;18267:4;18274:13;18289:1;18292:16;18310:7;:5;:7::i;:::-;18319:15;18201:134;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17933:404;17912:567;;;18353:16;:32;;;18393:21;18424:4;18431:13;18446:1;18449::::0;18452:7:::1;:5;:7::i;:::-;18461:15;18353:124;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17912:567;18503:4;18489:11;;:18;;;;;;;;;;;;;;;;;;18532:4;18518:11;;:18;;;;;;;;;;;;;;;;;;17450:1094;;;;17406:1138::o:0;15919:27::-;;;;:::o;10941:151::-;11030:7;11057:11;:18;11069:5;11057:18;;;;;;;;;;;;;;;:27;11076:7;11057:27;;;;;;;;;;;;;;;;11050:34;;10941:151;;;;:::o;15886:26::-;;;;:::o;15752:47::-;;;;:::o;9355:201::-;8968:13;:11;:13::i;:::-;9464:1:::1;9444:22;;:8;:22;;::::0;9436:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9520:28;9539:8;9520:18;:28::i;:::-;9355:201:::0;:::o;15707:38::-;;;;:::o;15808:31::-;;;;;;;;;;;;;:::o;9104:132::-;9179:12;:10;:12::i;:::-;9168:23;;:7;:5;:7::i;:::-;:23;;;9160:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9104:132::o;653:98::-;706:7;733:10;726:17;;653:98;:::o;14031:380::-;14184:1;14167:19;;:5;:19;;;14159:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14265:1;14246:21;;:7;:21;;;14238:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14349:6;14319:11;:18;14331:5;14319:18;;;;;;;;;;;;;;;:27;14338:7;14319:27;;;;;;;;;;;;;;;:36;;;;14387:7;14371:32;;14380:5;14371:32;;;14396:6;14371:32;;;;;;:::i;:::-;;;;;;;;14031:380;;;:::o;14419:453::-;14554:24;14581:25;14591:5;14598:7;14581:9;:25::i;:::-;14554:52;;14641:17;14621:16;:37;14617:248;;14703:6;14683:16;:26;;14675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14787:51;14796:5;14803:7;14831:6;14812:16;:25;14787:8;:51::i;:::-;14617:248;14543:329;14419:453;;;:::o;19518:2379::-;19634:1;19618:18;;:4;:18;;;19610:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19711:1;19697:16;;:2;:16;;;19689:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19780:1;19770:6;:11;19766:93;;19798:28;19814:4;19820:2;19824:1;19798:15;:28::i;:::-;19841:7;;19766:93;19889:7;:5;:7::i;:::-;19881:15;;:4;:15;;;;:32;;;;;19906:7;:5;:7::i;:::-;19900:13;;:2;:13;;;;19881:32;:52;;;;;19931:1;19917:16;;:2;:16;;;;19881:52;:77;;;;;19951:6;19937:21;;:2;:21;;;;19881:77;:90;;;;;19963:8;;;;;;;;;;;19962:9;19881:90;19877:1060;;;19999:11;;;;;;;;;;;19994:148;;20043:19;:25;20063:4;20043:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20072:19;:23;20092:2;20072:23;;;;;;;;;;;;;;;;;;;;;;;;;20043:52;20035:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;19994:148;20166:25;:31;20192:4;20166:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20202:31;:35;20234:2;20202:35;;;;;;;;;;;;;;;;;;;;;;;;;20201:36;20166:71;20162:760;;;20298:20;;20288:6;:30;;20280:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;20433:9;;20416:13;20426:2;20416:9;:13::i;:::-;20407:6;:22;;;;:::i;:::-;:35;;20399:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20162:760;;;20515:25;:29;20541:2;20515:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20549:31;:37;20581:4;20549:37;;;;;;;;;;;;;;;;;;;;;;;;;20548:38;20515:71;20511:411;;;20629:20;;20619:6;:30;;20611:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;20511:411;;;20775:31;:35;20807:2;20775:35;;;;;;;;;;;;;;;;;;;;;;;;;20770:152;;20869:9;;20852:13;20862:2;20852:9;:13::i;:::-;20843:6;:22;;;;:::i;:::-;:35;;20835:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20770:152;20511:411;20162:760;19877:1060;20949:28;20980:24;20998:4;20980:9;:24::i;:::-;20949:55;;21017:12;21055:1;21032:20;:24;21017:39;;21073:7;:22;;;;;21084:11;;;;;;;;;;;21073:22;:35;;;;;21100:8;;;;;;;;;;;21099:9;21073:35;:71;;;;;21113:25;:31;21139:4;21113:31;;;;;;;;;;;;;;;;;;;;;;;;;21112:32;21073:71;:101;;;;;21149:19;:25;21169:4;21149:25;;;;;;;;;;;;;;;;;;;;;;;;;21148:26;21073:101;:129;;;;;21179:19;:23;21199:2;21179:23;;;;;;;;;;;;;;;;;;;;;;;;;21178:24;21073:129;21069:239;;;21230:4;21219:8;;:15;;;;;;;;;;;;;;;;;;21249:16;21258:6;21249:8;:16::i;:::-;21291:5;21280:8;;:16;;;;;;;;;;;;;;;;;;21069:239;21320:12;21336:8;;;;;;;;;;;21335:9;21320:24;;21361:19;:25;21381:4;21361:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21390:19;:23;21410:2;21390:23;;;;;;;;;;;;;;;;;;;;;;;;;21361:52;21357:100;;;21440:5;21430:15;;21357:100;21469:12;21502:7;21498:348;;;21530:25;:29;21556:2;21530:29;;;;;;;;;;;;;;;;;;;;;;;;;21526:193;;;21587:28;21611:3;21587:19;21598:7;;21587:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;21580:35;;21526:193;;;21676:27;21699:3;21676:18;21687:6;;21676;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;21669:34;;21526:193;21742:1;21735:4;:8;21731:83;;;21760:42;21776:4;21790;21797;21760:15;:42::i;:::-;21731:83;21834:4;21824:14;;;;;:::i;:::-;;;21498:348;21856:33;21872:4;21878:2;21882:6;21856:15;:33::i;:::-;19597:2300;;;;19518:2379;;;;:::o;9564:191::-;9638:16;9657:6;;;;;;;;;;;9638:25;;9683:8;9674:6;;:17;;;;;;;;;;;;;;;;;;9738:8;9707:40;;9728:8;9707:40;;;;;;;;;;;;9627:128;9564:191;:::o;19190:186::-;19307:5;19273:25;:31;19299:4;19273:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19362:5;19328:40;;19356:4;19328:40;;;;;;;;;;;;19190:186;;:::o;6805:98::-;6863:7;6894:1;6890;:5;;;;:::i;:::-;6883:12;;6805:98;;;;:::o;6911:::-;6969:7;7000:1;6996;:5;;;;:::i;:::-;6989:12;;6911:98;;;;:::o;6699:::-;6757:7;6788:1;6784;:5;;;;:::i;:::-;6777:12;;6699:98;;;;:::o;12302:675::-;12449:1;12433:18;;:4;:18;;;12425:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12526:1;12512:16;;:2;:16;;;12504:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12581:38;12602:4;12608:2;12612:6;12581:20;:38::i;:::-;12632:19;12654:9;:15;12664:4;12654:15;;;;;;;;;;;;;;;;12632:37;;12703:6;12688:11;:21;;12680:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12820:6;12806:11;:20;12788:9;:15;12798:4;12788:15;;;;;;;;;;;;;;;:38;;;;12858:6;12841:9;:13;12851:2;12841:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12908:2;12893:26;;12902:4;12893:26;;;12912:6;12893:26;;;;;;:::i;:::-;;;;;;;;12932:37;12952:4;12958:2;12962:6;12932:19;:37::i;:::-;12414:563;12302:675;;;:::o;23141:1393::-;23194:23;23220:24;23238:4;23220:9;:24::i;:::-;23194:50;;23255:20;23312:1;23293:15;:20;23289:59;;23330:7;;;;23289:59;23380:1;23368:7;;23361:6;;:14;;;;:::i;:::-;23360:21;23356:1130;;23417:1;23399:15;:19;:59;;;;;23440:18;;23422:15;:36;23399:59;23396:443;;;23490:15;23475:30;;23396:443;;;23547:21;23571:28;23595:3;23571:19;23582:7;;23571:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;23547:52;;23624:13;23614:23;;;;;:::i;:::-;;;23665:18;;23656:6;:27;23652:176;;;23719:18;;23704:33;;23652:176;;;23806:6;23791:21;;23652:176;23532:307;23396:443;23356:1130;;;23893:1;23875:15;:19;:66;;;;;23916:25;23939:1;23916:18;;:22;;:25;;;;:::i;:::-;23898:15;:43;23875:66;23872:607;;;23958:7;;;;23872:607;24013:1;23995:15;:19;:66;;;;;24036:25;24059:1;24036:18;;:22;;:25;;;;:::i;:::-;24018:15;:43;23995:66;:106;;;;;24083:18;;24065:15;:36;23995:106;23991:488;;;24133:25;24156:1;24133:18;;:22;;:25;;;;:::i;:::-;24118:40;;23991:488;;;24200:21;24224:28;24248:3;24224:19;24235:7;;24224:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;24200:52;;24277:13;24267:23;;;;;:::i;:::-;;;24318:18;;24309:6;:27;24305:163;;;24372:18;;24357:33;;24305:163;;;24446:6;24431:21;;24305:163;24185:294;23991:488;23356:1130;24496:30;24513:12;24496:16;:30::i;:::-;23183:1351;;23141:1393;;:::o;14880:125::-;;;;:::o;15013:124::-;;;;:::o;21905:482::-;21973:21;22011:1;21997:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21973:40;;22042:4;22024;22029:1;22024:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22068:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22058:4;22063:1;22058:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;22104:63;22121:4;22136:16;22155:11;22104:8;:63::i;:::-;22180:16;:67;;;22262:11;22288:1;22304:4;22323:15;;;;;;;;;;;22353;22180:199;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21960:427;21905:482;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:118::-;4013:24;4031:5;4013:24;:::i;:::-;4008:3;4001:37;3926:118;;:::o;4050:222::-;4143:4;4181:2;4170:9;4166:18;4158:26;;4194:71;4262:1;4251:9;4247:17;4238:6;4194:71;:::i;:::-;4050:222;;;;:::o;4278:619::-;4355:6;4363;4371;4420:2;4408:9;4399:7;4395:23;4391:32;4388:119;;;4426:79;;:::i;:::-;4388:119;4546:1;4571:53;4616:7;4607:6;4596:9;4592:22;4571:53;:::i;:::-;4561:63;;4517:117;4673:2;4699:53;4744:7;4735:6;4724:9;4720:22;4699:53;:::i;:::-;4689:63;;4644:118;4801:2;4827:53;4872:7;4863:6;4852:9;4848:22;4827:53;:::i;:::-;4817:63;;4772:118;4278:619;;;;;:::o;4903:86::-;4938:7;4978:4;4971:5;4967:16;4956:27;;4903:86;;;:::o;4995:112::-;5078:22;5094:5;5078:22;:::i;:::-;5073:3;5066:35;4995:112;;:::o;5113:214::-;5202:4;5240:2;5229:9;5225:18;5217:26;;5253:67;5317:1;5306:9;5302:17;5293:6;5253:67;:::i;:::-;5113:214;;;;:::o;5333:329::-;5392:6;5441:2;5429:9;5420:7;5416:23;5412:32;5409:119;;;5447:79;;:::i;:::-;5409:119;5567:1;5592:53;5637:7;5628:6;5617:9;5613:22;5592:53;:::i;:::-;5582:63;;5538:117;5333:329;;;;:::o;5668:60::-;5696:3;5717:5;5710:12;;5668:60;;;:::o;5734:142::-;5784:9;5817:53;5835:34;5844:24;5862:5;5844:24;:::i;:::-;5835:34;:::i;:::-;5817:53;:::i;:::-;5804:66;;5734:142;;;:::o;5882:126::-;5932:9;5965:37;5996:5;5965:37;:::i;:::-;5952:50;;5882:126;;;:::o;6014:151::-;6089:9;6122:37;6153:5;6122:37;:::i;:::-;6109:50;;6014:151;;;:::o;6171:181::-;6283:62;6339:5;6283:62;:::i;:::-;6278:3;6271:75;6171:181;;:::o;6358:272::-;6476:4;6514:2;6503:9;6499:18;6491:26;;6527:96;6620:1;6609:9;6605:17;6596:6;6527:96;:::i;:::-;6358:272;;;;:::o;6636:116::-;6706:21;6721:5;6706:21;:::i;:::-;6699:5;6696:32;6686:60;;6742:1;6739;6732:12;6686:60;6636:116;:::o;6758:133::-;6801:5;6839:6;6826:20;6817:29;;6855:30;6879:5;6855:30;:::i;:::-;6758:133;;;;:::o;6897:468::-;6962:6;6970;7019:2;7007:9;6998:7;6994:23;6990:32;6987:119;;;7025:79;;:::i;:::-;6987:119;7145:1;7170:53;7215:7;7206:6;7195:9;7191:22;7170:53;:::i;:::-;7160:63;;7116:117;7272:2;7298:50;7340:7;7331:6;7320:9;7316:22;7298:50;:::i;:::-;7288:60;;7243:115;6897:468;;;;;:::o;7371:118::-;7458:24;7476:5;7458:24;:::i;:::-;7453:3;7446:37;7371:118;;:::o;7495:222::-;7588:4;7626:2;7615:9;7611:18;7603:26;;7639:71;7707:1;7696:9;7692:17;7683:6;7639:71;:::i;:::-;7495:222;;;;:::o;7723:329::-;7782:6;7831:2;7819:9;7810:7;7806:23;7802:32;7799:119;;;7837:79;;:::i;:::-;7799:119;7957:1;7982:53;8027:7;8018:6;8007:9;8003:22;7982:53;:::i;:::-;7972:63;;7928:117;7723:329;;;;:::o;8058:474::-;8126:6;8134;8183:2;8171:9;8162:7;8158:23;8154:32;8151:119;;;8189:79;;:::i;:::-;8151:119;8309:1;8334:53;8379:7;8370:6;8359:9;8355:22;8334:53;:::i;:::-;8324:63;;8280:117;8436:2;8462:53;8507:7;8498:6;8487:9;8483:22;8462:53;:::i;:::-;8452:63;;8407:118;8058:474;;;;;:::o;8538:172::-;8678:24;8674:1;8666:6;8662:14;8655:48;8538:172;:::o;8716:366::-;8858:3;8879:67;8943:2;8938:3;8879:67;:::i;:::-;8872:74;;8955:93;9044:3;8955:93;:::i;:::-;9073:2;9068:3;9064:12;9057:19;;8716:366;;;:::o;9088:419::-;9254:4;9292:2;9281:9;9277:18;9269:26;;9341:9;9335:4;9331:20;9327:1;9316:9;9312:17;9305:47;9369:131;9495:4;9369:131;:::i;:::-;9361:139;;9088:419;;;:::o;9513:180::-;9561:77;9558:1;9551:88;9658:4;9655:1;9648:15;9682:4;9679:1;9672:15;9699:320;9743:6;9780:1;9774:4;9770:12;9760:22;;9827:1;9821:4;9817:12;9848:18;9838:81;;9904:4;9896:6;9892:17;9882:27;;9838:81;9966:2;9958:6;9955:14;9935:18;9932:38;9929:84;;9985:18;;:::i;:::-;9929:84;9750:269;9699:320;;;:::o;10025:180::-;10073:77;10070:1;10063:88;10170:4;10167:1;10160:15;10194:4;10191:1;10184:15;10211:191;10251:3;10270:20;10288:1;10270:20;:::i;:::-;10265:25;;10304:20;10322:1;10304:20;:::i;:::-;10299:25;;10347:1;10344;10340:9;10333:16;;10368:3;10365:1;10362:10;10359:36;;;10375:18;;:::i;:::-;10359:36;10211:191;;;;:::o;10408:172::-;10548:24;10544:1;10536:6;10532:14;10525:48;10408:172;:::o;10586:366::-;10728:3;10749:67;10813:2;10808:3;10749:67;:::i;:::-;10742:74;;10825:93;10914:3;10825:93;:::i;:::-;10943:2;10938:3;10934:12;10927:19;;10586:366;;;:::o;10958:419::-;11124:4;11162:2;11151:9;11147:18;11139:26;;11211:9;11205:4;11201:20;11197:1;11186:9;11182:17;11175:47;11239:131;11365:4;11239:131;:::i;:::-;11231:139;;10958:419;;;:::o;11383:244::-;11523:34;11519:1;11511:6;11507:14;11500:58;11592:27;11587:2;11579:6;11575:15;11568:52;11383:244;:::o;11633:366::-;11775:3;11796:67;11860:2;11855:3;11796:67;:::i;:::-;11789:74;;11872:93;11961:3;11872:93;:::i;:::-;11990:2;11985:3;11981:12;11974:19;;11633:366;;;:::o;12005:419::-;12171:4;12209:2;12198:9;12194:18;12186:26;;12258:9;12252:4;12248:20;12244:1;12233:9;12229:17;12222:47;12286:131;12412:4;12286:131;:::i;:::-;12278:139;;12005:419;;;:::o;12430:224::-;12570:34;12566:1;12558:6;12554:14;12547:58;12639:7;12634:2;12626:6;12622:15;12615:32;12430:224;:::o;12660:366::-;12802:3;12823:67;12887:2;12882:3;12823:67;:::i;:::-;12816:74;;12899:93;12988:3;12899:93;:::i;:::-;13017:2;13012:3;13008:12;13001:19;;12660:366;;;:::o;13032:419::-;13198:4;13236:2;13225:9;13221:18;13213:26;;13285:9;13279:4;13275:20;13271:1;13260:9;13256:17;13249:47;13313:131;13439:4;13313:131;:::i;:::-;13305:139;;13032:419;;;:::o;13457:410::-;13497:7;13520:20;13538:1;13520:20;:::i;:::-;13515:25;;13554:20;13572:1;13554:20;:::i;:::-;13549:25;;13609:1;13606;13602:9;13631:30;13649:11;13631:30;:::i;:::-;13620:41;;13810:1;13801:7;13797:15;13794:1;13791:22;13771:1;13764:9;13744:83;13721:139;;13840:18;;:::i;:::-;13721:139;13505:362;13457:410;;;;:::o;13873:173::-;14013:25;14009:1;14001:6;13997:14;13990:49;13873:173;:::o;14052:366::-;14194:3;14215:67;14279:2;14274:3;14215:67;:::i;:::-;14208:74;;14291:93;14380:3;14291:93;:::i;:::-;14409:2;14404:3;14400:12;14393:19;;14052:366;;;:::o;14424:419::-;14590:4;14628:2;14617:9;14613:18;14605:26;;14677:9;14671:4;14667:20;14663:1;14652:9;14648:17;14641:47;14705:131;14831:4;14705:131;:::i;:::-;14697:139;;14424:419;;;:::o;14849:332::-;14970:4;15008:2;14997:9;14993:18;14985:26;;15021:71;15089:1;15078:9;15074:17;15065:6;15021:71;:::i;:::-;15102:72;15170:2;15159:9;15155:18;15146:6;15102:72;:::i;:::-;14849:332;;;;;:::o;15187:137::-;15241:5;15272:6;15266:13;15257:22;;15288:30;15312:5;15288:30;:::i;:::-;15187:137;;;;:::o;15330:345::-;15397:6;15446:2;15434:9;15425:7;15421:23;15417:32;15414:119;;;15452:79;;:::i;:::-;15414:119;15572:1;15597:61;15650:7;15641:6;15630:9;15626:22;15597:61;:::i;:::-;15587:71;;15543:125;15330:345;;;;:::o;15681:143::-;15738:5;15769:6;15763:13;15754:22;;15785:33;15812:5;15785:33;:::i;:::-;15681:143;;;;:::o;15830:351::-;15900:6;15949:2;15937:9;15928:7;15924:23;15920:32;15917:119;;;15955:79;;:::i;:::-;15917:119;16075:1;16100:64;16156:7;16147:6;16136:9;16132:22;16100:64;:::i;:::-;16090:74;;16046:128;15830:351;;;;:::o;16187:143::-;16244:5;16275:6;16269:13;16260:22;;16291:33;16318:5;16291:33;:::i;:::-;16187:143;;;;:::o;16336:351::-;16406:6;16455:2;16443:9;16434:7;16430:23;16426:32;16423:119;;;16461:79;;:::i;:::-;16423:119;16581:1;16606:64;16662:7;16653:6;16642:9;16638:22;16606:64;:::i;:::-;16596:74;;16552:128;16336:351;;;;:::o;16693:85::-;16738:7;16767:5;16756:16;;16693:85;;;:::o;16784:158::-;16842:9;16875:61;16893:42;16902:32;16928:5;16902:32;:::i;:::-;16893:42;:::i;:::-;16875:61;:::i;:::-;16862:74;;16784:158;;;:::o;16948:147::-;17043:45;17082:5;17043:45;:::i;:::-;17038:3;17031:58;16948:147;;:::o;17101:791::-;17342:4;17380:3;17369:9;17365:19;17357:27;;17394:71;17462:1;17451:9;17447:17;17438:6;17394:71;:::i;:::-;17475:72;17543:2;17532:9;17528:18;17519:6;17475:72;:::i;:::-;17557:80;17633:2;17622:9;17618:18;17609:6;17557:80;:::i;:::-;17647:72;17715:2;17704:9;17700:18;17691:6;17647:72;:::i;:::-;17729:73;17797:3;17786:9;17782:19;17773:6;17729:73;:::i;:::-;17812;17880:3;17869:9;17865:19;17856:6;17812:73;:::i;:::-;17101:791;;;;;;;;;:::o;17898:663::-;17986:6;17994;18002;18051:2;18039:9;18030:7;18026:23;18022:32;18019:119;;;18057:79;;:::i;:::-;18019:119;18177:1;18202:64;18258:7;18249:6;18238:9;18234:22;18202:64;:::i;:::-;18192:74;;18148:128;18315:2;18341:64;18397:7;18388:6;18377:9;18373:22;18341:64;:::i;:::-;18331:74;;18286:129;18454:2;18480:64;18536:7;18527:6;18516:9;18512:22;18480:64;:::i;:::-;18470:74;;18425:129;17898:663;;;;;:::o;18567:807::-;18816:4;18854:3;18843:9;18839:19;18831:27;;18868:71;18936:1;18925:9;18921:17;18912:6;18868:71;:::i;:::-;18949:72;19017:2;19006:9;19002:18;18993:6;18949:72;:::i;:::-;19031:80;19107:2;19096:9;19092:18;19083:6;19031:80;:::i;:::-;19121;19197:2;19186:9;19182:18;19173:6;19121:80;:::i;:::-;19211:73;19279:3;19268:9;19264:19;19255:6;19211:73;:::i;:::-;19294;19362:3;19351:9;19347:19;19338:6;19294:73;:::i;:::-;18567:807;;;;;;;;;:::o;19380:225::-;19520:34;19516:1;19508:6;19504:14;19497:58;19589:8;19584:2;19576:6;19572:15;19565:33;19380:225;:::o;19611:366::-;19753:3;19774:67;19838:2;19833:3;19774:67;:::i;:::-;19767:74;;19850:93;19939:3;19850:93;:::i;:::-;19968:2;19963:3;19959:12;19952:19;;19611:366;;;:::o;19983:419::-;20149:4;20187:2;20176:9;20172:18;20164:26;;20236:9;20230:4;20226:20;20222:1;20211:9;20207:17;20200:47;20264:131;20390:4;20264:131;:::i;:::-;20256:139;;19983:419;;;:::o;20408:182::-;20548:34;20544:1;20536:6;20532:14;20525:58;20408:182;:::o;20596:366::-;20738:3;20759:67;20823:2;20818:3;20759:67;:::i;:::-;20752:74;;20835:93;20924:3;20835:93;:::i;:::-;20953:2;20948:3;20944:12;20937:19;;20596:366;;;:::o;20968:419::-;21134:4;21172:2;21161:9;21157:18;21149:26;;21221:9;21215:4;21211:20;21207:1;21196:9;21192:17;21185:47;21249:131;21375:4;21249:131;:::i;:::-;21241:139;;20968:419;;;:::o;21393:223::-;21533:34;21529:1;21521:6;21517:14;21510:58;21602:6;21597:2;21589:6;21585:15;21578:31;21393:223;:::o;21622:366::-;21764:3;21785:67;21849:2;21844:3;21785:67;:::i;:::-;21778:74;;21861:93;21950:3;21861:93;:::i;:::-;21979:2;21974:3;21970:12;21963:19;;21622:366;;;:::o;21994:419::-;22160:4;22198:2;22187:9;22183:18;22175:26;;22247:9;22241:4;22237:20;22233:1;22222:9;22218:17;22211:47;22275:131;22401:4;22275:131;:::i;:::-;22267:139;;21994:419;;;:::o;22419:221::-;22559:34;22555:1;22547:6;22543:14;22536:58;22628:4;22623:2;22615:6;22611:15;22604:29;22419:221;:::o;22646:366::-;22788:3;22809:67;22873:2;22868:3;22809:67;:::i;:::-;22802:74;;22885:93;22974:3;22885:93;:::i;:::-;23003:2;22998:3;22994:12;22987:19;;22646:366;;;:::o;23018:419::-;23184:4;23222:2;23211:9;23207:18;23199:26;;23271:9;23265:4;23261:20;23257:1;23246:9;23242:17;23235:47;23299:131;23425:4;23299:131;:::i;:::-;23291:139;;23018:419;;;:::o;23443:179::-;23583:31;23579:1;23571:6;23567:14;23560:55;23443:179;:::o;23628:366::-;23770:3;23791:67;23855:2;23850:3;23791:67;:::i;:::-;23784:74;;23867:93;23956:3;23867:93;:::i;:::-;23985:2;23980:3;23976:12;23969:19;;23628:366;;;:::o;24000:419::-;24166:4;24204:2;24193:9;24189:18;24181:26;;24253:9;24247:4;24243:20;24239:1;24228:9;24224:17;24217:47;24281:131;24407:4;24281:131;:::i;:::-;24273:139;;24000:419;;;:::o;24425:224::-;24565:34;24561:1;24553:6;24549:14;24542:58;24634:7;24629:2;24621:6;24617:15;24610:32;24425:224;:::o;24655:366::-;24797:3;24818:67;24882:2;24877:3;24818:67;:::i;:::-;24811:74;;24894:93;24983:3;24894:93;:::i;:::-;25012:2;25007:3;25003:12;24996:19;;24655:366;;;:::o;25027:419::-;25193:4;25231:2;25220:9;25216:18;25208:26;;25280:9;25274:4;25270:20;25266:1;25255:9;25251:17;25244:47;25308:131;25434:4;25308:131;:::i;:::-;25300:139;;25027:419;;;:::o;25452:222::-;25592:34;25588:1;25580:6;25576:14;25569:58;25661:5;25656:2;25648:6;25644:15;25637:30;25452:222;:::o;25680:366::-;25822:3;25843:67;25907:2;25902:3;25843:67;:::i;:::-;25836:74;;25919:93;26008:3;25919:93;:::i;:::-;26037:2;26032:3;26028:12;26021:19;;25680:366;;;:::o;26052:419::-;26218:4;26256:2;26245:9;26241:18;26233:26;;26305:9;26299:4;26295:20;26291:1;26280:9;26276:17;26269:47;26333:131;26459:4;26333:131;:::i;:::-;26325:139;;26052:419;;;:::o;26477:172::-;26617:24;26613:1;26605:6;26601:14;26594:48;26477:172;:::o;26655:366::-;26797:3;26818:67;26882:2;26877:3;26818:67;:::i;:::-;26811:74;;26894:93;26983:3;26894:93;:::i;:::-;27012:2;27007:3;27003:12;26996:19;;26655:366;;;:::o;27027:419::-;27193:4;27231:2;27220:9;27216:18;27208:26;;27280:9;27274:4;27270:20;27266:1;27255:9;27251:17;27244:47;27308:131;27434:4;27308:131;:::i;:::-;27300:139;;27027:419;;;:::o;27452:240::-;27592:34;27588:1;27580:6;27576:14;27569:58;27661:23;27656:2;27648:6;27644:15;27637:48;27452:240;:::o;27698:366::-;27840:3;27861:67;27925:2;27920:3;27861:67;:::i;:::-;27854:74;;27937:93;28026:3;27937:93;:::i;:::-;28055:2;28050:3;28046:12;28039:19;;27698:366;;;:::o;28070:419::-;28236:4;28274:2;28263:9;28259:18;28251:26;;28323:9;28317:4;28313:20;28309:1;28298:9;28294:17;28287:47;28351:131;28477:4;28351:131;:::i;:::-;28343:139;;28070:419;;;:::o;28495:169::-;28635:21;28631:1;28623:6;28619:14;28612:45;28495:169;:::o;28670:366::-;28812:3;28833:67;28897:2;28892:3;28833:67;:::i;:::-;28826:74;;28909:93;28998:3;28909:93;:::i;:::-;29027:2;29022:3;29018:12;29011:19;;28670:366;;;:::o;29042:419::-;29208:4;29246:2;29235:9;29231:18;29223:26;;29295:9;29289:4;29285:20;29281:1;29270:9;29266:17;29259:47;29323:131;29449:4;29323:131;:::i;:::-;29315:139;;29042:419;;;:::o;29467:241::-;29607:34;29603:1;29595:6;29591:14;29584:58;29676:24;29671:2;29663:6;29659:15;29652:49;29467:241;:::o;29714:366::-;29856:3;29877:67;29941:2;29936:3;29877:67;:::i;:::-;29870:74;;29953:93;30042:3;29953:93;:::i;:::-;30071:2;30066:3;30062:12;30055:19;;29714:366;;;:::o;30086:419::-;30252:4;30290:2;30279:9;30275:18;30267:26;;30339:9;30333:4;30329:20;30325:1;30314:9;30310:17;30303:47;30367:131;30493:4;30367:131;:::i;:::-;30359:139;;30086:419;;;:::o;30511:194::-;30551:4;30571:20;30589:1;30571:20;:::i;:::-;30566:25;;30605:20;30623:1;30605:20;:::i;:::-;30600:25;;30649:1;30646;30642:9;30634:17;;30673:1;30667:4;30664:11;30661:37;;;30678:18;;:::i;:::-;30661:37;30511:194;;;;:::o;30711:180::-;30759:77;30756:1;30749:88;30856:4;30853:1;30846:15;30880:4;30877:1;30870:15;30897:185;30937:1;30954:20;30972:1;30954:20;:::i;:::-;30949:25;;30988:20;31006:1;30988:20;:::i;:::-;30983:25;;31027:1;31017:35;;31032:18;;:::i;:::-;31017:35;31074:1;31071;31067:9;31062:14;;30897:185;;;;:::o;31088:225::-;31228:34;31224:1;31216:6;31212:14;31205:58;31297:8;31292:2;31284:6;31280:15;31273:33;31088:225;:::o;31319:366::-;31461:3;31482:67;31546:2;31541:3;31482:67;:::i;:::-;31475:74;;31558:93;31647:3;31558:93;:::i;:::-;31676:2;31671:3;31667:12;31660:19;;31319:366;;;:::o;31691:419::-;31857:4;31895:2;31884:9;31880:18;31872:26;;31944:9;31938:4;31934:20;31930:1;31919:9;31915:17;31908:47;31972:131;32098:4;31972:131;:::i;:::-;31964:139;;31691:419;;;:::o;32116:180::-;32164:77;32161:1;32154:88;32261:4;32258:1;32251:15;32285:4;32282:1;32275:15;32302:180;32350:77;32347:1;32340:88;32447:4;32444:1;32437:15;32471:4;32468:1;32461:15;32488:114;32555:6;32589:5;32583:12;32573:22;;32488:114;;;:::o;32608:184::-;32707:11;32741:6;32736:3;32729:19;32781:4;32776:3;32772:14;32757:29;;32608:184;;;;:::o;32798:132::-;32865:4;32888:3;32880:11;;32918:4;32913:3;32909:14;32901:22;;32798:132;;;:::o;32936:108::-;33013:24;33031:5;33013:24;:::i;:::-;33008:3;33001:37;32936:108;;:::o;33050:179::-;33119:10;33140:46;33182:3;33174:6;33140:46;:::i;:::-;33218:4;33213:3;33209:14;33195:28;;33050:179;;;;:::o;33235:113::-;33305:4;33337;33332:3;33328:14;33320:22;;33235:113;;;:::o;33384:732::-;33503:3;33532:54;33580:5;33532:54;:::i;:::-;33602:86;33681:6;33676:3;33602:86;:::i;:::-;33595:93;;33712:56;33762:5;33712:56;:::i;:::-;33791:7;33822:1;33807:284;33832:6;33829:1;33826:13;33807:284;;;33908:6;33902:13;33935:63;33994:3;33979:13;33935:63;:::i;:::-;33928:70;;34021:60;34074:6;34021:60;:::i;:::-;34011:70;;33867:224;33854:1;33851;33847:9;33842:14;;33807:284;;;33811:14;34107:3;34100:10;;33508:608;;;33384:732;;;;:::o;34122:831::-;34385:4;34423:3;34412:9;34408:19;34400:27;;34437:71;34505:1;34494:9;34490:17;34481:6;34437:71;:::i;:::-;34518:80;34594:2;34583:9;34579:18;34570:6;34518:80;:::i;:::-;34645:9;34639:4;34635:20;34630:2;34619:9;34615:18;34608:48;34673:108;34776:4;34767:6;34673:108;:::i;:::-;34665:116;;34791:72;34859:2;34848:9;34844:18;34835:6;34791:72;:::i;:::-;34873:73;34941:3;34930:9;34926:19;34917:6;34873:73;:::i;:::-;34122:831;;;;;;;;:::o

Swarm Source

ipfs://9d254f688f6dc7c65f94f98b77fb14d8e9c3ca8fc77b87efa433522192b4e9ff

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.