ETH Price: $3,389.32 (-2.63%)
Gas: 1 Gwei

Contract

0xc1609F2300b046cD85D211Db6f95328DA933Fb00
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve190704122024-01-23 15:58:47157 days ago1706025527IN
0xc1609F23...DA933Fb00
0 ETH0.0012216625.89433644
Approve190381272024-01-19 3:09:23161 days ago1705633763IN
0xc1609F23...DA933Fb00
0 ETH0.0018963640.14410121
Approve190381242024-01-19 3:08:47161 days ago1705633727IN
0xc1609F23...DA933Fb00
0 ETH0.001946541.20550898
Approve190381232024-01-19 3:08:35161 days ago1705633715IN
0xc1609F23...DA933Fb00
0 ETH0.0019685741.67265336
Approve190276702024-01-17 16:03:23163 days ago1705507403IN
0xc1609F23...DA933Fb00
0 ETH0.0023518849.7869332
Approve184996592023-11-04 15:47:35237 days ago1699112855IN
0xc1609F23...DA933Fb00
0 ETH0.0008194817.36968672
Approve164341152023-01-18 13:53:23527 days ago1674050003IN
0xc1609F23...DA933Fb00
0 ETH0.0010527822.28632268
Approve163283582023-01-03 19:30:35542 days ago1672774235IN
0xc1609F23...DA933Fb00
0 ETH0.0019188840.62069419
Approve162786102022-12-27 20:56:23549 days ago1672174583IN
0xc1609F23...DA933Fb00
0 ETH0.000654113.84674906
Approve162714482022-12-26 20:54:59550 days ago1672088099IN
0xc1609F23...DA933Fb00
0 ETH0.0005770712.21610838
Approve162714082022-12-26 20:46:59550 days ago1672087619IN
0xc1609F23...DA933Fb00
0 ETH0.0005413111.45909315
Approve162069112022-12-17 20:49:47559 days ago1671310187IN
0xc1609F23...DA933Fb00
0 ETH0.0006486213.73077028
Approve162065762022-12-17 19:41:59559 days ago1671306119IN
0xc1609F23...DA933Fb00
0 ETH0.0037791280
Approve162065662022-12-17 19:39:59559 days ago1671305999IN
0xc1609F23...DA933Fb00
0 ETH0.0006950314.71317602
Approve162041942022-12-17 11:43:47559 days ago1671277427IN
0xc1609F23...DA933Fb00
0 ETH0.0006344313.43039973
Approve162034992022-12-17 9:23:59559 days ago1671269039IN
0xc1609F23...DA933Fb00
0 ETH0.0006619614.01309378
Approve162034732022-12-17 9:18:47559 days ago1671268727IN
0xc1609F23...DA933Fb00
0 ETH0.0006976414.76851101
Approve162032122022-12-17 8:26:11559 days ago1671265571IN
0xc1609F23...DA933Fb00
0 ETH0.0006137912.99338917
Approve162030682022-12-17 7:57:23559 days ago1671263843IN
0xc1609F23...DA933Fb00
0 ETH0.0006855314.51205589
Approve162030142022-12-17 7:46:23559 days ago1671263183IN
0xc1609F23...DA933Fb00
0 ETH0.0007528515.93704541
Approve162029862022-12-17 7:40:47559 days ago1671262847IN
0xc1609F23...DA933Fb00
0 ETH0.0006706814.19760848
Approve162029792022-12-17 7:39:23559 days ago1671262763IN
0xc1609F23...DA933Fb00
0 ETH0.000742815.72437295
Approve162029782022-12-17 7:39:11559 days ago1671262751IN
0xc1609F23...DA933Fb00
0 ETH0.0006567613.90299139
Approve162029782022-12-17 7:39:11559 days ago1671262751IN
0xc1609F23...DA933Fb00
0 ETH0.0007276215.40299139
Approve162029692022-12-17 7:37:23559 days ago1671262643IN
0xc1609F23...DA933Fb00
0 ETH0.0006954814.72274187
View all transactions

Latest 14 internal transactions

Advanced mode:
Parent Transaction Hash Block From To Value
161791222022-12-13 23:41:35563 days ago1670974895
0xc1609F23...DA933Fb00
0.54326599 ETH
161791222022-12-13 23:41:35563 days ago1670974895
0xc1609F23...DA933Fb00
0.54226599 ETH
161790772022-12-13 23:32:35563 days ago1670974355
0xc1609F23...DA933Fb00
0.25645389 ETH
161790772022-12-13 23:32:35563 days ago1670974355
0xc1609F23...DA933Fb00
0.25645389 ETH
161790732022-12-13 23:31:47563 days ago1670974307
0xc1609F23...DA933Fb00
0.31169773 ETH
161790732022-12-13 23:31:47563 days ago1670974307
0xc1609F23...DA933Fb00
0.31169773 ETH
161790532022-12-13 23:27:47563 days ago1670974067
0xc1609F23...DA933Fb00
0.22559302 ETH
161790532022-12-13 23:27:47563 days ago1670974067
0xc1609F23...DA933Fb00
0.22559302 ETH
161790522022-12-13 23:27:35563 days ago1670974055
0xc1609F23...DA933Fb00
0.24157379 ETH
161790522022-12-13 23:27:35563 days ago1670974055
0xc1609F23...DA933Fb00
0.24157379 ETH
161790522022-12-13 23:27:35563 days ago1670974055
0xc1609F23...DA933Fb00
0.29224939 ETH
161790522022-12-13 23:27:35563 days ago1670974055
0xc1609F23...DA933Fb00
0.29224939 ETH
161790522022-12-13 23:27:35563 days ago1670974055
0xc1609F23...DA933Fb00
0.37041696 ETH
161790522022-12-13 23:27:35563 days ago1670974055
0xc1609F23...DA933Fb00
0.37041696 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ROUX

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

    function transferOwnership(address newOwner) 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);
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

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


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

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

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

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

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, 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;
        _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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

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

library SafeMath {
    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 IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

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

    function WETH() external pure returns (address);

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

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

contract ROUX is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;

    address public devWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyLiquidityFee;
    uint256 public buyMarketingFee;

    uint256 public sellTotalFees;
    uint256 public sellLiquidityFee;
    uint256 public sellMarketingFee;

	uint256 public tokensForLiquidity;
    uint256 public tokensForMarketing;

    // exclude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20("Solotshi Calder Le Roux", "ROUX") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyLiquidityFee = 0;
        uint256 _buyMarketingFee = 20;

        uint256 _sellLiquidityFee = 0;
        uint256 _sellMarketingFee = 50;

        uint256 totalSupply = 1 * 1e9 * 1e18;

        maxTransactionAmount = 2 * 1e7 * 1e18; 
        maxWallet = 2 * 1e7 * 1e18; 
        swapTokensAtAmount = (totalSupply * 10) / 10000; 

        buyLiquidityFee = _buyLiquidityFee;
        buyMarketingFee = _buyMarketingFee;
        buyTotalFees = buyLiquidityFee + buyMarketingFee;

        sellLiquidityFee = _sellLiquidityFee;
        sellMarketingFee = _sellMarketingFee;
        sellTotalFees = sellLiquidityFee + sellMarketingFee;

        devWallet = address(0x26306b5D74Da1ac82fE5abc520828137421651E0); 

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function updateFees(uint256 _buyLiquidityFee, uint256 _buyMarketingFee, uint256 _sellLiquidityFee, uint256 _sellMarketingFee) external onlyOwner {
        buyLiquidityFee = _buyLiquidityFee;
        buyMarketingFee = _buyMarketingFee;
        buyTotalFees = buyLiquidityFee + buyMarketingFee;

        sellLiquidityFee = _sellLiquidityFee;
        sellMarketingFee = _sellMarketingFee;
        sellTotalFees = sellLiquidityFee + sellMarketingFee;
        require( (buyTotalFees + sellTotalFees) < 30, "Check roundtrip");
    } 

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }
	
    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    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 (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                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 >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;                
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            devWallet,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
	
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }
        //there will be no leftover eth in the contract 
        (success, ) = address(devWallet).call{value: address(this).balance}("");
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","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":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055506000600a60026101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280601781526020017f536f6c6f747368692043616c646572204c6520526f75780000000000000000008152506040518060400160405280600481526020017f524f5558000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000e792919062000a3f565b5080600490805190602001906200010092919062000a3f565b5050506200012362000117620004ff60201b60201c565b6200050760201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200014f816001620005cd60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f5919062000b59565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000283919062000b59565b6040518363ffffffff1660e01b8152600401620002a292919062000b9c565b6020604051808303816000875af1158015620002c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e8919062000b59565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033060a0516001620005cd60201b60201c565b6200034560a0516001620006b760201b60201c565b600080601490506000806032905060006b033b2e3c9fd0803ce800000090506a108b2a2c280290940000006007819055506a108b2a2c28029094000000600981905550612710600a826200039a919062000c02565b620003a6919062000c92565b60088190555084600c8190555083600d81905550600d54600c54620003cc919062000cca565b600b8190555082600f8190555081601081905550601054600f54620003f2919062000cca565b600e819055507326306b5d74da1ac82fe5abc520828137421651e0600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200046f620004616200075860201b60201c565b60016200078260201b60201c565b620004823060016200078260201b60201c565b6200049761dead60016200078260201b60201c565b620004b9620004ab6200075860201b60201c565b6001620005cd60201b60201c565b620004cc306001620005cd60201b60201c565b620004e161dead6001620005cd60201b60201c565b620004f33382620008bc60201b60201c565b50505050505062000ee9565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005dd620004ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006036200075860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200065c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006539062000d88565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000792620004ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007b86200075860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000811576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008089062000d88565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008b0919062000dc7565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200092f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009269062000e34565b60405180910390fd5b620009436000838362000a3560201b60201c565b806002600082825462000957919062000cca565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009ae919062000cca565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a15919062000e67565b60405180910390a362000a316000838362000a3a60201b60201c565b5050565b505050565b505050565b82805462000a4d9062000eb3565b90600052602060002090601f01602090048101928262000a71576000855562000abd565b82601f1062000a8c57805160ff191683800117855562000abd565b8280016001018555821562000abd579182015b8281111562000abc57825182559160200191906001019062000a9f565b5b50905062000acc919062000ad0565b5090565b5b8082111562000aeb57600081600090555060010162000ad1565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b218262000af4565b9050919050565b62000b338162000b14565b811462000b3f57600080fd5b50565b60008151905062000b538162000b28565b92915050565b60006020828403121562000b725762000b7162000aef565b5b600062000b828482850162000b42565b91505092915050565b62000b968162000b14565b82525050565b600060408201905062000bb3600083018562000b8b565b62000bc2602083018462000b8b565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c0f8262000bc9565b915062000c1c8362000bc9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c585762000c5762000bd3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000c9f8262000bc9565b915062000cac8362000bc9565b92508262000cbf5762000cbe62000c63565b5b828204905092915050565b600062000cd78262000bc9565b915062000ce48362000bc9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d1c5762000d1b62000bd3565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d7060208362000d27565b915062000d7d8262000d38565b602082019050919050565b6000602082019050818103600083015262000da38162000d61565b9050919050565b60008115159050919050565b62000dc18162000daa565b82525050565b600060208201905062000dde600083018462000db6565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e1c601f8362000d27565b915062000e298262000de4565b602082019050919050565b6000602082019050818103600083015262000e4f8162000e0d565b9050919050565b62000e618162000bc9565b82525050565b600060208201905062000e7e600083018462000e56565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ecc57607f821691505b6020821081141562000ee35762000ee262000e84565b5b50919050565b60805160a05161424062000f3960003960008181610cba015261125e015260008181610ad301528181612c8d01528181612d6e01528181612d9501528181612e310152612e5801526142406000f3fe6080604052600436106102555760003560e01c80638da5cb5b11610139578063c0246668116100b6578063dd62ed3e1161007a578063dd62ed3e146108ef578063e2f456051461092c578063f11a24d314610957578063f2fde38b14610982578063f6374342146109ab578063f8b45b05146109d65761025c565b8063c02466681461080a578063c6616ba114610833578063c8c8ebe41461085c578063d257b34f14610887578063d85ba063146108c45761025c565b80639a7a23d6116100fd5780639a7a23d6146106ff578063a457c2d714610728578063a9059cbb14610765578063b62496f5146107a2578063bbc0c742146107df5761025c565b80638da5cb5b1461062a5780638ea5220f146106555780639213691314610680578063924de9b7146106ab57806395d89b41146106d45761025c565b806349bd5a5e116101d257806370a082311161019657806370a0823114610540578063715018a61461057d578063751039fc146105945780637571336a146105bf5780637bce5a04146105e85780638a8c523c146106135761025c565b806349bd5a5e146104575780634a62bb65146104825780634fbee193146104ad5780636a486a8e146104ea5780636ddd1713146105155761025c565b80631a8145bb116102195780631a8145bb1461035c5780631f3fed8f1461038757806323b872dd146103b2578063313ce567146103ef578063395093511461041a5761025c565b806306fdde0314610261578063095ea7b31461028c57806310d5de53146102c95780631694505e1461030657806318160ddd146103315761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a01565b6040516102839190612fc0565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae919061307b565b610a93565b6040516102c091906130d6565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb91906130f1565b610ab1565b6040516102fd91906130d6565b60405180910390f35b34801561031257600080fd5b5061031b610ad1565b604051610328919061317d565b60405180910390f35b34801561033d57600080fd5b50610346610af5565b60405161035391906131a7565b60405180910390f35b34801561036857600080fd5b50610371610aff565b60405161037e91906131a7565b60405180910390f35b34801561039357600080fd5b5061039c610b05565b6040516103a991906131a7565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d491906131c2565b610b0b565b6040516103e691906130d6565b60405180910390f35b3480156103fb57600080fd5b50610404610c03565b6040516104119190613231565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c919061307b565b610c0c565b60405161044e91906130d6565b60405180910390f35b34801561046357600080fd5b5061046c610cb8565b604051610479919061325b565b60405180910390f35b34801561048e57600080fd5b50610497610cdc565b6040516104a491906130d6565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf91906130f1565b610cef565b6040516104e191906130d6565b60405180910390f35b3480156104f657600080fd5b506104ff610d45565b60405161050c91906131a7565b60405180910390f35b34801561052157600080fd5b5061052a610d4b565b60405161053791906130d6565b60405180910390f35b34801561054c57600080fd5b50610567600480360381019061056291906130f1565b610d5e565b60405161057491906131a7565b60405180910390f35b34801561058957600080fd5b50610592610da6565b005b3480156105a057600080fd5b506105a9610e2e565b6040516105b691906130d6565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e191906132a2565b610ece565b005b3480156105f457600080fd5b506105fd610fa5565b60405161060a91906131a7565b60405180910390f35b34801561061f57600080fd5b50610628610fab565b005b34801561063657600080fd5b5061063f61105f565b60405161064c919061325b565b60405180910390f35b34801561066157600080fd5b5061066a611089565b604051610677919061325b565b60405180910390f35b34801561068c57600080fd5b506106956110af565b6040516106a291906131a7565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd91906132e2565b6110b5565b005b3480156106e057600080fd5b506106e961114e565b6040516106f69190612fc0565b60405180910390f35b34801561070b57600080fd5b50610726600480360381019061072191906132a2565b6111e0565b005b34801561073457600080fd5b5061074f600480360381019061074a919061307b565b6112f9565b60405161075c91906130d6565b60405180910390f35b34801561077157600080fd5b5061078c6004803603810190610787919061307b565b6113e4565b60405161079991906130d6565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c491906130f1565b611402565b6040516107d691906130d6565b60405180910390f35b3480156107eb57600080fd5b506107f4611422565b60405161080191906130d6565b60405180910390f35b34801561081657600080fd5b50610831600480360381019061082c91906132a2565b611435565b005b34801561083f57600080fd5b5061085a6004803603810190610855919061330f565b61155a565b005b34801561086857600080fd5b50610871611676565b60405161087e91906131a7565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a99190613376565b61167c565b6040516108bb91906130d6565b60405180910390f35b3480156108d057600080fd5b506108d96117d1565b6040516108e691906131a7565b60405180910390f35b3480156108fb57600080fd5b50610916600480360381019061091191906133a3565b6117d7565b60405161092391906131a7565b60405180910390f35b34801561093857600080fd5b5061094161185e565b60405161094e91906131a7565b60405180910390f35b34801561096357600080fd5b5061096c611864565b60405161097991906131a7565b60405180910390f35b34801561098e57600080fd5b506109a960048036038101906109a491906130f1565b61186a565b005b3480156109b757600080fd5b506109c0611962565b6040516109cd91906131a7565b60405180910390f35b3480156109e257600080fd5b506109eb611968565b6040516109f891906131a7565b60405180910390f35b606060038054610a1090613412565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3c90613412565b8015610a895780601f10610a5e57610100808354040283529160200191610a89565b820191906000526020600020905b815481529060010190602001808311610a6c57829003601f168201915b5050505050905090565b6000610aa7610aa061196e565b8484611976565b6001905092915050565b60146020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60115481565b60125481565b6000610b18848484611b41565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b6361196e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bda906134b6565b60405180910390fd5b610bf785610bef61196e565b858403611976565b60019150509392505050565b60006012905090565b6000610cae610c1961196e565b848460016000610c2761196e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca99190613505565b611976565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a60009054906101000a900460ff1681565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e5481565b600a60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dae61196e565b73ffffffffffffffffffffffffffffffffffffffff16610dcc61105f565b73ffffffffffffffffffffffffffffffffffffffff1614610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e19906135a7565b60405180910390fd5b610e2c60006125ad565b565b6000610e3861196e565b73ffffffffffffffffffffffffffffffffffffffff16610e5661105f565b73ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea3906135a7565b60405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055506001905090565b610ed661196e565b73ffffffffffffffffffffffffffffffffffffffff16610ef461105f565b73ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f41906135a7565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b610fb361196e565b73ffffffffffffffffffffffffffffffffffffffff16610fd161105f565b73ffffffffffffffffffffffffffffffffffffffff1614611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101e906135a7565b60405180910390fd5b6001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6110bd61196e565b73ffffffffffffffffffffffffffffffffffffffff166110db61105f565b73ffffffffffffffffffffffffffffffffffffffff1614611131576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611128906135a7565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b60606004805461115d90613412565b80601f016020809104026020016040519081016040528092919081815260200182805461118990613412565b80156111d65780601f106111ab576101008083540402835291602001916111d6565b820191906000526020600020905b8154815290600101906020018083116111b957829003601f168201915b5050505050905090565b6111e861196e565b73ffffffffffffffffffffffffffffffffffffffff1661120661105f565b73ffffffffffffffffffffffffffffffffffffffff161461125c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611253906135a7565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290613639565b60405180910390fd5b6112f58282612673565b5050565b6000806001600061130861196e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc906136cb565b60405180910390fd5b6113d96113d061196e565b85858403611976565b600191505092915050565b60006113f86113f161196e565b8484611b41565b6001905092915050565b60156020528060005260406000206000915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b61143d61196e565b73ffffffffffffffffffffffffffffffffffffffff1661145b61105f565b73ffffffffffffffffffffffffffffffffffffffff16146114b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a8906135a7565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161154e91906130d6565b60405180910390a25050565b61156261196e565b73ffffffffffffffffffffffffffffffffffffffff1661158061105f565b73ffffffffffffffffffffffffffffffffffffffff16146115d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cd906135a7565b60405180910390fd5b83600c8190555082600d81905550600d54600c546115f49190613505565b600b8190555081600f8190555080601081905550601054600f546116189190613505565b600e81905550601e600e54600b546116309190613505565b10611670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166790613737565b60405180910390fd5b50505050565b60075481565b600061168661196e565b73ffffffffffffffffffffffffffffffffffffffff166116a461105f565b73ffffffffffffffffffffffffffffffffffffffff16146116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f1906135a7565b60405180910390fd5b620186a06001611708610af5565b6117129190613757565b61171c91906137e0565b82101561175e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175590613883565b60405180910390fd5b6103e8600561176b610af5565b6117759190613757565b61177f91906137e0565b8211156117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890613915565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600c5481565b61187261196e565b73ffffffffffffffffffffffffffffffffffffffff1661189061105f565b73ffffffffffffffffffffffffffffffffffffffff16146118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd906135a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d906139a7565b60405180910390fd5b61195f816125ad565b50565b600f5481565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dd90613a39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4d90613acb565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b3491906131a7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba890613b5d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1890613bef565b60405180910390fd5b6000811415611c3b57611c3683836000612714565b6125a8565b600a60009054906101000a900460ff161561213657611c5861105f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611cc65750611c9661105f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611cff5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d39575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d525750600560149054906101000a900460ff16155b1561213557600a60019054906101000a900460ff16611e4c57601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e0c5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4290613c5b565b60405180910390fd5b5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611eef5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f9657600754811115611f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3090613ced565b60405180910390fd5b600954611f4583610d5e565b82611f509190613505565b1115611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8890613d59565b60405180910390fd5b612134565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120395750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561208857600754811115612083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207a90613deb565b60405180910390fd5b612133565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612132576009546120e583610d5e565b826120f09190613505565b1115612131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212890613d59565b60405180910390fd5b5b5b5b5b5b600061214130610d5e565b9050600060085482101590508080156121665750600a60029054906101000a900460ff165b801561217f5750600560149054906101000a900460ff16155b80156121d55750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561222b5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122815750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122c5576001600560146101000a81548160ff0219169083151502179055506122a9612995565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061237b5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561238557600090505b6000811561259857601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123e857506000600e54115b15612482576124156064612407600e5488612ba290919063ffffffff16565b612bb890919063ffffffff16565b9050600e54600f54826124289190613757565b61243291906137e0565b601160008282546124439190613505565b92505081905550600e546010548261245b9190613757565b61246591906137e0565b601260008282546124769190613505565b92505081905550612574565b601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124dd57506000600b54115b156125735761250a60646124fc600b5488612ba290919063ffffffff16565b612bb890919063ffffffff16565b9050600b54600c548261251d9190613757565b61252791906137e0565b601160008282546125389190613505565b92505081905550600b54600d54826125509190613757565b61255a91906137e0565b6012600082825461256b9190613505565b925050819055505b5b600081111561258957612588873083612714565b5b80856125959190613e0b565b94505b6125a3878787612714565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277b90613b5d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127eb90613bef565b60405180910390fd5b6127ff838383612bce565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287c90613eb1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129189190613505565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161297c91906131a7565b60405180910390a361298f848484612bd3565b50505050565b60006129a030610d5e565b905060006012546011546129b49190613505565b90506000808314806129c65750600082145b156129d357505050612ba0565b60146008546129e29190613757565b8311156129fb5760146008546129f89190613757565b92505b600060028360115486612a0e9190613757565b612a1891906137e0565b612a2291906137e0565b90506000612a398286612bd890919063ffffffff16565b90506000479050612a4982612bee565b6000612a5e8247612bd890919063ffffffff16565b90506000612a8987612a7b60125485612ba290919063ffffffff16565b612bb890919063ffffffff16565b905060008183612a999190613e0b565b905060006011819055506000601281905550600086118015612abb5750600081115b15612b0857612aca8682612e2b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601154604051612aff93929190613ed1565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612b4e90613f39565b60006040518083038185875af1925050503d8060008114612b8b576040519150601f19603f3d011682016040523d82523d6000602084013e612b90565b606091505b5050809750505050505050505050505b565b60008183612bb09190613757565b905092915050565b60008183612bc691906137e0565b905092915050565b505050565b505050565b60008183612be69190613e0b565b905092915050565b6000600267ffffffffffffffff811115612c0b57612c0a613f4e565b5b604051908082528060200260200182016040528015612c395781602001602082028036833780820191505090505b5090503081600081518110612c5157612c50613f7d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1a9190613fc1565b81600181518110612d2e57612d2d613f7d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d93307f000000000000000000000000000000000000000000000000000000000000000084611976565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612df59594939291906140e7565b600060405180830381600087803b158015612e0f57600080fd5b505af1158015612e23573d6000803e3d6000fd5b505050505050565b612e56307f000000000000000000000000000000000000000000000000000000000000000084611976565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612edd96959493929190614141565b60606040518083038185885af1158015612efb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f2091906141b7565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f61578082015181840152602081019050612f46565b83811115612f70576000848401525b50505050565b6000601f19601f8301169050919050565b6000612f9282612f27565b612f9c8185612f32565b9350612fac818560208601612f43565b612fb581612f76565b840191505092915050565b60006020820190508181036000830152612fda8184612f87565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061301282612fe7565b9050919050565b61302281613007565b811461302d57600080fd5b50565b60008135905061303f81613019565b92915050565b6000819050919050565b61305881613045565b811461306357600080fd5b50565b6000813590506130758161304f565b92915050565b6000806040838503121561309257613091612fe2565b5b60006130a085828601613030565b92505060206130b185828601613066565b9150509250929050565b60008115159050919050565b6130d0816130bb565b82525050565b60006020820190506130eb60008301846130c7565b92915050565b60006020828403121561310757613106612fe2565b5b600061311584828501613030565b91505092915050565b6000819050919050565b600061314361313e61313984612fe7565b61311e565b612fe7565b9050919050565b600061315582613128565b9050919050565b60006131678261314a565b9050919050565b6131778161315c565b82525050565b6000602082019050613192600083018461316e565b92915050565b6131a181613045565b82525050565b60006020820190506131bc6000830184613198565b92915050565b6000806000606084860312156131db576131da612fe2565b5b60006131e986828701613030565b93505060206131fa86828701613030565b925050604061320b86828701613066565b9150509250925092565b600060ff82169050919050565b61322b81613215565b82525050565b60006020820190506132466000830184613222565b92915050565b61325581613007565b82525050565b6000602082019050613270600083018461324c565b92915050565b61327f816130bb565b811461328a57600080fd5b50565b60008135905061329c81613276565b92915050565b600080604083850312156132b9576132b8612fe2565b5b60006132c785828601613030565b92505060206132d88582860161328d565b9150509250929050565b6000602082840312156132f8576132f7612fe2565b5b60006133068482850161328d565b91505092915050565b6000806000806080858703121561332957613328612fe2565b5b600061333787828801613066565b945050602061334887828801613066565b935050604061335987828801613066565b925050606061336a87828801613066565b91505092959194509250565b60006020828403121561338c5761338b612fe2565b5b600061339a84828501613066565b91505092915050565b600080604083850312156133ba576133b9612fe2565b5b60006133c885828601613030565b92505060206133d985828601613030565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061342a57607f821691505b6020821081141561343e5761343d6133e3565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006134a0602883612f32565b91506134ab82613444565b604082019050919050565b600060208201905081810360008301526134cf81613493565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061351082613045565b915061351b83613045565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135505761354f6134d6565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613591602083612f32565b915061359c8261355b565b602082019050919050565b600060208201905081810360008301526135c081613584565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613623603983612f32565b915061362e826135c7565b604082019050919050565b6000602082019050818103600083015261365281613616565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006136b5602583612f32565b91506136c082613659565b604082019050919050565b600060208201905081810360008301526136e4816136a8565b9050919050565b7f436865636b20726f756e64747269700000000000000000000000000000000000600082015250565b6000613721600f83612f32565b915061372c826136eb565b602082019050919050565b6000602082019050818103600083015261375081613714565b9050919050565b600061376282613045565b915061376d83613045565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156137a6576137a56134d6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137eb82613045565b91506137f683613045565b925082613806576138056137b1565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061386d603583612f32565b915061387882613811565b604082019050919050565b6000602082019050818103600083015261389c81613860565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006138ff603483612f32565b915061390a826138a3565b604082019050919050565b6000602082019050818103600083015261392e816138f2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613991602683612f32565b915061399c82613935565b604082019050919050565b600060208201905081810360008301526139c081613984565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a23602483612f32565b9150613a2e826139c7565b604082019050919050565b60006020820190508181036000830152613a5281613a16565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ab5602283612f32565b9150613ac082613a59565b604082019050919050565b60006020820190508181036000830152613ae481613aa8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b47602583612f32565b9150613b5282613aeb565b604082019050919050565b60006020820190508181036000830152613b7681613b3a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bd9602383612f32565b9150613be482613b7d565b604082019050919050565b60006020820190508181036000830152613c0881613bcc565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613c45601683612f32565b9150613c5082613c0f565b602082019050919050565b60006020820190508181036000830152613c7481613c38565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613cd7603583612f32565b9150613ce282613c7b565b604082019050919050565b60006020820190508181036000830152613d0681613cca565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613d43601383612f32565b9150613d4e82613d0d565b602082019050919050565b60006020820190508181036000830152613d7281613d36565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613dd5603683612f32565b9150613de082613d79565b604082019050919050565b60006020820190508181036000830152613e0481613dc8565b9050919050565b6000613e1682613045565b9150613e2183613045565b925082821015613e3457613e336134d6565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613e9b602683612f32565b9150613ea682613e3f565b604082019050919050565b60006020820190508181036000830152613eca81613e8e565b9050919050565b6000606082019050613ee66000830186613198565b613ef36020830185613198565b613f006040830184613198565b949350505050565b600081905092915050565b50565b6000613f23600083613f08565b9150613f2e82613f13565b600082019050919050565b6000613f4482613f16565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613fbb81613019565b92915050565b600060208284031215613fd757613fd6612fe2565b5b6000613fe584828501613fac565b91505092915050565b6000819050919050565b600061401361400e61400984613fee565b61311e565b613045565b9050919050565b61402381613ff8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61405e81613007565b82525050565b60006140708383614055565b60208301905092915050565b6000602082019050919050565b600061409482614029565b61409e8185614034565b93506140a983614045565b8060005b838110156140da5781516140c18882614064565b97506140cc8361407c565b9250506001810190506140ad565b5085935050505092915050565b600060a0820190506140fc6000830188613198565b614109602083018761401a565b818103604083015261411b8186614089565b905061412a606083018561324c565b6141376080830184613198565b9695505050505050565b600060c082019050614156600083018961324c565b6141636020830188613198565b614170604083018761401a565b61417d606083018661401a565b61418a608083018561324c565b61419760a0830184613198565b979650505050505050565b6000815190506141b18161304f565b92915050565b6000806000606084860312156141d0576141cf612fe2565b5b60006141de868287016141a2565b93505060206141ef868287016141a2565b9250506040614200868287016141a2565b915050925092509256fea26469706673582212200c40f78f36ce4ce9422f6a0bbf547b52a5f47177359dab48a115d07a507b652a64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102555760003560e01c80638da5cb5b11610139578063c0246668116100b6578063dd62ed3e1161007a578063dd62ed3e146108ef578063e2f456051461092c578063f11a24d314610957578063f2fde38b14610982578063f6374342146109ab578063f8b45b05146109d65761025c565b8063c02466681461080a578063c6616ba114610833578063c8c8ebe41461085c578063d257b34f14610887578063d85ba063146108c45761025c565b80639a7a23d6116100fd5780639a7a23d6146106ff578063a457c2d714610728578063a9059cbb14610765578063b62496f5146107a2578063bbc0c742146107df5761025c565b80638da5cb5b1461062a5780638ea5220f146106555780639213691314610680578063924de9b7146106ab57806395d89b41146106d45761025c565b806349bd5a5e116101d257806370a082311161019657806370a0823114610540578063715018a61461057d578063751039fc146105945780637571336a146105bf5780637bce5a04146105e85780638a8c523c146106135761025c565b806349bd5a5e146104575780634a62bb65146104825780634fbee193146104ad5780636a486a8e146104ea5780636ddd1713146105155761025c565b80631a8145bb116102195780631a8145bb1461035c5780631f3fed8f1461038757806323b872dd146103b2578063313ce567146103ef578063395093511461041a5761025c565b806306fdde0314610261578063095ea7b31461028c57806310d5de53146102c95780631694505e1461030657806318160ddd146103315761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a01565b6040516102839190612fc0565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae919061307b565b610a93565b6040516102c091906130d6565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb91906130f1565b610ab1565b6040516102fd91906130d6565b60405180910390f35b34801561031257600080fd5b5061031b610ad1565b604051610328919061317d565b60405180910390f35b34801561033d57600080fd5b50610346610af5565b60405161035391906131a7565b60405180910390f35b34801561036857600080fd5b50610371610aff565b60405161037e91906131a7565b60405180910390f35b34801561039357600080fd5b5061039c610b05565b6040516103a991906131a7565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d491906131c2565b610b0b565b6040516103e691906130d6565b60405180910390f35b3480156103fb57600080fd5b50610404610c03565b6040516104119190613231565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c919061307b565b610c0c565b60405161044e91906130d6565b60405180910390f35b34801561046357600080fd5b5061046c610cb8565b604051610479919061325b565b60405180910390f35b34801561048e57600080fd5b50610497610cdc565b6040516104a491906130d6565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf91906130f1565b610cef565b6040516104e191906130d6565b60405180910390f35b3480156104f657600080fd5b506104ff610d45565b60405161050c91906131a7565b60405180910390f35b34801561052157600080fd5b5061052a610d4b565b60405161053791906130d6565b60405180910390f35b34801561054c57600080fd5b50610567600480360381019061056291906130f1565b610d5e565b60405161057491906131a7565b60405180910390f35b34801561058957600080fd5b50610592610da6565b005b3480156105a057600080fd5b506105a9610e2e565b6040516105b691906130d6565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e191906132a2565b610ece565b005b3480156105f457600080fd5b506105fd610fa5565b60405161060a91906131a7565b60405180910390f35b34801561061f57600080fd5b50610628610fab565b005b34801561063657600080fd5b5061063f61105f565b60405161064c919061325b565b60405180910390f35b34801561066157600080fd5b5061066a611089565b604051610677919061325b565b60405180910390f35b34801561068c57600080fd5b506106956110af565b6040516106a291906131a7565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd91906132e2565b6110b5565b005b3480156106e057600080fd5b506106e961114e565b6040516106f69190612fc0565b60405180910390f35b34801561070b57600080fd5b50610726600480360381019061072191906132a2565b6111e0565b005b34801561073457600080fd5b5061074f600480360381019061074a919061307b565b6112f9565b60405161075c91906130d6565b60405180910390f35b34801561077157600080fd5b5061078c6004803603810190610787919061307b565b6113e4565b60405161079991906130d6565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c491906130f1565b611402565b6040516107d691906130d6565b60405180910390f35b3480156107eb57600080fd5b506107f4611422565b60405161080191906130d6565b60405180910390f35b34801561081657600080fd5b50610831600480360381019061082c91906132a2565b611435565b005b34801561083f57600080fd5b5061085a6004803603810190610855919061330f565b61155a565b005b34801561086857600080fd5b50610871611676565b60405161087e91906131a7565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a99190613376565b61167c565b6040516108bb91906130d6565b60405180910390f35b3480156108d057600080fd5b506108d96117d1565b6040516108e691906131a7565b60405180910390f35b3480156108fb57600080fd5b50610916600480360381019061091191906133a3565b6117d7565b60405161092391906131a7565b60405180910390f35b34801561093857600080fd5b5061094161185e565b60405161094e91906131a7565b60405180910390f35b34801561096357600080fd5b5061096c611864565b60405161097991906131a7565b60405180910390f35b34801561098e57600080fd5b506109a960048036038101906109a491906130f1565b61186a565b005b3480156109b757600080fd5b506109c0611962565b6040516109cd91906131a7565b60405180910390f35b3480156109e257600080fd5b506109eb611968565b6040516109f891906131a7565b60405180910390f35b606060038054610a1090613412565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3c90613412565b8015610a895780601f10610a5e57610100808354040283529160200191610a89565b820191906000526020600020905b815481529060010190602001808311610a6c57829003601f168201915b5050505050905090565b6000610aa7610aa061196e565b8484611976565b6001905092915050565b60146020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60115481565b60125481565b6000610b18848484611b41565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b6361196e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bda906134b6565b60405180910390fd5b610bf785610bef61196e565b858403611976565b60019150509392505050565b60006012905090565b6000610cae610c1961196e565b848460016000610c2761196e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca99190613505565b611976565b6001905092915050565b7f000000000000000000000000f9334bed5d3a9497969948eb3c579ba94648dcec81565b600a60009054906101000a900460ff1681565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e5481565b600a60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dae61196e565b73ffffffffffffffffffffffffffffffffffffffff16610dcc61105f565b73ffffffffffffffffffffffffffffffffffffffff1614610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e19906135a7565b60405180910390fd5b610e2c60006125ad565b565b6000610e3861196e565b73ffffffffffffffffffffffffffffffffffffffff16610e5661105f565b73ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea3906135a7565b60405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055506001905090565b610ed661196e565b73ffffffffffffffffffffffffffffffffffffffff16610ef461105f565b73ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f41906135a7565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b610fb361196e565b73ffffffffffffffffffffffffffffffffffffffff16610fd161105f565b73ffffffffffffffffffffffffffffffffffffffff1614611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101e906135a7565b60405180910390fd5b6001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6110bd61196e565b73ffffffffffffffffffffffffffffffffffffffff166110db61105f565b73ffffffffffffffffffffffffffffffffffffffff1614611131576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611128906135a7565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b60606004805461115d90613412565b80601f016020809104026020016040519081016040528092919081815260200182805461118990613412565b80156111d65780601f106111ab576101008083540402835291602001916111d6565b820191906000526020600020905b8154815290600101906020018083116111b957829003601f168201915b5050505050905090565b6111e861196e565b73ffffffffffffffffffffffffffffffffffffffff1661120661105f565b73ffffffffffffffffffffffffffffffffffffffff161461125c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611253906135a7565b60405180910390fd5b7f000000000000000000000000f9334bed5d3a9497969948eb3c579ba94648dcec73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290613639565b60405180910390fd5b6112f58282612673565b5050565b6000806001600061130861196e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc906136cb565b60405180910390fd5b6113d96113d061196e565b85858403611976565b600191505092915050565b60006113f86113f161196e565b8484611b41565b6001905092915050565b60156020528060005260406000206000915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b61143d61196e565b73ffffffffffffffffffffffffffffffffffffffff1661145b61105f565b73ffffffffffffffffffffffffffffffffffffffff16146114b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a8906135a7565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161154e91906130d6565b60405180910390a25050565b61156261196e565b73ffffffffffffffffffffffffffffffffffffffff1661158061105f565b73ffffffffffffffffffffffffffffffffffffffff16146115d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cd906135a7565b60405180910390fd5b83600c8190555082600d81905550600d54600c546115f49190613505565b600b8190555081600f8190555080601081905550601054600f546116189190613505565b600e81905550601e600e54600b546116309190613505565b10611670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166790613737565b60405180910390fd5b50505050565b60075481565b600061168661196e565b73ffffffffffffffffffffffffffffffffffffffff166116a461105f565b73ffffffffffffffffffffffffffffffffffffffff16146116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f1906135a7565b60405180910390fd5b620186a06001611708610af5565b6117129190613757565b61171c91906137e0565b82101561175e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175590613883565b60405180910390fd5b6103e8600561176b610af5565b6117759190613757565b61177f91906137e0565b8211156117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890613915565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600c5481565b61187261196e565b73ffffffffffffffffffffffffffffffffffffffff1661189061105f565b73ffffffffffffffffffffffffffffffffffffffff16146118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd906135a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d906139a7565b60405180910390fd5b61195f816125ad565b50565b600f5481565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dd90613a39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4d90613acb565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b3491906131a7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba890613b5d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1890613bef565b60405180910390fd5b6000811415611c3b57611c3683836000612714565b6125a8565b600a60009054906101000a900460ff161561213657611c5861105f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611cc65750611c9661105f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611cff5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d39575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d525750600560149054906101000a900460ff16155b1561213557600a60019054906101000a900460ff16611e4c57601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e0c5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4290613c5b565b60405180910390fd5b5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611eef5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f9657600754811115611f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3090613ced565b60405180910390fd5b600954611f4583610d5e565b82611f509190613505565b1115611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8890613d59565b60405180910390fd5b612134565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120395750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561208857600754811115612083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207a90613deb565b60405180910390fd5b612133565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612132576009546120e583610d5e565b826120f09190613505565b1115612131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212890613d59565b60405180910390fd5b5b5b5b5b5b600061214130610d5e565b9050600060085482101590508080156121665750600a60029054906101000a900460ff165b801561217f5750600560149054906101000a900460ff16155b80156121d55750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561222b5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122815750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122c5576001600560146101000a81548160ff0219169083151502179055506122a9612995565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061237b5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561238557600090505b6000811561259857601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123e857506000600e54115b15612482576124156064612407600e5488612ba290919063ffffffff16565b612bb890919063ffffffff16565b9050600e54600f54826124289190613757565b61243291906137e0565b601160008282546124439190613505565b92505081905550600e546010548261245b9190613757565b61246591906137e0565b601260008282546124769190613505565b92505081905550612574565b601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124dd57506000600b54115b156125735761250a60646124fc600b5488612ba290919063ffffffff16565b612bb890919063ffffffff16565b9050600b54600c548261251d9190613757565b61252791906137e0565b601160008282546125389190613505565b92505081905550600b54600d54826125509190613757565b61255a91906137e0565b6012600082825461256b9190613505565b925050819055505b5b600081111561258957612588873083612714565b5b80856125959190613e0b565b94505b6125a3878787612714565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277b90613b5d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127eb90613bef565b60405180910390fd5b6127ff838383612bce565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287c90613eb1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129189190613505565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161297c91906131a7565b60405180910390a361298f848484612bd3565b50505050565b60006129a030610d5e565b905060006012546011546129b49190613505565b90506000808314806129c65750600082145b156129d357505050612ba0565b60146008546129e29190613757565b8311156129fb5760146008546129f89190613757565b92505b600060028360115486612a0e9190613757565b612a1891906137e0565b612a2291906137e0565b90506000612a398286612bd890919063ffffffff16565b90506000479050612a4982612bee565b6000612a5e8247612bd890919063ffffffff16565b90506000612a8987612a7b60125485612ba290919063ffffffff16565b612bb890919063ffffffff16565b905060008183612a999190613e0b565b905060006011819055506000601281905550600086118015612abb5750600081115b15612b0857612aca8682612e2b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601154604051612aff93929190613ed1565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612b4e90613f39565b60006040518083038185875af1925050503d8060008114612b8b576040519150601f19603f3d011682016040523d82523d6000602084013e612b90565b606091505b5050809750505050505050505050505b565b60008183612bb09190613757565b905092915050565b60008183612bc691906137e0565b905092915050565b505050565b505050565b60008183612be69190613e0b565b905092915050565b6000600267ffffffffffffffff811115612c0b57612c0a613f4e565b5b604051908082528060200260200182016040528015612c395781602001602082028036833780820191505090505b5090503081600081518110612c5157612c50613f7d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1a9190613fc1565b81600181518110612d2e57612d2d613f7d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d93307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611976565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612df59594939291906140e7565b600060405180830381600087803b158015612e0f57600080fd5b505af1158015612e23573d6000803e3d6000fd5b505050505050565b612e56307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611976565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612edd96959493929190614141565b60606040518083038185885af1158015612efb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f2091906141b7565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f61578082015181840152602081019050612f46565b83811115612f70576000848401525b50505050565b6000601f19601f8301169050919050565b6000612f9282612f27565b612f9c8185612f32565b9350612fac818560208601612f43565b612fb581612f76565b840191505092915050565b60006020820190508181036000830152612fda8184612f87565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061301282612fe7565b9050919050565b61302281613007565b811461302d57600080fd5b50565b60008135905061303f81613019565b92915050565b6000819050919050565b61305881613045565b811461306357600080fd5b50565b6000813590506130758161304f565b92915050565b6000806040838503121561309257613091612fe2565b5b60006130a085828601613030565b92505060206130b185828601613066565b9150509250929050565b60008115159050919050565b6130d0816130bb565b82525050565b60006020820190506130eb60008301846130c7565b92915050565b60006020828403121561310757613106612fe2565b5b600061311584828501613030565b91505092915050565b6000819050919050565b600061314361313e61313984612fe7565b61311e565b612fe7565b9050919050565b600061315582613128565b9050919050565b60006131678261314a565b9050919050565b6131778161315c565b82525050565b6000602082019050613192600083018461316e565b92915050565b6131a181613045565b82525050565b60006020820190506131bc6000830184613198565b92915050565b6000806000606084860312156131db576131da612fe2565b5b60006131e986828701613030565b93505060206131fa86828701613030565b925050604061320b86828701613066565b9150509250925092565b600060ff82169050919050565b61322b81613215565b82525050565b60006020820190506132466000830184613222565b92915050565b61325581613007565b82525050565b6000602082019050613270600083018461324c565b92915050565b61327f816130bb565b811461328a57600080fd5b50565b60008135905061329c81613276565b92915050565b600080604083850312156132b9576132b8612fe2565b5b60006132c785828601613030565b92505060206132d88582860161328d565b9150509250929050565b6000602082840312156132f8576132f7612fe2565b5b60006133068482850161328d565b91505092915050565b6000806000806080858703121561332957613328612fe2565b5b600061333787828801613066565b945050602061334887828801613066565b935050604061335987828801613066565b925050606061336a87828801613066565b91505092959194509250565b60006020828403121561338c5761338b612fe2565b5b600061339a84828501613066565b91505092915050565b600080604083850312156133ba576133b9612fe2565b5b60006133c885828601613030565b92505060206133d985828601613030565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061342a57607f821691505b6020821081141561343e5761343d6133e3565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006134a0602883612f32565b91506134ab82613444565b604082019050919050565b600060208201905081810360008301526134cf81613493565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061351082613045565b915061351b83613045565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135505761354f6134d6565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613591602083612f32565b915061359c8261355b565b602082019050919050565b600060208201905081810360008301526135c081613584565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613623603983612f32565b915061362e826135c7565b604082019050919050565b6000602082019050818103600083015261365281613616565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006136b5602583612f32565b91506136c082613659565b604082019050919050565b600060208201905081810360008301526136e4816136a8565b9050919050565b7f436865636b20726f756e64747269700000000000000000000000000000000000600082015250565b6000613721600f83612f32565b915061372c826136eb565b602082019050919050565b6000602082019050818103600083015261375081613714565b9050919050565b600061376282613045565b915061376d83613045565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156137a6576137a56134d6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137eb82613045565b91506137f683613045565b925082613806576138056137b1565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061386d603583612f32565b915061387882613811565b604082019050919050565b6000602082019050818103600083015261389c81613860565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006138ff603483612f32565b915061390a826138a3565b604082019050919050565b6000602082019050818103600083015261392e816138f2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613991602683612f32565b915061399c82613935565b604082019050919050565b600060208201905081810360008301526139c081613984565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a23602483612f32565b9150613a2e826139c7565b604082019050919050565b60006020820190508181036000830152613a5281613a16565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ab5602283612f32565b9150613ac082613a59565b604082019050919050565b60006020820190508181036000830152613ae481613aa8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b47602583612f32565b9150613b5282613aeb565b604082019050919050565b60006020820190508181036000830152613b7681613b3a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bd9602383612f32565b9150613be482613b7d565b604082019050919050565b60006020820190508181036000830152613c0881613bcc565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613c45601683612f32565b9150613c5082613c0f565b602082019050919050565b60006020820190508181036000830152613c7481613c38565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613cd7603583612f32565b9150613ce282613c7b565b604082019050919050565b60006020820190508181036000830152613d0681613cca565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613d43601383612f32565b9150613d4e82613d0d565b602082019050919050565b60006020820190508181036000830152613d7281613d36565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613dd5603683612f32565b9150613de082613d79565b604082019050919050565b60006020820190508181036000830152613e0481613dc8565b9050919050565b6000613e1682613045565b9150613e2183613045565b925082821015613e3457613e336134d6565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613e9b602683612f32565b9150613ea682613e3f565b604082019050919050565b60006020820190508181036000830152613eca81613e8e565b9050919050565b6000606082019050613ee66000830186613198565b613ef36020830185613198565b613f006040830184613198565b949350505050565b600081905092915050565b50565b6000613f23600083613f08565b9150613f2e82613f13565b600082019050919050565b6000613f4482613f16565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613fbb81613019565b92915050565b600060208284031215613fd757613fd6612fe2565b5b6000613fe584828501613fac565b91505092915050565b6000819050919050565b600061401361400e61400984613fee565b61311e565b613045565b9050919050565b61402381613ff8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61405e81613007565b82525050565b60006140708383614055565b60208301905092915050565b6000602082019050919050565b600061409482614029565b61409e8185614034565b93506140a983614045565b8060005b838110156140da5781516140c18882614064565b97506140cc8361407c565b9250506001810190506140ad565b5085935050505092915050565b600060a0820190506140fc6000830188613198565b614109602083018761401a565b818103604083015261411b8186614089565b905061412a606083018561324c565b6141376080830184613198565b9695505050505050565b600060c082019050614156600083018961324c565b6141636020830188613198565b614170604083018761401a565b61417d606083018661401a565b61418a608083018561324c565b61419760a0830184613198565b979650505050505050565b6000815190506141b18161304f565b92915050565b6000806000606084860312156141d0576141cf612fe2565b5b60006141de868287016141a2565b93505060206141ef868287016141a2565b9250506040614200868287016141a2565b915050925092509256fea26469706673582212200c40f78f36ce4ce9422f6a0bbf547b52a5f47177359dab48a115d07a507b652a64736f6c634300080a0033

Deployed Bytecode Sourcemap

9444:12315:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2622:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3536:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10335:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9518:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2943:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10141:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10181;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3713:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2842:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4213:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9576:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9801:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15191:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10031:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9881:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3059:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;770:103;;;;;;;;;;;;;:::i;:::-;;13425:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14122:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9992:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12761:112;;;;;;;;;;;;;:::i;:::-;;547:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9653:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10104:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14385:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2730:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14683:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4436:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3194:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10556:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9841:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14493:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12881:535;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9686:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13616:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9921:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3377:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9728:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9955:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;881:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10066:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9768:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2622:100;2676:13;2709:5;2702:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2622:100;:::o;3536:169::-;3619:4;3636:39;3645:12;:10;:12::i;:::-;3659:7;3668:6;3636:8;:39::i;:::-;3693:4;3686:11;;3536:169;;;;:::o;10335:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;9518:51::-;;;:::o;2943:108::-;3004:7;3031:12;;3024:19;;2943:108;:::o;10141:33::-;;;;:::o;10181:::-;;;;:::o;3713:492::-;3853:4;3870:36;3880:6;3888:9;3899:6;3870:9;:36::i;:::-;3919:24;3946:11;:19;3958:6;3946:19;;;;;;;;;;;;;;;:33;3966:12;:10;:12::i;:::-;3946:33;;;;;;;;;;;;;;;;3919:60;;4018:6;3998:16;:26;;3990:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4105:57;4114:6;4122:12;:10;:12::i;:::-;4155:6;4136:16;:25;4105:8;:57::i;:::-;4193:4;4186:11;;;3713:492;;;;;:::o;2842:93::-;2900:5;2925:2;2918:9;;2842:93;:::o;4213:215::-;4301:4;4318:80;4327:12;:10;:12::i;:::-;4341:7;4387:10;4350:11;:25;4362:12;:10;:12::i;:::-;4350:25;;;;;;;;;;;;;;;:34;4376:7;4350:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4318:8;:80::i;:::-;4416:4;4409:11;;4213:215;;;;:::o;9576:38::-;;;:::o;9801:33::-;;;;;;;;;;;;;:::o;15191:126::-;15257:4;15281:19;:28;15301:7;15281:28;;;;;;;;;;;;;;;;;;;;;;;;;15274:35;;15191:126;;;:::o;10031:28::-;;;;:::o;9881:31::-;;;;;;;;;;;;;:::o;3059:127::-;3133:7;3160:9;:18;3170:7;3160:18;;;;;;;;;;;;;;;;3153:25;;3059:127;;;:::o;770:103::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;835:30:::1;862:1;835:18;:30::i;:::-;770:103::o:0;13425:121::-;13477:4;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13511:5:::1;13494:14;;:22;;;;;;;;;;;;;;;;;;13534:4;13527:11;;13425:121:::0;:::o;14122:167::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14277:4:::1;14235:31;:39;14267:6;14235:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;14122:167:::0;;:::o;9992:30::-;;;;:::o;12761:112::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12832:4:::1;12816:13;;:20;;;;;;;;;;;;;;;;;;12861:4;12847:11;;:18;;;;;;;;;;;;;;;;;;12761:112::o:0;547:87::-;593:7;620:6;;;;;;;;;;;613:13;;547:87;:::o;9653:24::-;;;;;;;;;;;;;:::o;10104:31::-;;;;:::o;14385:100::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14470:7:::1;14456:11;;:21;;;;;;;;;;;;;;;;;;14385:100:::0;:::o;2730:104::-;2786:13;2819:7;2812:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2730:104;:::o;14683:304::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14827:13:::1;14819:21;;:4;:21;;;;14797:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;14938:41;14967:4;14973:5;14938:28;:41::i;:::-;14683:304:::0;;:::o;4436:413::-;4529:4;4546:24;4573:11;:25;4585:12;:10;:12::i;:::-;4573:25;;;;;;;;;;;;;;;:34;4599:7;4573:34;;;;;;;;;;;;;;;;4546:61;;4646:15;4626:16;:35;;4618:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4739:67;4748:12;:10;:12::i;:::-;4762:7;4790:15;4771:16;:34;4739:8;:67::i;:::-;4837:4;4830:11;;;4436:413;;;;:::o;3194:175::-;3280:4;3297:42;3307:12;:10;:12::i;:::-;3321:9;3332:6;3297:9;:42::i;:::-;3357:4;3350:11;;3194:175;;;;:::o;10556:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;9841:33::-;;;;;;;;;;;;;:::o;14493:182::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14609:8:::1;14578:19;:28;14598:7;14578:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14649:7;14633:34;;;14658:8;14633:34;;;;;;:::i;:::-;;;;;;;;14493:182:::0;;:::o;12881:535::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13055:16:::1;13037:15;:34;;;;13100:16;13082:15;:34;;;;13160:15;;13142;;:33;;;;:::i;:::-;13127:12;:48;;;;13207:17;13188:16;:36;;;;13254:17;13235:16;:36;;;;13317:16;;13298;;:35;;;;:::i;:::-;13282:13;:51;;;;13386:2;13369:13;;13354:12;;:28;;;;:::i;:::-;13353:35;13344:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12881:535:::0;;;;:::o;9686:35::-;;;;:::o;13616:497::-;13724:4;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13803:6:::1;13798:1;13782:13;:11;:13::i;:::-;:17;;;;:::i;:::-;13781:28;;;;:::i;:::-;13768:9;:41;;13746:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;13958:4;13953:1;13937:13;:11;:13::i;:::-;:17;;;;:::i;:::-;13936:26;;;;:::i;:::-;13923:9;:39;;13901:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;14074:9;14053:18;:30;;;;14101:4;14094:11;;13616:497:::0;;;:::o;9921:27::-;;;;:::o;3377:151::-;3466:7;3493:11;:18;3505:5;3493:18;;;;;;;;;;;;;;;:27;3512:7;3493:27;;;;;;;;;;;;;;;;3486:34;;3377:151;;;;:::o;9728:33::-;;;;:::o;9955:30::-;;;;:::o;881:201::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;990:1:::1;970:22;;:8;:22;;;;962:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1046:28;1065:8;1046:18;:28::i;:::-;881:201:::0;:::o;10066:31::-;;;;:::o;9768:24::-;;;;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;6604:380::-;6757:1;6740:19;;:5;:19;;;;6732:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6838:1;6819:21;;:7;:21;;;;6811:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6922:6;6892:11;:18;6904:5;6892:18;;;;;;;;;;;;;;;:27;6911:7;6892:27;;;;;;;;;;;;;;;:36;;;;6960:7;6944:32;;6953:5;6944:32;;;6969:6;6944:32;;;;;;:::i;:::-;;;;;;;;6604:380;;;:::o;15325:3802::-;15473:1;15457:18;;:4;:18;;;;15449:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15550:1;15536:16;;:2;:16;;;;15528:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15619:1;15609:6;:11;15605:93;;;15637:28;15653:4;15659:2;15663:1;15637:15;:28::i;:::-;15680:7;;15605:93;15714:14;;;;;;;;;;;15710:1694;;;15775:7;:5;:7::i;:::-;15767:15;;:4;:15;;;;:49;;;;;15809:7;:5;:7::i;:::-;15803:13;;:2;:13;;;;15767:49;:86;;;;;15851:1;15837:16;;:2;:16;;;;15767:86;:128;;;;;15888:6;15874:21;;:2;:21;;;;15767:128;:158;;;;;15917:8;;;;;;;;;;;15916:9;15767:158;15745:1648;;;15965:13;;;;;;;;;;;15960:223;;16037:19;:25;16057:4;16037:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16066:19;:23;16086:2;16066:23;;;;;;;;;;;;;;;;;;;;;;;;;16037:52;16003:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;15960:223;16257:25;:31;16283:4;16257:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;16314:31;:35;16346:2;16314:35;;;;;;;;;;;;;;;;;;;;;;;;;16313:36;16257:92;16231:1147;;;16436:20;;16426:6;:30;;16392:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;16644:9;;16627:13;16637:2;16627:9;:13::i;:::-;16618:6;:22;;;;:::i;:::-;:35;;16584:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;16231:1147;;;16822:25;:29;16848:2;16822:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;16877:31;:37;16909:4;16877:37;;;;;;;;;;;;;;;;;;;;;;;;;16876:38;16822:92;16796:582;;;17001:20;;16991:6;:30;;16957:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;16796:582;;;17158:31;:35;17190:2;17158:35;;;;;;;;;;;;;;;;;;;;;;;;;17153:225;;17278:9;;17261:13;17271:2;17261:9;:13::i;:::-;17252:6;:22;;;;:::i;:::-;:35;;17218:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;17153:225;16796:582;16231:1147;15745:1648;15710:1694;17416:28;17447:24;17465:4;17447:9;:24::i;:::-;17416:55;;17484:12;17523:18;;17499:20;:42;;17484:57;;17572:7;:35;;;;;17596:11;;;;;;;;;;;17572:35;:61;;;;;17625:8;;;;;;;;;;;17624:9;17572:61;:110;;;;;17651:25;:31;17677:4;17651:31;;;;;;;;;;;;;;;;;;;;;;;;;17650:32;17572:110;:153;;;;;17700:19;:25;17720:4;17700:25;;;;;;;;;;;;;;;;;;;;;;;;;17699:26;17572:153;:194;;;;;17743:19;:23;17763:2;17743:23;;;;;;;;;;;;;;;;;;;;;;;;;17742:24;17572:194;17554:326;;;17804:4;17793:8;;:15;;;;;;;;;;;;;;;;;;17825:10;:8;:10::i;:::-;17863:5;17852:8;;:16;;;;;;;;;;;;;;;;;;17554:326;17892:12;17908:8;;;;;;;;;;;17907:9;17892:24;;18018:19;:25;18038:4;18018:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;18047:19;:23;18067:2;18047:23;;;;;;;;;;;;;;;;;;;;;;;;;18018:52;18014:100;;;18097:5;18087:15;;18014:100;18126:12;18231:7;18227:847;;;18283:25;:29;18309:2;18283:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;18332:1;18316:13;;:17;18283:50;18279:646;;;18361:34;18391:3;18361:25;18372:13;;18361:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;18354:41;;18464:13;;18444:16;;18437:4;:23;;;;:::i;:::-;18436:41;;;;:::i;:::-;18414:18;;:63;;;;;;;:::i;:::-;;;;;;;;18546:13;;18526:16;;18519:4;:23;;;;:::i;:::-;18518:41;;;;:::i;:::-;18496:18;;:63;;;;;;;:::i;:::-;;;;;;;;18279:646;;;18637:25;:31;18663:4;18637:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;18687:1;18672:12;;:16;18637:51;18633:292;;;18716:33;18745:3;18716:24;18727:12;;18716:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;18709:40;;18817:12;;18798:15;;18791:4;:22;;;;:::i;:::-;18790:39;;;;:::i;:::-;18768:18;;:61;;;;;;;:::i;:::-;;;;;;;;18897:12;;18878:15;;18871:4;:22;;;;:::i;:::-;18870:39;;;;:::i;:::-;18848:18;;:61;;;;;;;:::i;:::-;;;;;;;;18633:292;18279:646;18952:1;18945:4;:8;18941:91;;;18974:42;18990:4;19004;19011;18974:15;:42::i;:::-;18941:91;19058:4;19048:14;;;;;:::i;:::-;;;18227:847;19086:33;19102:4;19108:2;19112:6;19086:15;:33::i;:::-;15438:3689;;;;15325:3802;;;;:::o;1088:191::-;1162:16;1181:6;;;;;;;;;;;1162:25;;1207:8;1198:6;;:17;;;;;;;;;;;;;;;;;;1262:8;1231:40;;1252:8;1231:40;;;;;;;;;;;;1151:128;1088:191;:::o;14995:188::-;15112:5;15078:25;:31;15104:4;15078:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15169:5;15135:40;;15163:4;15135:40;;;;;;;;;;;;14995:188;;:::o;4857:733::-;5015:1;4997:20;;:6;:20;;;;4989:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5099:1;5078:23;;:9;:23;;;;5070:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5154:47;5175:6;5183:9;5194:6;5154:20;:47::i;:::-;5214:21;5238:9;:17;5248:6;5238:17;;;;;;;;;;;;;;;;5214:41;;5291:6;5274:13;:23;;5266:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5412:6;5396:13;:22;5376:9;:17;5386:6;5376:17;;;;;;;;;;;;;;;:42;;;;5464:6;5440:9;:20;5450:9;5440:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5505:9;5488:35;;5497:6;5488:35;;;5516:6;5488:35;;;;;;:::i;:::-;;;;;;;;5536:46;5556:6;5564:9;5575:6;5536:19;:46::i;:::-;4978:612;4857:733;;;:::o;20255:1499::-;20294:23;20320:24;20338:4;20320:9;:24::i;:::-;20294:50;;20355:25;20404:18;;20383;;:39;;;;:::i;:::-;20355:67;;20433:12;20481:1;20462:15;:20;:46;;;;20507:1;20486:17;:22;20462:46;20458:85;;;20525:7;;;;;20458:85;20598:2;20577:18;;:23;;;;:::i;:::-;20559:15;:41;20555:115;;;20656:2;20635:18;;:23;;;;:::i;:::-;20617:41;;20555:115;20731:23;20818:1;20798:17;20776:18;;20758:15;:36;;;;:::i;:::-;20757:58;;;;:::i;:::-;:62;;;;:::i;:::-;20731:88;;20830:26;20859:36;20879:15;20859;:19;;:36;;;;:::i;:::-;20830:65;;20908:25;20936:21;20908:49;;20970:36;20987:18;20970:16;:36::i;:::-;21019:18;21040:44;21066:17;21040:21;:25;;:44;;;;:::i;:::-;21019:65;;21098:23;21124:57;21163:17;21124:34;21139:18;;21124:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;21098:83;;21194:23;21233:15;21220:10;:28;;;;:::i;:::-;21194:54;;21282:1;21261:18;:22;;;;21315:1;21294:18;:22;;;;21351:1;21333:15;:19;:42;;;;;21374:1;21356:15;:19;21333:42;21329:278;;;21392:46;21405:15;21422;21392:12;:46::i;:::-;21458:137;21491:18;21528:15;21562:18;;21458:137;;;;;;;;:::i;:::-;;;;;;;;21329:278;21697:9;;;;;;;;;;;21689:23;;21720:21;21689:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21675:71;;;;;20283:1471;;;;;;;;;20255:1499;:::o;7492:98::-;7550:7;7581:1;7577;:5;;;;:::i;:::-;7570:12;;7492:98;;;;:::o;7598:::-;7656:7;7687:1;7683;:5;;;;:::i;:::-;7676:12;;7598:98;;;;:::o;6992:125::-;;;;:::o;7125:124::-;;;;:::o;7386:98::-;7444:7;7475:1;7471;:5;;;;:::i;:::-;7464:12;;7386:98;;;;:::o;19135:589::-;19261:21;19299:1;19285:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19261:40;;19330:4;19312;19317:1;19312:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19356:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19346:4;19351:1;19346:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;19391:62;19408:4;19423:15;19441:11;19391:8;:62::i;:::-;19492:15;:66;;;19573:11;19599:1;19643:4;19670;19690:15;19492:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19190:534;19135:589;:::o;19732:515::-;19880:62;19897:4;19912:15;19930:11;19880:8;:62::i;:::-;19985:15;:31;;;20024:9;20057:4;20077:11;20103:1;20146;20189:9;;;;;;;;;;;20213:15;19985:254;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19732:515;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:152::-;4251:9;4284:37;4315:5;4284:37;:::i;:::-;4271:50;;4175:152;;;:::o;4333:183::-;4446:63;4503:5;4446:63;:::i;:::-;4441:3;4434:76;4333:183;;:::o;4522:274::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:97;4786:1;4775:9;4771:17;4762:6;4692:97;:::i;:::-;4522:274;;;;:::o;4802:118::-;4889:24;4907:5;4889:24;:::i;:::-;4884:3;4877:37;4802:118;;:::o;4926:222::-;5019:4;5057:2;5046:9;5042:18;5034:26;;5070:71;5138:1;5127:9;5123:17;5114:6;5070:71;:::i;:::-;4926:222;;;;:::o;5154:619::-;5231:6;5239;5247;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5549:2;5575:53;5620:7;5611:6;5600:9;5596:22;5575:53;:::i;:::-;5565:63;;5520:118;5677:2;5703:53;5748:7;5739:6;5728:9;5724:22;5703:53;:::i;:::-;5693:63;;5648:118;5154:619;;;;;:::o;5779:86::-;5814:7;5854:4;5847:5;5843:16;5832:27;;5779:86;;;:::o;5871:112::-;5954:22;5970:5;5954:22;:::i;:::-;5949:3;5942:35;5871:112;;:::o;5989:214::-;6078:4;6116:2;6105:9;6101:18;6093:26;;6129:67;6193:1;6182:9;6178:17;6169:6;6129:67;:::i;:::-;5989:214;;;;:::o;6209:118::-;6296:24;6314:5;6296:24;:::i;:::-;6291:3;6284:37;6209:118;;:::o;6333:222::-;6426:4;6464:2;6453:9;6449:18;6441:26;;6477:71;6545:1;6534:9;6530:17;6521:6;6477:71;:::i;:::-;6333:222;;;;:::o;6561:116::-;6631:21;6646:5;6631:21;:::i;:::-;6624:5;6621:32;6611:60;;6667:1;6664;6657:12;6611:60;6561:116;:::o;6683:133::-;6726:5;6764:6;6751:20;6742:29;;6780:30;6804:5;6780:30;:::i;:::-;6683:133;;;;:::o;6822:468::-;6887:6;6895;6944:2;6932:9;6923:7;6919:23;6915:32;6912:119;;;6950:79;;:::i;:::-;6912:119;7070:1;7095:53;7140:7;7131:6;7120:9;7116:22;7095:53;:::i;:::-;7085:63;;7041:117;7197:2;7223:50;7265:7;7256:6;7245:9;7241:22;7223:50;:::i;:::-;7213:60;;7168:115;6822:468;;;;;:::o;7296:323::-;7352:6;7401:2;7389:9;7380:7;7376:23;7372:32;7369:119;;;7407:79;;:::i;:::-;7369:119;7527:1;7552:50;7594:7;7585:6;7574:9;7570:22;7552:50;:::i;:::-;7542:60;;7498:114;7296:323;;;;:::o;7625:765::-;7711:6;7719;7727;7735;7784:3;7772:9;7763:7;7759:23;7755:33;7752:120;;;7791:79;;:::i;:::-;7752:120;7911:1;7936:53;7981:7;7972:6;7961:9;7957:22;7936:53;:::i;:::-;7926:63;;7882:117;8038:2;8064:53;8109:7;8100:6;8089:9;8085:22;8064:53;:::i;:::-;8054:63;;8009:118;8166:2;8192:53;8237:7;8228:6;8217:9;8213:22;8192:53;:::i;:::-;8182:63;;8137:118;8294:2;8320:53;8365:7;8356:6;8345:9;8341:22;8320:53;:::i;:::-;8310:63;;8265:118;7625:765;;;;;;;:::o;8396:329::-;8455:6;8504:2;8492:9;8483:7;8479:23;8475:32;8472:119;;;8510:79;;:::i;:::-;8472:119;8630:1;8655:53;8700:7;8691:6;8680:9;8676:22;8655:53;:::i;:::-;8645:63;;8601:117;8396:329;;;;:::o;8731:474::-;8799:6;8807;8856:2;8844:9;8835:7;8831:23;8827:32;8824:119;;;8862:79;;:::i;:::-;8824:119;8982:1;9007:53;9052:7;9043:6;9032:9;9028:22;9007:53;:::i;:::-;8997:63;;8953:117;9109:2;9135:53;9180:7;9171:6;9160:9;9156:22;9135:53;:::i;:::-;9125:63;;9080:118;8731:474;;;;;:::o;9211:180::-;9259:77;9256:1;9249:88;9356:4;9353:1;9346:15;9380:4;9377:1;9370:15;9397:320;9441:6;9478:1;9472:4;9468:12;9458:22;;9525:1;9519:4;9515:12;9546:18;9536:81;;9602:4;9594:6;9590:17;9580:27;;9536:81;9664:2;9656:6;9653:14;9633:18;9630:38;9627:84;;;9683:18;;:::i;:::-;9627:84;9448:269;9397:320;;;:::o;9723:227::-;9863:34;9859:1;9851:6;9847:14;9840:58;9932:10;9927:2;9919:6;9915:15;9908:35;9723:227;:::o;9956:366::-;10098:3;10119:67;10183:2;10178:3;10119:67;:::i;:::-;10112:74;;10195:93;10284:3;10195:93;:::i;:::-;10313:2;10308:3;10304:12;10297:19;;9956:366;;;:::o;10328:419::-;10494:4;10532:2;10521:9;10517:18;10509:26;;10581:9;10575:4;10571:20;10567:1;10556:9;10552:17;10545:47;10609:131;10735:4;10609:131;:::i;:::-;10601:139;;10328:419;;;:::o;10753:180::-;10801:77;10798:1;10791:88;10898:4;10895:1;10888:15;10922:4;10919:1;10912:15;10939:305;10979:3;10998:20;11016:1;10998:20;:::i;:::-;10993:25;;11032:20;11050:1;11032:20;:::i;:::-;11027:25;;11186:1;11118:66;11114:74;11111:1;11108:81;11105:107;;;11192:18;;:::i;:::-;11105:107;11236:1;11233;11229:9;11222:16;;10939:305;;;;:::o;11250:182::-;11390:34;11386:1;11378:6;11374:14;11367:58;11250:182;:::o;11438:366::-;11580:3;11601:67;11665:2;11660:3;11601:67;:::i;:::-;11594:74;;11677:93;11766:3;11677:93;:::i;:::-;11795:2;11790:3;11786:12;11779:19;;11438:366;;;:::o;11810:419::-;11976:4;12014:2;12003:9;11999:18;11991:26;;12063:9;12057:4;12053:20;12049:1;12038:9;12034:17;12027:47;12091:131;12217:4;12091:131;:::i;:::-;12083:139;;11810:419;;;:::o;12235:244::-;12375:34;12371:1;12363:6;12359:14;12352:58;12444:27;12439:2;12431:6;12427:15;12420:52;12235:244;:::o;12485:366::-;12627:3;12648:67;12712:2;12707:3;12648:67;:::i;:::-;12641:74;;12724:93;12813:3;12724:93;:::i;:::-;12842:2;12837:3;12833:12;12826:19;;12485:366;;;:::o;12857:419::-;13023:4;13061:2;13050:9;13046:18;13038:26;;13110:9;13104:4;13100:20;13096:1;13085:9;13081:17;13074:47;13138:131;13264:4;13138:131;:::i;:::-;13130:139;;12857:419;;;:::o;13282:224::-;13422:34;13418:1;13410:6;13406:14;13399:58;13491:7;13486:2;13478:6;13474:15;13467:32;13282:224;:::o;13512:366::-;13654:3;13675:67;13739:2;13734:3;13675:67;:::i;:::-;13668:74;;13751:93;13840:3;13751:93;:::i;:::-;13869:2;13864:3;13860:12;13853:19;;13512:366;;;:::o;13884:419::-;14050:4;14088:2;14077:9;14073:18;14065:26;;14137:9;14131:4;14127:20;14123:1;14112:9;14108:17;14101:47;14165:131;14291:4;14165:131;:::i;:::-;14157:139;;13884:419;;;:::o;14309:165::-;14449:17;14445:1;14437:6;14433:14;14426:41;14309:165;:::o;14480:366::-;14622:3;14643:67;14707:2;14702:3;14643:67;:::i;:::-;14636:74;;14719:93;14808:3;14719:93;:::i;:::-;14837:2;14832:3;14828:12;14821:19;;14480:366;;;:::o;14852:419::-;15018:4;15056:2;15045:9;15041:18;15033:26;;15105:9;15099:4;15095:20;15091:1;15080:9;15076:17;15069:47;15133:131;15259:4;15133:131;:::i;:::-;15125:139;;14852:419;;;:::o;15277:348::-;15317:7;15340:20;15358:1;15340:20;:::i;:::-;15335:25;;15374:20;15392:1;15374:20;:::i;:::-;15369:25;;15562:1;15494:66;15490:74;15487:1;15484:81;15479:1;15472:9;15465:17;15461:105;15458:131;;;15569:18;;:::i;:::-;15458:131;15617:1;15614;15610:9;15599:20;;15277:348;;;;:::o;15631:180::-;15679:77;15676:1;15669:88;15776:4;15773:1;15766:15;15800:4;15797:1;15790:15;15817:185;15857:1;15874:20;15892:1;15874:20;:::i;:::-;15869:25;;15908:20;15926:1;15908:20;:::i;:::-;15903:25;;15947:1;15937:35;;15952:18;;:::i;:::-;15937:35;15994:1;15991;15987:9;15982:14;;15817:185;;;;:::o;16008:240::-;16148:34;16144:1;16136:6;16132:14;16125:58;16217:23;16212:2;16204:6;16200:15;16193:48;16008:240;:::o;16254:366::-;16396:3;16417:67;16481:2;16476:3;16417:67;:::i;:::-;16410:74;;16493:93;16582:3;16493:93;:::i;:::-;16611:2;16606:3;16602:12;16595:19;;16254:366;;;:::o;16626:419::-;16792:4;16830:2;16819:9;16815:18;16807:26;;16879:9;16873:4;16869:20;16865:1;16854:9;16850:17;16843:47;16907:131;17033:4;16907:131;:::i;:::-;16899:139;;16626:419;;;:::o;17051:239::-;17191:34;17187:1;17179:6;17175:14;17168:58;17260:22;17255:2;17247:6;17243:15;17236:47;17051:239;:::o;17296:366::-;17438:3;17459:67;17523:2;17518:3;17459:67;:::i;:::-;17452:74;;17535:93;17624:3;17535:93;:::i;:::-;17653:2;17648:3;17644:12;17637:19;;17296:366;;;:::o;17668:419::-;17834:4;17872:2;17861:9;17857:18;17849:26;;17921:9;17915:4;17911:20;17907:1;17896:9;17892:17;17885:47;17949:131;18075:4;17949:131;:::i;:::-;17941:139;;17668:419;;;:::o;18093:225::-;18233:34;18229:1;18221:6;18217:14;18210:58;18302:8;18297:2;18289:6;18285:15;18278:33;18093:225;:::o;18324:366::-;18466:3;18487:67;18551:2;18546:3;18487:67;:::i;:::-;18480:74;;18563:93;18652:3;18563:93;:::i;:::-;18681:2;18676:3;18672:12;18665:19;;18324:366;;;:::o;18696:419::-;18862:4;18900:2;18889:9;18885:18;18877:26;;18949:9;18943:4;18939:20;18935:1;18924:9;18920:17;18913:47;18977:131;19103:4;18977:131;:::i;:::-;18969:139;;18696:419;;;:::o;19121:223::-;19261:34;19257:1;19249:6;19245:14;19238:58;19330:6;19325:2;19317:6;19313:15;19306:31;19121:223;:::o;19350:366::-;19492:3;19513:67;19577:2;19572:3;19513:67;:::i;:::-;19506:74;;19589:93;19678:3;19589:93;:::i;:::-;19707:2;19702:3;19698:12;19691:19;;19350:366;;;:::o;19722:419::-;19888:4;19926:2;19915:9;19911:18;19903:26;;19975:9;19969:4;19965:20;19961:1;19950:9;19946:17;19939:47;20003:131;20129:4;20003:131;:::i;:::-;19995:139;;19722:419;;;:::o;20147:221::-;20287:34;20283:1;20275:6;20271:14;20264:58;20356:4;20351:2;20343:6;20339:15;20332:29;20147:221;:::o;20374:366::-;20516:3;20537:67;20601:2;20596:3;20537:67;:::i;:::-;20530:74;;20613:93;20702:3;20613:93;:::i;:::-;20731:2;20726:3;20722:12;20715:19;;20374:366;;;:::o;20746:419::-;20912:4;20950:2;20939:9;20935:18;20927:26;;20999:9;20993:4;20989:20;20985:1;20974:9;20970:17;20963:47;21027:131;21153:4;21027:131;:::i;:::-;21019:139;;20746:419;;;:::o;21171:224::-;21311:34;21307:1;21299:6;21295:14;21288:58;21380:7;21375:2;21367:6;21363:15;21356:32;21171:224;:::o;21401:366::-;21543:3;21564:67;21628:2;21623:3;21564:67;:::i;:::-;21557:74;;21640:93;21729:3;21640:93;:::i;:::-;21758:2;21753:3;21749:12;21742:19;;21401:366;;;:::o;21773:419::-;21939:4;21977:2;21966:9;21962:18;21954:26;;22026:9;22020:4;22016:20;22012:1;22001:9;21997:17;21990:47;22054:131;22180:4;22054:131;:::i;:::-;22046:139;;21773:419;;;:::o;22198:222::-;22338:34;22334:1;22326:6;22322:14;22315:58;22407:5;22402:2;22394:6;22390:15;22383:30;22198:222;:::o;22426:366::-;22568:3;22589:67;22653:2;22648:3;22589:67;:::i;:::-;22582:74;;22665:93;22754:3;22665:93;:::i;:::-;22783:2;22778:3;22774:12;22767:19;;22426:366;;;:::o;22798:419::-;22964:4;23002:2;22991:9;22987:18;22979:26;;23051:9;23045:4;23041:20;23037:1;23026:9;23022:17;23015:47;23079:131;23205:4;23079:131;:::i;:::-;23071:139;;22798:419;;;:::o;23223:172::-;23363:24;23359:1;23351:6;23347:14;23340:48;23223:172;:::o;23401:366::-;23543:3;23564:67;23628:2;23623:3;23564:67;:::i;:::-;23557:74;;23640:93;23729:3;23640:93;:::i;:::-;23758:2;23753:3;23749:12;23742:19;;23401:366;;;:::o;23773:419::-;23939:4;23977:2;23966:9;23962:18;23954:26;;24026:9;24020:4;24016:20;24012:1;24001:9;23997:17;23990:47;24054:131;24180:4;24054:131;:::i;:::-;24046:139;;23773:419;;;:::o;24198:240::-;24338:34;24334:1;24326:6;24322:14;24315:58;24407:23;24402:2;24394:6;24390:15;24383:48;24198:240;:::o;24444:366::-;24586:3;24607:67;24671:2;24666:3;24607:67;:::i;:::-;24600:74;;24683:93;24772:3;24683:93;:::i;:::-;24801:2;24796:3;24792:12;24785:19;;24444:366;;;:::o;24816:419::-;24982:4;25020:2;25009:9;25005:18;24997:26;;25069:9;25063:4;25059:20;25055:1;25044:9;25040:17;25033:47;25097:131;25223:4;25097:131;:::i;:::-;25089:139;;24816:419;;;:::o;25241:169::-;25381:21;25377:1;25369:6;25365:14;25358:45;25241:169;:::o;25416:366::-;25558:3;25579:67;25643:2;25638:3;25579:67;:::i;:::-;25572:74;;25655:93;25744:3;25655:93;:::i;:::-;25773:2;25768:3;25764:12;25757:19;;25416:366;;;:::o;25788:419::-;25954:4;25992:2;25981:9;25977:18;25969:26;;26041:9;26035:4;26031:20;26027:1;26016:9;26012:17;26005:47;26069:131;26195:4;26069:131;:::i;:::-;26061:139;;25788:419;;;:::o;26213:241::-;26353:34;26349:1;26341:6;26337:14;26330:58;26422:24;26417:2;26409:6;26405:15;26398:49;26213:241;:::o;26460:366::-;26602:3;26623:67;26687:2;26682:3;26623:67;:::i;:::-;26616:74;;26699:93;26788:3;26699:93;:::i;:::-;26817:2;26812:3;26808:12;26801:19;;26460:366;;;:::o;26832:419::-;26998:4;27036:2;27025:9;27021:18;27013:26;;27085:9;27079:4;27075:20;27071:1;27060:9;27056:17;27049:47;27113:131;27239:4;27113:131;:::i;:::-;27105:139;;26832:419;;;:::o;27257:191::-;27297:4;27317:20;27335:1;27317:20;:::i;:::-;27312:25;;27351:20;27369:1;27351:20;:::i;:::-;27346:25;;27390:1;27387;27384:8;27381:34;;;27395:18;;:::i;:::-;27381:34;27440:1;27437;27433:9;27425:17;;27257:191;;;;:::o;27454:225::-;27594:34;27590:1;27582:6;27578:14;27571:58;27663:8;27658:2;27650:6;27646:15;27639:33;27454:225;:::o;27685:366::-;27827:3;27848:67;27912:2;27907:3;27848:67;:::i;:::-;27841:74;;27924:93;28013:3;27924:93;:::i;:::-;28042:2;28037:3;28033:12;28026:19;;27685:366;;;:::o;28057:419::-;28223:4;28261:2;28250:9;28246:18;28238:26;;28310:9;28304:4;28300:20;28296:1;28285:9;28281:17;28274:47;28338:131;28464:4;28338:131;:::i;:::-;28330:139;;28057:419;;;:::o;28482:442::-;28631:4;28669:2;28658:9;28654:18;28646:26;;28682:71;28750:1;28739:9;28735:17;28726:6;28682:71;:::i;:::-;28763:72;28831:2;28820:9;28816:18;28807:6;28763:72;:::i;:::-;28845;28913:2;28902:9;28898:18;28889:6;28845:72;:::i;:::-;28482:442;;;;;;:::o;28930:147::-;29031:11;29068:3;29053:18;;28930:147;;;;:::o;29083:114::-;;:::o;29203:398::-;29362:3;29383:83;29464:1;29459:3;29383:83;:::i;:::-;29376:90;;29475:93;29564:3;29475:93;:::i;:::-;29593:1;29588:3;29584:11;29577:18;;29203:398;;;:::o;29607:379::-;29791:3;29813:147;29956:3;29813:147;:::i;:::-;29806:154;;29977:3;29970:10;;29607:379;;;:::o;29992:180::-;30040:77;30037:1;30030:88;30137:4;30134:1;30127:15;30161:4;30158:1;30151:15;30178:180;30226:77;30223:1;30216:88;30323:4;30320:1;30313:15;30347:4;30344:1;30337:15;30364:143;30421:5;30452:6;30446:13;30437:22;;30468:33;30495:5;30468:33;:::i;:::-;30364:143;;;;:::o;30513:351::-;30583:6;30632:2;30620:9;30611:7;30607:23;30603:32;30600:119;;;30638:79;;:::i;:::-;30600:119;30758:1;30783:64;30839:7;30830:6;30819:9;30815:22;30783:64;:::i;:::-;30773:74;;30729:128;30513:351;;;;:::o;30870:85::-;30915:7;30944:5;30933:16;;30870:85;;;:::o;30961:158::-;31019:9;31052:61;31070:42;31079:32;31105:5;31079:32;:::i;:::-;31070:42;:::i;:::-;31052:61;:::i;:::-;31039:74;;30961:158;;;:::o;31125:147::-;31220:45;31259:5;31220:45;:::i;:::-;31215:3;31208:58;31125:147;;:::o;31278:114::-;31345:6;31379:5;31373:12;31363:22;;31278:114;;;:::o;31398:184::-;31497:11;31531:6;31526:3;31519:19;31571:4;31566:3;31562:14;31547:29;;31398:184;;;;:::o;31588:132::-;31655:4;31678:3;31670:11;;31708:4;31703:3;31699:14;31691:22;;31588:132;;;:::o;31726:108::-;31803:24;31821:5;31803:24;:::i;:::-;31798:3;31791:37;31726:108;;:::o;31840:179::-;31909:10;31930:46;31972:3;31964:6;31930:46;:::i;:::-;32008:4;32003:3;31999:14;31985:28;;31840:179;;;;:::o;32025:113::-;32095:4;32127;32122:3;32118:14;32110:22;;32025:113;;;:::o;32174:732::-;32293:3;32322:54;32370:5;32322:54;:::i;:::-;32392:86;32471:6;32466:3;32392:86;:::i;:::-;32385:93;;32502:56;32552:5;32502:56;:::i;:::-;32581:7;32612:1;32597:284;32622:6;32619:1;32616:13;32597:284;;;32698:6;32692:13;32725:63;32784:3;32769:13;32725:63;:::i;:::-;32718:70;;32811:60;32864:6;32811:60;:::i;:::-;32801:70;;32657:224;32644:1;32641;32637:9;32632:14;;32597:284;;;32601:14;32897:3;32890:10;;32298:608;;;32174:732;;;;:::o;32912:831::-;33175:4;33213:3;33202:9;33198:19;33190:27;;33227:71;33295:1;33284:9;33280:17;33271:6;33227:71;:::i;:::-;33308:80;33384:2;33373:9;33369:18;33360:6;33308:80;:::i;:::-;33435:9;33429:4;33425:20;33420:2;33409:9;33405:18;33398:48;33463:108;33566:4;33557:6;33463:108;:::i;:::-;33455:116;;33581:72;33649:2;33638:9;33634:18;33625:6;33581:72;:::i;:::-;33663:73;33731:3;33720:9;33716:19;33707:6;33663:73;:::i;:::-;32912:831;;;;;;;;:::o;33749:807::-;33998:4;34036:3;34025:9;34021:19;34013:27;;34050:71;34118:1;34107:9;34103:17;34094:6;34050:71;:::i;:::-;34131:72;34199:2;34188:9;34184:18;34175:6;34131:72;:::i;:::-;34213:80;34289:2;34278:9;34274:18;34265:6;34213:80;:::i;:::-;34303;34379:2;34368:9;34364:18;34355:6;34303:80;:::i;:::-;34393:73;34461:3;34450:9;34446:19;34437:6;34393:73;:::i;:::-;34476;34544:3;34533:9;34529:19;34520:6;34476:73;:::i;:::-;33749:807;;;;;;;;;:::o;34562:143::-;34619:5;34650:6;34644:13;34635:22;;34666:33;34693:5;34666:33;:::i;:::-;34562:143;;;;:::o;34711:663::-;34799:6;34807;34815;34864:2;34852:9;34843:7;34839:23;34835:32;34832:119;;;34870:79;;:::i;:::-;34832:119;34990:1;35015:64;35071:7;35062:6;35051:9;35047:22;35015:64;:::i;:::-;35005:74;;34961:128;35128:2;35154:64;35210:7;35201:6;35190:9;35186:22;35154:64;:::i;:::-;35144:74;;35099:129;35267:2;35293:64;35349:7;35340:6;35329:9;35325:22;35293:64;:::i;:::-;35283:74;;35238:129;34711:663;;;;;:::o

Swarm Source

ipfs://0c40f78f36ce4ce9422f6a0bbf547b52a5f47177359dab48a115d07a507b652a

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.