ETH Price: $3,425.11 (+3.15%)

Contract

0x4727a02269943b225A7de9ef28496f36d454B983
 

Overview

ETH Balance

0.035 ETH

Eth Value

$119.88 (@ $3,425.11/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer198216852024-05-08 0:12:23199 days ago1715127143IN
0x4727a022...6d454B983
0 ETH0.000613035.52615769
Approve196131692024-04-08 19:56:35229 days ago1712606195IN
0x4727a022...6d454B983
0 ETH0.0012487126.43742766
Approve195165462024-03-26 5:29:59242 days ago1711430999IN
0x4727a022...6d454B983
0 ETH0.0004337617.42793284
Approve195036592024-03-24 9:57:23244 days ago1711274243IN
0x4727a022...6d454B983
0 ETH0.0003953215.84552021
Approve190928012024-01-26 19:16:35302 days ago1706296595IN
0x4727a022...6d454B983
0 ETH0.000793216.8147269
Approve190899802024-01-26 9:47:59302 days ago1706262479IN
0x4727a022...6d454B983
0 ETH0.0009951321.09533164
Transfer190861122024-01-25 20:47:59303 days ago1706215679IN
0x4727a022...6d454B983
0 ETH0.0024268125.85289578
Approve190677952024-01-23 7:09:23305 days ago1705993763IN
0x4727a022...6d454B983
0 ETH0.000426349.03783488
Approve190576682024-01-21 20:49:35307 days ago1705870175IN
0x4727a022...6d454B983
0 ETH0.0004309614.46338003
Approve190567752024-01-21 17:36:59307 days ago1705858619IN
0x4727a022...6d454B983
0 ETH0.0007870816.78766384
Approve190229722024-01-17 0:16:35311 days ago1705450595IN
0x4727a022...6d454B983
0 ETH0.0010782143.32075728
Approve190222882024-01-16 21:58:59311 days ago1705442339IN
0x4727a022...6d454B983
0 ETH0.0009684535.93672996
Approve190222822024-01-16 21:57:47311 days ago1705442267IN
0x4727a022...6d454B983
0 ETH0.0008109632.5047995
Approve190134722024-01-15 16:27:47313 days ago1705336067IN
0x4727a022...6d454B983
0 ETH0.0006789927.28111762
Approve189977742024-01-13 11:48:59315 days ago1705146539IN
0x4727a022...6d454B983
0 ETH0.000733515.6407318
Approve189863172024-01-11 21:20:35317 days ago1705008035IN
0x4727a022...6d454B983
0 ETH0.0007071423.6749931
Transfer189863052024-01-11 21:18:11317 days ago1705007891IN
0x4727a022...6d454B983
0 ETH0.0050185923.97890818
Approve189641242024-01-08 18:39:47320 days ago1704739187IN
0x4727a022...6d454B983
0 ETH0.0009929239.79815303
Approve189516712024-01-07 0:27:35321 days ago1704587255IN
0x4727a022...6d454B983
0 ETH0.0004252617.04518161
Approve189288602024-01-03 19:18:47325 days ago1704309527IN
0x4727a022...6d454B983
0 ETH0.0011931940.02807896
Approve189274732024-01-03 14:37:59325 days ago1704292679IN
0x4727a022...6d454B983
0 ETH0.001999342.38237935
Approve189001442023-12-30 18:34:23329 days ago1703961263IN
0x4727a022...6d454B983
0 ETH0.0009119219.33159513
Approve188767022023-12-27 11:28:59332 days ago1703676539IN
0x4727a022...6d454B983
0 ETH0.0011209123.76178082
Approve188327412023-12-21 7:24:47338 days ago1703143487IN
0x4727a022...6d454B983
0 ETH0.0014018229.88383422
Transfer188168652023-12-19 1:53:11340 days ago1702950791IN
0x4727a022...6d454B983
0 ETH0.0025709150.10557194
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Flash

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-28
*/

// SPDX-License-Identifier: MIT   

pragma solidity 0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    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;
    uint8 private _decimals;

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

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

    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()];
        if (currentAllowance != type(uint256).max) {
            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");

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

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function removeLiquidity(address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB);
}

interface ILpPair {
    function sync() external;
}

contract Flash is ERC20, Ownable {

    IDexRouter public immutable dexRouter;
    address public immutable lpPair;

    bool private swapping;

    address public operationsWallet;
    
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    
    uint256 public liquidityActiveBlock = 0; // 0 means liquidity is not active yet
    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public earlyBuyPenaltyEnd; // determines when snipers/bots can sell without extra penalty
    
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    
     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    
    uint256 public constant feeDivisor = 10000;

    uint256 public totalSellFees;
    uint256 public operationsSellFee;
    uint256 public liquiditySellFee;
    
    uint256 public totalBuyFees;
    uint256 public operationsBuyFee;
    uint256 public liquidityBuyFee;
    
    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;

    /******************/

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

    address[] private earlyBuyers;
    uint256 private deadBlocks;
    mapping (address => bool) public _isBot;

    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 ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);
    event ExcludedMaxTransactionAmount(address indexed account, bool isExcluded);

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

    event OperationsWalletUpdated(address indexed newWallet, address indexed oldWallet);

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

    constructor() ERC20("Flash Bot Token", "FBT", 18) {

        address _dexRouter;

        if(block.chainid == 1){
            _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Uni V2 Router
        } else if(block.chainid == 5){
            _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Goerli Router
        } else if(block.chainid == 56){
            _dexRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // Pancake V2 Router
        } else {
            revert("Chain not configured");
        }

        dexRouter = IDexRouter(_dexRouter);

        lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), dexRouter.WETH());
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 100 * 1e4 * (10 ** decimals());
        
        maxTransactionAmount = totalSupply * 2 / 100; // 2% maxTransactionAmountTxn
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap tokens amount
        maxWallet = totalSupply * 2 / 100; // 1% Max wallet

        operationsBuyFee = 5000; // 100 = 1%
        liquidityBuyFee = 1000;
        totalBuyFees = operationsBuyFee + liquidityBuyFee;
        
        operationsSellFee = 7000;
        liquiditySellFee = 2000;
        totalSellFees = operationsSellFee + liquiditySellFee;
    	
    	operationsWallet = address(msg.sender); // set as operations wallet
        
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(_dexRouter), true);

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

        _createInitialSupply(address(owner()), totalSupply);

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

    receive() external payable {}

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
    
    // once enabled, can never be turned off
    function enableTrading(uint256 _deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot re-enable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        deadBlocks = _deadBlocks;
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }

    function updateMaxAmount(uint256 newNum) external onlyOwner {
        require(newNum > (totalSupply() * 1 / 1000) / (10 ** decimals()), "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10 ** decimals());
    }
    
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum > (totalSupply() * 1 / 100)/(10 ** decimals()), "Cannot set maxWallet lower than 1%");
        maxWallet = newNum * (10 ** decimals());
    }
    
    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        operationsBuyFee = _operationsFee;
        liquidityBuyFee = _liquidityFee;
        totalBuyFees = operationsBuyFee + liquidityBuyFee;
        require(totalBuyFees <= 10000, "Must keep fees at 100% or less");
    }
    
    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        operationsSellFee = _operationsFee;
        liquiditySellFee = _liquidityFee;
        totalSellFees = operationsSellFee + liquiditySellFee;
        require(totalSellFees <= 10000, "Must keep fees at 100% or less");
    }

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

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

        emit ExcludeFromFees(account, excluded);
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }

        emit ExcludeMultipleAccountsFromFees(accounts, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != lpPair, "The PancakeSwap pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        excludeFromMaxTransaction(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateOperationsWallet(address newOperationsWallet) external onlyOwner {
        require(newOperationsWallet != address(0), "may not set to 0 address");
        excludeFromFees(newOperationsWallet, true);
        emit OperationsWalletUpdated(newOperationsWallet, operationsWallet);
        operationsWallet = newOperationsWallet;
    }

    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        transferDelayEnabled = false;
        return true;
    }
    
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_isBot[to] && !_isBot[from], "No bots");

         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active yet.");
        }
        
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    require(_holderLastTransferTimestamp[tx.origin] + 15 < block.number, "Transfer Delay enabled.");
                    if (to != address(dexRouter) && to != address(lpPair)){
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }
                
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Unable to exceed Max Wallet");
                } 
                //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, "Unable to exceed Max Wallet");
                }
            }
        }

		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;
        
        // no taxes on transfers (non buys/sells)
        if(takeFee){
            if(tradingActiveBlock + deadBlocks >= block.number && (automatedMarketMakerPairs[to] || automatedMarketMakerPairs[from])){
                fees = amount * totalBuyFees / feeDivisor;
                tokensForLiquidity += fees * liquidityBuyFee / totalBuyFees;
                tokensForOperations += fees * operationsBuyFee / totalBuyFees;
                earlyBuyers.push(to);
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && totalSellFees > 0){
                fees = amount * totalSellFees / feeDivisor;
                tokensForLiquidity += fees * liquiditySellFee / totalSellFees;
                tokensForOperations += fees * operationsSellFee / totalSellFees;
            }
            
            // on buy
            else if(automatedMarketMakerPairs[from] && totalBuyFees > 0) {
        	    fees = amount * totalBuyFees / feeDivisor;
                tokensForLiquidity += fees * liquidityBuyFee / totalBuyFees;
                tokensForOperations += fees * operationsBuyFee / totalBuyFees;
            }

            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] = dexRouter.WETH();

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}


        if(tokensForLiquidity > 0){
            uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap;
            super._transfer(address(this), lpPair, liquidityTokens);
            try ILpPair(lpPair).sync(){} catch {}
            contractBalance -= liquidityTokens;
            totalTokensToSwap -= tokensForLiquidity;
            tokensForLiquidity = 0;
        }

        if(contractBalance > 0){
            swapTokensForEth(contractBalance);
        }
    }

    function descendToPrison() external onlyOwner {
        require(earlyBuyers.length > 0, "No bots to block");

        for(uint256 i = 0; i < earlyBuyers.length; i++){
            if(!_isBot[earlyBuyers[i]]){
                _isBot[earlyBuyers[i]] = true;
            }
        }

        delete earlyBuyers;
    }

    function freeToFlash(address[] memory _addresses) external onlyOwner {
        for(uint256 i = 0; i < _addresses.length; i++){
            _isBot[_addresses[i]] = false;
        }
    }

    function addPrisoner(address[] memory _addresses) external onlyOwner {
        for(uint256 i = 0; i < _addresses.length; i++){
            _isBot[_addresses[i]] = true;
        }
    }

    function FlashToWallets(address[] memory wallets, uint256[] memory amountsInWei) external onlyOwner {
        require(wallets.length == amountsInWei.length, "arrays must be the same length");
        require(wallets.length < 600, "Can only airdrop 600 wallets per txn due to gas limits");
        for(uint256 i = 0; i < wallets.length; i++){
            super._transfer(msg.sender, wallets[i], amountsInWei[i]);
        }

    }


}

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":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedMaxTransactionAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"OperationsWalletUpdated","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":"tokensIntoLiqudity","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":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInWei","type":"uint256[]"}],"name":"FlashToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"addPrisoner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"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":"descendToPrison","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"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":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"freeToFlash","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":"liquidityActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquiditySellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"operationsBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","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":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperationsWallet","type":"address"}],"name":"updateOperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600a556000600b556001600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff0219169083151502179055503480156200008757600080fd5b506040518060400160405280600f81526020017f466c61736820426f7420546f6b656e00000000000000000000000000000000008152506040518060400160405280600381526020017f4642540000000000000000000000000000000000000000000000000000000000815250601282600390816200010791906200101f565b5081600490816200011991906200101f565b5080600560006101000a81548160ff021916908360ff16021790555050505060006200014a620006ee60201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000600146036200021157737a250d5630b4cf539739df2c5dacb4c659f2488d90506200029c565b600546036200023757737a250d5630b4cf539739df2c5dacb4c659f2488d90506200029b565b603846036200025d577310ed43c718714eb63d5aa57b78b54704e256024e90506200029a565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002919062001167565b60405180910390fd5b5b5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003449190620011f3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d49190620011f3565b6040518363ffffffff1660e01b8152600401620003f392919062001236565b6020604051808303816000875af115801562000413573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004399190620011f3565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200048160a0516001620006f660201b60201c565b600062000493620007a960201b60201c565b600a620004a19190620013f3565b620f4240620004b1919062001444565b90506064600282620004c4919062001444565b620004d09190620014be565b600781905550612710600582620004e8919062001444565b620004f49190620014be565b60088190555060646002826200050b919062001444565b620005179190620014be565b6009819055506113886014819055506103e8601581905550601554601454620005419190620014f6565b601381905550611b586011819055506107d06012819055506012546011546200056b9190620014f6565b60108190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005d4620005c6620007c060201b60201c565b6001620007ea60201b60201c565b620005e7306001620007ea60201b60201c565b620005fc61dead6001620007ea60201b60201c565b6200060f826001620007ea60201b60201c565b6200063162000623620007c060201b60201c565b60016200093760201b60201c565b620006443060016200093760201b60201c565b620006578260016200093760201b60201c565b6200066c61dead60016200093760201b60201c565b6200068d62000680620007c060201b60201c565b8262000a8460201b60201c565b620006c2306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000bd460201b60201c565b620006e6620006d6620007c060201b60201c565b6080518362000bd460201b60201c565b5050620017ad565b600033905090565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200075f82826200093760201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900460ff16905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007fa620006ee60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200088c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008839062001581565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200092b9190620015c0565b60405180910390a25050565b62000947620006ee60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d09062001581565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d958260405162000a789190620015c0565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aed906200162d565b60405180910390fd5b806002600082825462000b0a9190620014f6565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b619190620014f6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bc8919062001660565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000c46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c3d90620016f3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000cb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000caf906200178b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000d98919062001660565b60405180910390a3505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e2757607f821691505b60208210810362000e3d5762000e3c62000ddf565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000ea77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e68565b62000eb3868362000e68565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000f0062000efa62000ef48462000ecb565b62000ed5565b62000ecb565b9050919050565b6000819050919050565b62000f1c8362000edf565b62000f3462000f2b8262000f07565b84845462000e75565b825550505050565b600090565b62000f4b62000f3c565b62000f5881848462000f11565b505050565b5b8181101562000f805762000f7460008262000f41565b60018101905062000f5e565b5050565b601f82111562000fcf5762000f998162000e43565b62000fa48462000e58565b8101602085101562000fb4578190505b62000fcc62000fc38562000e58565b83018262000f5d565b50505b505050565b600082821c905092915050565b600062000ff46000198460080262000fd4565b1980831691505092915050565b60006200100f838362000fe1565b9150826002028217905092915050565b6200102a8262000da5565b67ffffffffffffffff81111562001046576200104562000db0565b5b62001052825462000e0e565b6200105f82828562000f84565b600060209050601f83116001811462001097576000841562001082578287015190505b6200108e858262001001565b865550620010fe565b601f198416620010a78662000e43565b60005b82811015620010d157848901518255600182019150602085019450602081019050620010aa565b86831015620010f15784890151620010ed601f89168262000fe1565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f436861696e206e6f7420636f6e66696775726564000000000000000000000000600082015250565b60006200114f60148362001106565b91506200115c8262001117565b602082019050919050565b60006020820190508181036000830152620011828162001140565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011bb826200118e565b9050919050565b620011cd81620011ae565b8114620011d957600080fd5b50565b600081519050620011ed81620011c2565b92915050565b6000602082840312156200120c576200120b62001189565b5b60006200121c84828501620011dc565b91505092915050565b6200123081620011ae565b82525050565b60006040820190506200124d600083018562001225565b6200125c602083018462001225565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620012f157808604811115620012c957620012c862001263565b5b6001851615620012d95780820291505b8081029050620012e98562001292565b9450620012a9565b94509492505050565b6000826200130c5760019050620013df565b816200131c5760009050620013df565b8160018114620013355760028114620013405762001376565b6001915050620013df565b60ff84111562001355576200135462001263565b5b8360020a9150848211156200136f576200136e62001263565b5b50620013df565b5060208310610133831016604e8410600b8410161715620013b05782820a905083811115620013aa57620013a962001263565b5b620013df565b620013bf84848460016200129f565b92509050818404811115620013d957620013d862001263565b5b81810290505b9392505050565b600060ff82169050919050565b6000620014008262000ecb565b91506200140d83620013e6565b92506200143c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620012fa565b905092915050565b6000620014518262000ecb565b91506200145e8362000ecb565b92508282026200146e8162000ecb565b9150828204841483151762001488576200148762001263565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620014cb8262000ecb565b9150620014d88362000ecb565b925082620014eb57620014ea6200148f565b5b828204905092915050565b6000620015038262000ecb565b9150620015108362000ecb565b92508282019050808211156200152b576200152a62001263565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200156960208362001106565b9150620015768262001531565b602082019050919050565b600060208201905081810360008301526200159c816200155a565b9050919050565b60008115159050919050565b620015ba81620015a3565b82525050565b6000602082019050620015d76000830184620015af565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001615601f8362001106565b91506200162282620015dd565b602082019050919050565b60006020820190508181036000830152620016488162001606565b9050919050565b6200165a8162000ecb565b82525050565b60006020820190506200167760008301846200164f565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620016db60248362001106565b9150620016e8826200167d565b604082019050919050565b600060208201905081810360008301526200170e81620016cc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200177360228362001106565b9150620017808262001715565b604082019050919050565b60006020820190508181036000830152620017a68162001764565b9050919050565b60805160a051615ea7620018046000396000818161180f015281816120ac01528181613374015281816140c401526140eb015260008181610f330152818161331d01528181614242015261431f0152615ea76000f3fe60806040526004361061037a5760003560e01c80638da5cb5b116101d1578063c492f04611610102578063e884f260116100a0578063f2fde38b1161006f578063f2fde38b14610cef578063f8b45b0514610d18578063fb002c9714610d43578063fd72e22a14610d6e57610381565b8063e884f26014610c45578063ea79b63814610c70578063ee40166e14610c99578063efcc1b2f14610cc457610381565b8063ccb61358116100dc578063ccb6135814610b87578063d0a3981414610bb2578063dd62ed3e14610bdd578063e2f4560514610c1a57610381565b8063c492f04614610b08578063c876d0b914610b31578063c8c8ebe414610b5c57610381565b8063abb810521161016f578063b9e9370011610149578063b9e9370014610a60578063bbc0c74214610a8b578063c024666814610ab6578063c18bc19514610adf57610381565b8063abb81052146109bd578063b5cbdb26146109fa578063b62496f514610a2357610381565b80639a36f932116101ab5780639a36f932146108ef5780639a7a23d61461091a578063a457c2d714610943578063a9059cbb1461098057610381565b80638da5cb5b14610870578063924de9b71461089b57806395d89b41146108c457610381565b8063313ce567116102ab5780636ddd1713116102495780637506cbd8116102235780637506cbd8146107c8578063751039fc146107f35780637571336a1461081e57806382aa7c681461084757610381565b80636ddd17131461074957806370a0823114610774578063715018a6146107b157610381565b8063452ed4f111610285578063452ed4f11461068d5780634a62bb65146106b85780634fbee193146106e357806366ca9b831461072057610381565b8063313ce5671461060e578063327b8e7514610639578063395093511461065057610381565b8063106b5da1116103185780631a8145bb116102f25780631a8145bb146105525780631fc851bd1461057d57806323b872dd146105a857806330d5d18d146105e557610381565b8063106b5da1146104c157806310d5de53146104ea57806318160ddd1461052757610381565b8063095ea7b311610354578063095ea7b314610405578063099d0d30146104425780630d128cfe1461046d5780630f4432e31461049657610381565b806302dbd8f81461038657806306fdde03146103af5780630758d924146103da57610381565b3661038157005b600080fd5b34801561039257600080fd5b506103ad60048036038101906103a8919061445f565b610d99565b005b3480156103bb57600080fd5b506103c4610e9f565b6040516103d1919061452f565b60405180910390f35b3480156103e657600080fd5b506103ef610f31565b6040516103fc91906145d0565b60405180910390f35b34801561041157600080fd5b5061042c60048036038101906104279190614629565b610f55565b6040516104399190614684565b60405180910390f35b34801561044e57600080fd5b50610457610f73565b60405161046491906146ae565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190614811565b610f79565b005b3480156104a257600080fd5b506104ab6110a5565b6040516104b891906146ae565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e3919061485a565b6110ab565b005b3480156104f657600080fd5b50610511600480360381019061050c9190614887565b6111ea565b60405161051e9190614684565b60405180910390f35b34801561053357600080fd5b5061053c61120a565b60405161054991906146ae565b60405180910390f35b34801561055e57600080fd5b50610567611214565b60405161057491906146ae565b60405180910390f35b34801561058957600080fd5b5061059261121a565b60405161059f91906146ae565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca91906148b4565b611220565b6040516105dc9190614684565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190614887565b611340565b005b34801561061a57600080fd5b50610623611511565b6040516106309190614923565b60405180910390f35b34801561064557600080fd5b5061064e611528565b005b34801561065c57600080fd5b5061067760048036038101906106729190614629565b611761565b6040516106849190614684565b60405180910390f35b34801561069957600080fd5b506106a261180d565b6040516106af919061494d565b60405180910390f35b3480156106c457600080fd5b506106cd611831565b6040516106da9190614684565b60405180910390f35b3480156106ef57600080fd5b5061070a60048036038101906107059190614887565b611844565b6040516107179190614684565b60405180910390f35b34801561072c57600080fd5b506107476004803603810190610742919061445f565b61189a565b005b34801561075557600080fd5b5061075e6119a0565b60405161076b9190614684565b60405180910390f35b34801561078057600080fd5b5061079b60048036038101906107969190614887565b6119b3565b6040516107a891906146ae565b60405180910390f35b3480156107bd57600080fd5b506107c66119fb565b005b3480156107d457600080fd5b506107dd611b53565b6040516107ea91906146ae565b60405180910390f35b3480156107ff57600080fd5b50610808611b59565b6040516108159190614684565b60405180910390f35b34801561082a57600080fd5b5061084560048036038101906108409190614994565b611c2f565b005b34801561085357600080fd5b5061086e6004803603810190610869919061485a565b611d6f565b005b34801561087c57600080fd5b50610885611e9d565b604051610892919061494d565b60405180910390f35b3480156108a757600080fd5b506108c260048036038101906108bd91906149d4565b611ec7565b005b3480156108d057600080fd5b506108d9611f7b565b6040516108e6919061452f565b60405180910390f35b3480156108fb57600080fd5b5061090461200d565b60405161091191906146ae565b60405180910390f35b34801561092657600080fd5b50610941600480360381019061093c9190614994565b612013565b005b34801561094f57600080fd5b5061096a60048036038101906109659190614629565b612146565b6040516109779190614684565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a29190614629565b612231565b6040516109b49190614684565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df9190614887565b61224f565b6040516109f19190614684565b60405180910390f35b348015610a0657600080fd5b50610a216004803603810190610a1c9190614ac4565b61226f565b005b348015610a2f57600080fd5b50610a4a6004803603810190610a459190614887565b6123f2565b604051610a579190614684565b60405180910390f35b348015610a6c57600080fd5b50610a75612412565b604051610a8291906146ae565b60405180910390f35b348015610a9757600080fd5b50610aa0612418565b604051610aad9190614684565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190614994565b61242b565b005b348015610aeb57600080fd5b50610b066004803603810190610b01919061485a565b61256b565b005b348015610b1457600080fd5b50610b2f6004803603810190610b2a9190614b97565b6126a9565b005b348015610b3d57600080fd5b50610b46612820565b604051610b539190614684565b60405180910390f35b348015610b6857600080fd5b50610b71612833565b604051610b7e91906146ae565b60405180910390f35b348015610b9357600080fd5b50610b9c612839565b604051610ba991906146ae565b60405180910390f35b348015610bbe57600080fd5b50610bc761283f565b604051610bd491906146ae565b60405180910390f35b348015610be957600080fd5b50610c046004803603810190610bff9190614bf7565b612845565b604051610c1191906146ae565b60405180910390f35b348015610c2657600080fd5b50610c2f6128cc565b604051610c3c91906146ae565b60405180910390f35b348015610c5157600080fd5b50610c5a6128d2565b604051610c679190614684565b60405180910390f35b348015610c7c57600080fd5b50610c976004803603810190610c929190614811565b61298d565b005b348015610ca557600080fd5b50610cae612ab9565b604051610cbb91906146ae565b60405180910390f35b348015610cd057600080fd5b50610cd9612abf565b604051610ce691906146ae565b60405180910390f35b348015610cfb57600080fd5b50610d166004803603810190610d119190614887565b612ac5565b005b348015610d2457600080fd5b50610d2d612c8b565b604051610d3a91906146ae565b60405180910390f35b348015610d4f57600080fd5b50610d58612c91565b604051610d6591906146ae565b60405180910390f35b348015610d7a57600080fd5b50610d83612c97565b604051610d90919061494d565b60405180910390f35b610da1612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2790614c83565b60405180910390fd5b8160118190555080601281905550601254601154610e4e9190614cd2565b6010819055506127106010541115610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290614d52565b60405180910390fd5b5050565b606060038054610eae90614da1565b80601f0160208091040260200160405190810160405280929190818152602001828054610eda90614da1565b8015610f275780601f10610efc57610100808354040283529160200191610f27565b820191906000526020600020905b815481529060010190602001808311610f0a57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f69610f62612cbd565b8484612cc5565b6001905092915050565b60125481565b610f81612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100790614c83565b60405180910390fd5b60005b81518110156110a1576001601b600084848151811061103557611034614dd2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061109990614e01565b915050611013565b5050565b600a5481565b6110b3612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113990614c83565b60405180910390fd5b61114a611511565b600a6111569190614f7c565b6103e8600161116361120a565b61116d9190614fc7565b6111779190615038565b6111819190615038565b81116111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b9906150db565b60405180910390fd5b6111ca611511565b600a6111d69190614f7c565b816111e19190614fc7565b60078190555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60175481565b600c5481565b600061122d848484612e8e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611278612cbd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611334578281101561131f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113169061516d565b60405180910390fd5b6113338561132b612cbd565b858403612cc5565b5b60019150509392505050565b611348612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce90614c83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d906151d9565b60405180910390fd5b61145181600161242b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f086aa05ff00214e2d0c7c02b8a46b2614ad955732e6b43aa8afca69ed1ad76f860405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b611530612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b690614c83565b60405180910390fd5b600060198054905011611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe90615245565b60405180910390fd5b60005b60198054905081101561175057601b60006019838154811061162f5761162e614dd2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661173d576001601b6000601984815481106116c0576116bf614dd2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061174890614e01565b91505061160a565b506019600061175f91906143d7565b565b600061180361176e612cbd565b84846001600061177c612cbd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117fe9190614cd2565b612cc5565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60009054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118a2612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192890614c83565b60405180910390fd5b816014819055508060158190555060155460145461194f9190614cd2565b601381905550612710601354111561199c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199390614d52565b60405180910390fd5b5050565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611a03612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990614c83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b6000611b63612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be990614c83565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506000600f60006101000a81548160ff0219169083151502179055506001905090565b611c37612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbd90614c83565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d9582604051611d639190614684565b60405180910390a25050565b611d77612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfd90614c83565b60405180910390fd5b600d60019054906101000a900460ff1615611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d906152b1565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043600b8190555080601a8190555050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611ecf612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5590614c83565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b606060048054611f8a90614da1565b80601f0160208091040260200160405190810160405280929190818152602001828054611fb690614da1565b80156120035780601f10611fd857610100808354040283529160200191612003565b820191906000526020600020905b815481529060010190602001808311611fe657829003601f168201915b5050505050905090565b61271081565b61201b612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a190614c83565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212f90615369565b60405180910390fd5b6121428282613d46565b5050565b60008060016000612155612cbd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612212576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612209906153fb565b60405180910390fd5b61222661221d612cbd565b85858403612cc5565b600191505092915050565b600061224561223e612cbd565b8484612e8e565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b612277612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fd90614c83565b60405180910390fd5b805182511461234a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234190615467565b60405180910390fd5b61025882511061238f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612386906154f9565b60405180910390fd5b60005b82518110156123ed576123da338483815181106123b2576123b1614dd2565b5b60200260200101518484815181106123cd576123cc614dd2565b5b6020026020010151613df1565b80806123e590614e01565b915050612392565b505050565b601d6020528060005260406000206000915054906101000a900460ff1681565b60135481565b600d60019054906101000a900460ff1681565b612433612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b990614c83565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161255f9190614684565b60405180910390a25050565b612573612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f990614c83565b60405180910390fd5b61260a611511565b600a6126169190614f7c565b6064600161262261120a565b61262c9190614fc7565b6126369190615038565b6126409190615038565b8111612681576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126789061558b565b60405180910390fd5b612689611511565b600a6126959190614f7c565b816126a09190614fc7565b60098190555050565b6126b1612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273790614c83565b60405180910390fd5b60005b838390508110156127df57816018600086868581811061276657612765614dd2565b5b905060200201602081019061277b9190614887565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806127d790614e01565b915050612743565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358383836040516128139392919061566e565b60405180910390a1505050565b600f60009054906101000a900460ff1681565b60075481565b60155481565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b60006128dc612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461296b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296290614c83565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b612995612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b90614c83565b60405180910390fd5b60005b8151811015612ab5576000601b6000848481518110612a4957612a48614dd2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080612aad90614e01565b915050612a27565b5050565b600b5481565b60145481565b612acd612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5390614c83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc290615712565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b60165481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2b906157a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9a90615836565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e8191906146ae565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef4906158c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f639061595a565b60405180910390fd5b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130105750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61304f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613046906159c6565b60405180910390fd5b600081036130685761306383836000613df1565b613d41565b600d60019054906101000a900460ff1661315d57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061311d5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61315c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315390615a32565b60405180910390fd5b5b600d60009054906101000a900460ff161561373c5761317a611e9d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156131e857506131b8611e9d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132215750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561325b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132745750600560159054906101000a900460ff16155b1561373b57600f60009054906101000a900460ff16156134525743600f600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132db9190614cd2565b1061331b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331290615a9e565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156133c357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134515743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134f55750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561359c5760075481111561353f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353690615b30565b60405180910390fd5b60095461354b836119b3565b826135569190614cd2565b1115613597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358e90615b9c565b60405180910390fd5b61373a565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561363f5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561368e57600754811115613689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368090615c2e565b60405180910390fd5b613739565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613738576009546136eb836119b3565b826136f69190614cd2565b1115613737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372e90615b9c565b60405180910390fd5b5b5b5b5b5b6000613747306119b3565b90506000600854821015905080801561376c5750600d60029054906101000a900460ff165b80156137855750600560159054906101000a900460ff16155b80156137db5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138315750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138875750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138cb576001600560156101000a81548160ff0219169083151502179055506138af61405a565b6000600560156101000a81548160ff0219169083151502179055505b6000600560159054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139815750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561398b57600090505b60008115613d315743601a54600b546139a49190614cd2565b10158015613a4f5750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a4e5750601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b15613b3f5761271060135486613a659190614fc7565b613a6f9190615038565b905060135460155482613a829190614fc7565b613a8c9190615038565b60176000828254613a9d9190614cd2565b9250508190555060135460145482613ab59190614fc7565b613abf9190615038565b60166000828254613ad09190614cd2565b925050819055506019869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613d0d565b601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b9a57506000601054115b15613c275761271060105486613bb09190614fc7565b613bba9190615038565b905060105460125482613bcd9190614fc7565b613bd79190615038565b60176000828254613be89190614cd2565b9250508190555060105460115482613c009190614fc7565b613c0a9190615038565b60166000828254613c1b9190614cd2565b92505081905550613d0c565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c8257506000601354115b15613d0b5761271060135486613c989190614fc7565b613ca29190615038565b905060135460155482613cb59190614fc7565b613cbf9190615038565b60176000828254613cd09190614cd2565b9250508190555060135460145482613ce89190614fc7565b613cf29190615038565b60166000828254613d039190614cd2565b925050819055505b5b5b6000811115613d2257613d21873083613df1565b5b8085613d2e9190615c4e565b94505b613d3c878787613df1565b505050505b505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613da78282611c2f565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e57906158c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ec69061595a565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f4c90615cf4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613fe89190614cd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161404c91906146ae565b60405180910390a350505050565b6000614065306119b3565b905060006016546017546140799190614cd2565b9050600082148061408a5750600081145b156140965750506141a1565b6000601754111561418b57600081601754846140b29190614fc7565b6140bc9190615038565b90506140e9307f000000000000000000000000000000000000000000000000000000000000000083613df1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561415157600080fd5b505af1925050508015614162575060015b50808361416f9190615c4e565b92506017548261417f9190615c4e565b91506000601781905550505b600082111561419e5761419d826141a3565b5b50505b565b6000600267ffffffffffffffff8111156141c0576141bf6146ce565b5b6040519080825280602002602001820160405280156141ee5781602001602082028036833780820191505090505b509050308160008151811061420657614205614dd2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142cf9190615d29565b816001815181106142e3576142e2614dd2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016143a1959493929190615e17565b600060405180830381600087803b1580156143bb57600080fd5b505af11580156143cf573d6000803e3d6000fd5b505050505050565b50805460008255906000526020600020908101906143f591906143f8565b50565b5b808211156144115760008160009055506001016143f9565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61443c81614429565b811461444757600080fd5b50565b60008135905061445981614433565b92915050565b600080604083850312156144765761447561441f565b5b60006144848582860161444a565b92505060206144958582860161444a565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144d95780820151818401526020810190506144be565b60008484015250505050565b6000601f19601f8301169050919050565b60006145018261449f565b61450b81856144aa565b935061451b8185602086016144bb565b614524816144e5565b840191505092915050565b6000602082019050818103600083015261454981846144f6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061459661459161458c84614551565b614571565b614551565b9050919050565b60006145a88261457b565b9050919050565b60006145ba8261459d565b9050919050565b6145ca816145af565b82525050565b60006020820190506145e560008301846145c1565b92915050565b60006145f682614551565b9050919050565b614606816145eb565b811461461157600080fd5b50565b600081359050614623816145fd565b92915050565b600080604083850312156146405761463f61441f565b5b600061464e85828601614614565b925050602061465f8582860161444a565b9150509250929050565b60008115159050919050565b61467e81614669565b82525050565b60006020820190506146996000830184614675565b92915050565b6146a881614429565b82525050565b60006020820190506146c3600083018461469f565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614706826144e5565b810181811067ffffffffffffffff82111715614725576147246146ce565b5b80604052505050565b6000614738614415565b905061474482826146fd565b919050565b600067ffffffffffffffff821115614764576147636146ce565b5b602082029050602081019050919050565b600080fd5b600061478d61478884614749565b61472e565b905080838252602082019050602084028301858111156147b0576147af614775565b5b835b818110156147d957806147c58882614614565b8452602084019350506020810190506147b2565b5050509392505050565b600082601f8301126147f8576147f76146c9565b5b813561480884826020860161477a565b91505092915050565b6000602082840312156148275761482661441f565b5b600082013567ffffffffffffffff81111561484557614844614424565b5b614851848285016147e3565b91505092915050565b6000602082840312156148705761486f61441f565b5b600061487e8482850161444a565b91505092915050565b60006020828403121561489d5761489c61441f565b5b60006148ab84828501614614565b91505092915050565b6000806000606084860312156148cd576148cc61441f565b5b60006148db86828701614614565b93505060206148ec86828701614614565b92505060406148fd8682870161444a565b9150509250925092565b600060ff82169050919050565b61491d81614907565b82525050565b60006020820190506149386000830184614914565b92915050565b614947816145eb565b82525050565b6000602082019050614962600083018461493e565b92915050565b61497181614669565b811461497c57600080fd5b50565b60008135905061498e81614968565b92915050565b600080604083850312156149ab576149aa61441f565b5b60006149b985828601614614565b92505060206149ca8582860161497f565b9150509250929050565b6000602082840312156149ea576149e961441f565b5b60006149f88482850161497f565b91505092915050565b600067ffffffffffffffff821115614a1c57614a1b6146ce565b5b602082029050602081019050919050565b6000614a40614a3b84614a01565b61472e565b90508083825260208201905060208402830185811115614a6357614a62614775565b5b835b81811015614a8c5780614a78888261444a565b845260208401935050602081019050614a65565b5050509392505050565b600082601f830112614aab57614aaa6146c9565b5b8135614abb848260208601614a2d565b91505092915050565b60008060408385031215614adb57614ada61441f565b5b600083013567ffffffffffffffff811115614af957614af8614424565b5b614b05858286016147e3565b925050602083013567ffffffffffffffff811115614b2657614b25614424565b5b614b3285828601614a96565b9150509250929050565b600080fd5b60008083601f840112614b5757614b566146c9565b5b8235905067ffffffffffffffff811115614b7457614b73614b3c565b5b602083019150836020820283011115614b9057614b8f614775565b5b9250929050565b600080600060408486031215614bb057614baf61441f565b5b600084013567ffffffffffffffff811115614bce57614bcd614424565b5b614bda86828701614b41565b93509350506020614bed8682870161497f565b9150509250925092565b60008060408385031215614c0e57614c0d61441f565b5b6000614c1c85828601614614565b9250506020614c2d85828601614614565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c6d6020836144aa565b9150614c7882614c37565b602082019050919050565b60006020820190508181036000830152614c9c81614c60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614cdd82614429565b9150614ce883614429565b9250828201905080821115614d0057614cff614ca3565b5b92915050565b7f4d757374206b65657020666565732061742031303025206f72206c6573730000600082015250565b6000614d3c601e836144aa565b9150614d4782614d06565b602082019050919050565b60006020820190508181036000830152614d6b81614d2f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614db957607f821691505b602082108103614dcc57614dcb614d72565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614e0c82614429565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e3e57614e3d614ca3565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115614ea057808604811115614e7c57614e7b614ca3565b5b6001851615614e8b5780820291505b8081029050614e9985614e49565b9450614e60565b94509492505050565b600082614eb95760019050614f75565b81614ec75760009050614f75565b8160018114614edd5760028114614ee757614f16565b6001915050614f75565b60ff841115614ef957614ef8614ca3565b5b8360020a915084821115614f1057614f0f614ca3565b5b50614f75565b5060208310610133831016604e8410600b8410161715614f4b5782820a905083811115614f4657614f45614ca3565b5b614f75565b614f588484846001614e56565b92509050818404811115614f6f57614f6e614ca3565b5b81810290505b9392505050565b6000614f8782614429565b9150614f9283614907565b9250614fbf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614ea9565b905092915050565b6000614fd282614429565b9150614fdd83614429565b9250828202614feb81614429565b9150828204841483151761500257615001614ca3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061504382614429565b915061504e83614429565b92508261505e5761505d615009565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006150c5602f836144aa565b91506150d082615069565b604082019050919050565b600060208201905081810360008301526150f4816150b8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006151576028836144aa565b9150615162826150fb565b604082019050919050565b600060208201905081810360008301526151868161514a565b9050919050565b7f6d6179206e6f742073657420746f203020616464726573730000000000000000600082015250565b60006151c36018836144aa565b91506151ce8261518d565b602082019050919050565b600060208201905081810360008301526151f2816151b6565b9050919050565b7f4e6f20626f747320746f20626c6f636b00000000000000000000000000000000600082015250565b600061522f6010836144aa565b915061523a826151f9565b602082019050919050565b6000602082019050818103600083015261525e81615222565b9050919050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b600061529b6018836144aa565b91506152a682615265565b602082019050919050565b600060208201905081810360008301526152ca8161528e565b9050919050565b7f5468652050616e63616b655377617020706169722063616e6e6f74206265207260008201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657260208201527f5061697273000000000000000000000000000000000000000000000000000000604082015250565b60006153536045836144aa565b915061535e826152d1565b606082019050919050565b6000602082019050818103600083015261538281615346565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006153e56025836144aa565b91506153f082615389565b604082019050919050565b60006020820190508181036000830152615414816153d8565b9050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000615451601e836144aa565b915061545c8261541b565b602082019050919050565b6000602082019050818103600083015261548081615444565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b60006154e36036836144aa565b91506154ee82615487565b604082019050919050565b60006020820190508181036000830152615512816154d6565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b60006155756022836144aa565b915061558082615519565b604082019050919050565b600060208201905081810360008301526155a481615568565b9050919050565b600082825260208201905092915050565b6000819050919050565b6155cf816145eb565b82525050565b60006155e183836155c6565b60208301905092915050565b60006155fc6020840184614614565b905092915050565b6000602082019050919050565b600061561d83856155ab565b9350615628826155bc565b8060005b858110156156615761563e82846155ed565b61564888826155d5565b975061565383615604565b92505060018101905061562c565b5085925050509392505050565b60006040820190508181036000830152615689818587615611565b90506156986020830184614675565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006156fc6026836144aa565b9150615707826156a0565b604082019050919050565b6000602082019050818103600083015261572b816156ef565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061578e6024836144aa565b915061579982615732565b604082019050919050565b600060208201905081810360008301526157bd81615781565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006158206022836144aa565b915061582b826157c4565b604082019050919050565b6000602082019050818103600083015261584f81615813565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006158b26025836144aa565b91506158bd82615856565b604082019050919050565b600060208201905081810360008301526158e1816158a5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006159446023836144aa565b915061594f826158e8565b604082019050919050565b6000602082019050818103600083015261597381615937565b9050919050565b7f4e6f20626f747300000000000000000000000000000000000000000000000000600082015250565b60006159b06007836144aa565b91506159bb8261597a565b602082019050919050565b600060208201905081810360008301526159df816159a3565b9050919050565b7f54726164696e67206973206e6f7420616374697665207965742e000000000000600082015250565b6000615a1c601a836144aa565b9150615a27826159e6565b602082019050919050565b60006020820190508181036000830152615a4b81615a0f565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e000000000000000000600082015250565b6000615a886017836144aa565b9150615a9382615a52565b602082019050919050565b60006020820190508181036000830152615ab781615a7b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615b1a6035836144aa565b9150615b2582615abe565b604082019050919050565b60006020820190508181036000830152615b4981615b0d565b9050919050565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b6000615b86601b836144aa565b9150615b9182615b50565b602082019050919050565b60006020820190508181036000830152615bb581615b79565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615c186036836144aa565b9150615c2382615bbc565b604082019050919050565b60006020820190508181036000830152615c4781615c0b565b9050919050565b6000615c5982614429565b9150615c6483614429565b9250828203905081811115615c7c57615c7b614ca3565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615cde6026836144aa565b9150615ce982615c82565b604082019050919050565b60006020820190508181036000830152615d0d81615cd1565b9050919050565b600081519050615d23816145fd565b92915050565b600060208284031215615d3f57615d3e61441f565b5b6000615d4d84828501615d14565b91505092915050565b6000819050919050565b6000615d7b615d76615d7184615d56565b614571565b614429565b9050919050565b615d8b81615d60565b82525050565b600081519050919050565b6000819050602082019050919050565b6000602082019050919050565b6000615dc482615d91565b615dce81856155ab565b9350615dd983615d9c565b8060005b83811015615e0a578151615df188826155d5565b9750615dfc83615dac565b925050600181019050615ddd565b5085935050505092915050565b600060a082019050615e2c600083018861469f565b615e396020830187615d82565b8181036040830152615e4b8186615db9565b9050615e5a606083018561493e565b615e67608083018461469f565b969550505050505056fea2646970667358221220b4a47abcd135bda25a9d351f0a0c530a42b9cb91e99c1737b32d1b7d757406cf64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c80638da5cb5b116101d1578063c492f04611610102578063e884f260116100a0578063f2fde38b1161006f578063f2fde38b14610cef578063f8b45b0514610d18578063fb002c9714610d43578063fd72e22a14610d6e57610381565b8063e884f26014610c45578063ea79b63814610c70578063ee40166e14610c99578063efcc1b2f14610cc457610381565b8063ccb61358116100dc578063ccb6135814610b87578063d0a3981414610bb2578063dd62ed3e14610bdd578063e2f4560514610c1a57610381565b8063c492f04614610b08578063c876d0b914610b31578063c8c8ebe414610b5c57610381565b8063abb810521161016f578063b9e9370011610149578063b9e9370014610a60578063bbc0c74214610a8b578063c024666814610ab6578063c18bc19514610adf57610381565b8063abb81052146109bd578063b5cbdb26146109fa578063b62496f514610a2357610381565b80639a36f932116101ab5780639a36f932146108ef5780639a7a23d61461091a578063a457c2d714610943578063a9059cbb1461098057610381565b80638da5cb5b14610870578063924de9b71461089b57806395d89b41146108c457610381565b8063313ce567116102ab5780636ddd1713116102495780637506cbd8116102235780637506cbd8146107c8578063751039fc146107f35780637571336a1461081e57806382aa7c681461084757610381565b80636ddd17131461074957806370a0823114610774578063715018a6146107b157610381565b8063452ed4f111610285578063452ed4f11461068d5780634a62bb65146106b85780634fbee193146106e357806366ca9b831461072057610381565b8063313ce5671461060e578063327b8e7514610639578063395093511461065057610381565b8063106b5da1116103185780631a8145bb116102f25780631a8145bb146105525780631fc851bd1461057d57806323b872dd146105a857806330d5d18d146105e557610381565b8063106b5da1146104c157806310d5de53146104ea57806318160ddd1461052757610381565b8063095ea7b311610354578063095ea7b314610405578063099d0d30146104425780630d128cfe1461046d5780630f4432e31461049657610381565b806302dbd8f81461038657806306fdde03146103af5780630758d924146103da57610381565b3661038157005b600080fd5b34801561039257600080fd5b506103ad60048036038101906103a8919061445f565b610d99565b005b3480156103bb57600080fd5b506103c4610e9f565b6040516103d1919061452f565b60405180910390f35b3480156103e657600080fd5b506103ef610f31565b6040516103fc91906145d0565b60405180910390f35b34801561041157600080fd5b5061042c60048036038101906104279190614629565b610f55565b6040516104399190614684565b60405180910390f35b34801561044e57600080fd5b50610457610f73565b60405161046491906146ae565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190614811565b610f79565b005b3480156104a257600080fd5b506104ab6110a5565b6040516104b891906146ae565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e3919061485a565b6110ab565b005b3480156104f657600080fd5b50610511600480360381019061050c9190614887565b6111ea565b60405161051e9190614684565b60405180910390f35b34801561053357600080fd5b5061053c61120a565b60405161054991906146ae565b60405180910390f35b34801561055e57600080fd5b50610567611214565b60405161057491906146ae565b60405180910390f35b34801561058957600080fd5b5061059261121a565b60405161059f91906146ae565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca91906148b4565b611220565b6040516105dc9190614684565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190614887565b611340565b005b34801561061a57600080fd5b50610623611511565b6040516106309190614923565b60405180910390f35b34801561064557600080fd5b5061064e611528565b005b34801561065c57600080fd5b5061067760048036038101906106729190614629565b611761565b6040516106849190614684565b60405180910390f35b34801561069957600080fd5b506106a261180d565b6040516106af919061494d565b60405180910390f35b3480156106c457600080fd5b506106cd611831565b6040516106da9190614684565b60405180910390f35b3480156106ef57600080fd5b5061070a60048036038101906107059190614887565b611844565b6040516107179190614684565b60405180910390f35b34801561072c57600080fd5b506107476004803603810190610742919061445f565b61189a565b005b34801561075557600080fd5b5061075e6119a0565b60405161076b9190614684565b60405180910390f35b34801561078057600080fd5b5061079b60048036038101906107969190614887565b6119b3565b6040516107a891906146ae565b60405180910390f35b3480156107bd57600080fd5b506107c66119fb565b005b3480156107d457600080fd5b506107dd611b53565b6040516107ea91906146ae565b60405180910390f35b3480156107ff57600080fd5b50610808611b59565b6040516108159190614684565b60405180910390f35b34801561082a57600080fd5b5061084560048036038101906108409190614994565b611c2f565b005b34801561085357600080fd5b5061086e6004803603810190610869919061485a565b611d6f565b005b34801561087c57600080fd5b50610885611e9d565b604051610892919061494d565b60405180910390f35b3480156108a757600080fd5b506108c260048036038101906108bd91906149d4565b611ec7565b005b3480156108d057600080fd5b506108d9611f7b565b6040516108e6919061452f565b60405180910390f35b3480156108fb57600080fd5b5061090461200d565b60405161091191906146ae565b60405180910390f35b34801561092657600080fd5b50610941600480360381019061093c9190614994565b612013565b005b34801561094f57600080fd5b5061096a60048036038101906109659190614629565b612146565b6040516109779190614684565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a29190614629565b612231565b6040516109b49190614684565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df9190614887565b61224f565b6040516109f19190614684565b60405180910390f35b348015610a0657600080fd5b50610a216004803603810190610a1c9190614ac4565b61226f565b005b348015610a2f57600080fd5b50610a4a6004803603810190610a459190614887565b6123f2565b604051610a579190614684565b60405180910390f35b348015610a6c57600080fd5b50610a75612412565b604051610a8291906146ae565b60405180910390f35b348015610a9757600080fd5b50610aa0612418565b604051610aad9190614684565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190614994565b61242b565b005b348015610aeb57600080fd5b50610b066004803603810190610b01919061485a565b61256b565b005b348015610b1457600080fd5b50610b2f6004803603810190610b2a9190614b97565b6126a9565b005b348015610b3d57600080fd5b50610b46612820565b604051610b539190614684565b60405180910390f35b348015610b6857600080fd5b50610b71612833565b604051610b7e91906146ae565b60405180910390f35b348015610b9357600080fd5b50610b9c612839565b604051610ba991906146ae565b60405180910390f35b348015610bbe57600080fd5b50610bc761283f565b604051610bd491906146ae565b60405180910390f35b348015610be957600080fd5b50610c046004803603810190610bff9190614bf7565b612845565b604051610c1191906146ae565b60405180910390f35b348015610c2657600080fd5b50610c2f6128cc565b604051610c3c91906146ae565b60405180910390f35b348015610c5157600080fd5b50610c5a6128d2565b604051610c679190614684565b60405180910390f35b348015610c7c57600080fd5b50610c976004803603810190610c929190614811565b61298d565b005b348015610ca557600080fd5b50610cae612ab9565b604051610cbb91906146ae565b60405180910390f35b348015610cd057600080fd5b50610cd9612abf565b604051610ce691906146ae565b60405180910390f35b348015610cfb57600080fd5b50610d166004803603810190610d119190614887565b612ac5565b005b348015610d2457600080fd5b50610d2d612c8b565b604051610d3a91906146ae565b60405180910390f35b348015610d4f57600080fd5b50610d58612c91565b604051610d6591906146ae565b60405180910390f35b348015610d7a57600080fd5b50610d83612c97565b604051610d90919061494d565b60405180910390f35b610da1612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2790614c83565b60405180910390fd5b8160118190555080601281905550601254601154610e4e9190614cd2565b6010819055506127106010541115610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290614d52565b60405180910390fd5b5050565b606060038054610eae90614da1565b80601f0160208091040260200160405190810160405280929190818152602001828054610eda90614da1565b8015610f275780601f10610efc57610100808354040283529160200191610f27565b820191906000526020600020905b815481529060010190602001808311610f0a57829003601f168201915b5050505050905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000610f69610f62612cbd565b8484612cc5565b6001905092915050565b60125481565b610f81612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100790614c83565b60405180910390fd5b60005b81518110156110a1576001601b600084848151811061103557611034614dd2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061109990614e01565b915050611013565b5050565b600a5481565b6110b3612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113990614c83565b60405180910390fd5b61114a611511565b600a6111569190614f7c565b6103e8600161116361120a565b61116d9190614fc7565b6111779190615038565b6111819190615038565b81116111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b9906150db565b60405180910390fd5b6111ca611511565b600a6111d69190614f7c565b816111e19190614fc7565b60078190555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60175481565b600c5481565b600061122d848484612e8e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611278612cbd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611334578281101561131f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113169061516d565b60405180910390fd5b6113338561132b612cbd565b858403612cc5565b5b60019150509392505050565b611348612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce90614c83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d906151d9565b60405180910390fd5b61145181600161242b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f086aa05ff00214e2d0c7c02b8a46b2614ad955732e6b43aa8afca69ed1ad76f860405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b611530612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b690614c83565b60405180910390fd5b600060198054905011611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe90615245565b60405180910390fd5b60005b60198054905081101561175057601b60006019838154811061162f5761162e614dd2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661173d576001601b6000601984815481106116c0576116bf614dd2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061174890614e01565b91505061160a565b506019600061175f91906143d7565b565b600061180361176e612cbd565b84846001600061177c612cbd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117fe9190614cd2565b612cc5565b6001905092915050565b7f0000000000000000000000006ebd9a280cb90da52ceaba118d773130c0918c8281565b600d60009054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118a2612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192890614c83565b60405180910390fd5b816014819055508060158190555060155460145461194f9190614cd2565b601381905550612710601354111561199c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199390614d52565b60405180910390fd5b5050565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611a03612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990614c83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b6000611b63612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be990614c83565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506000600f60006101000a81548160ff0219169083151502179055506001905090565b611c37612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbd90614c83565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d9582604051611d639190614684565b60405180910390a25050565b611d77612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfd90614c83565b60405180910390fd5b600d60019054906101000a900460ff1615611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d906152b1565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043600b8190555080601a8190555050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611ecf612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5590614c83565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b606060048054611f8a90614da1565b80601f0160208091040260200160405190810160405280929190818152602001828054611fb690614da1565b80156120035780601f10611fd857610100808354040283529160200191612003565b820191906000526020600020905b815481529060010190602001808311611fe657829003601f168201915b5050505050905090565b61271081565b61201b612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a190614c83565b60405180910390fd5b7f0000000000000000000000006ebd9a280cb90da52ceaba118d773130c0918c8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212f90615369565b60405180910390fd5b6121428282613d46565b5050565b60008060016000612155612cbd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612212576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612209906153fb565b60405180910390fd5b61222661221d612cbd565b85858403612cc5565b600191505092915050565b600061224561223e612cbd565b8484612e8e565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b612277612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fd90614c83565b60405180910390fd5b805182511461234a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234190615467565b60405180910390fd5b61025882511061238f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612386906154f9565b60405180910390fd5b60005b82518110156123ed576123da338483815181106123b2576123b1614dd2565b5b60200260200101518484815181106123cd576123cc614dd2565b5b6020026020010151613df1565b80806123e590614e01565b915050612392565b505050565b601d6020528060005260406000206000915054906101000a900460ff1681565b60135481565b600d60019054906101000a900460ff1681565b612433612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b990614c83565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161255f9190614684565b60405180910390a25050565b612573612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f990614c83565b60405180910390fd5b61260a611511565b600a6126169190614f7c565b6064600161262261120a565b61262c9190614fc7565b6126369190615038565b6126409190615038565b8111612681576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126789061558b565b60405180910390fd5b612689611511565b600a6126959190614f7c565b816126a09190614fc7565b60098190555050565b6126b1612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273790614c83565b60405180910390fd5b60005b838390508110156127df57816018600086868581811061276657612765614dd2565b5b905060200201602081019061277b9190614887565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806127d790614e01565b915050612743565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358383836040516128139392919061566e565b60405180910390a1505050565b600f60009054906101000a900460ff1681565b60075481565b60155481565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b60006128dc612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461296b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296290614c83565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b612995612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b90614c83565b60405180910390fd5b60005b8151811015612ab5576000601b6000848481518110612a4957612a48614dd2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080612aad90614e01565b915050612a27565b5050565b600b5481565b60145481565b612acd612cbd565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5390614c83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc290615712565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b60165481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2b906157a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9a90615836565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e8191906146ae565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef4906158c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f639061595a565b60405180910390fd5b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130105750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61304f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613046906159c6565b60405180910390fd5b600081036130685761306383836000613df1565b613d41565b600d60019054906101000a900460ff1661315d57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061311d5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61315c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315390615a32565b60405180910390fd5b5b600d60009054906101000a900460ff161561373c5761317a611e9d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156131e857506131b8611e9d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132215750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561325b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132745750600560159054906101000a900460ff16155b1561373b57600f60009054906101000a900460ff16156134525743600f600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132db9190614cd2565b1061331b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331290615a9e565b60405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156133c357507f0000000000000000000000006ebd9a280cb90da52ceaba118d773130c0918c8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134515743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134f55750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561359c5760075481111561353f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353690615b30565b60405180910390fd5b60095461354b836119b3565b826135569190614cd2565b1115613597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358e90615b9c565b60405180910390fd5b61373a565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561363f5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561368e57600754811115613689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368090615c2e565b60405180910390fd5b613739565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613738576009546136eb836119b3565b826136f69190614cd2565b1115613737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372e90615b9c565b60405180910390fd5b5b5b5b5b5b6000613747306119b3565b90506000600854821015905080801561376c5750600d60029054906101000a900460ff165b80156137855750600560159054906101000a900460ff16155b80156137db5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138315750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138875750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138cb576001600560156101000a81548160ff0219169083151502179055506138af61405a565b6000600560156101000a81548160ff0219169083151502179055505b6000600560159054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139815750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561398b57600090505b60008115613d315743601a54600b546139a49190614cd2565b10158015613a4f5750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a4e5750601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b15613b3f5761271060135486613a659190614fc7565b613a6f9190615038565b905060135460155482613a829190614fc7565b613a8c9190615038565b60176000828254613a9d9190614cd2565b9250508190555060135460145482613ab59190614fc7565b613abf9190615038565b60166000828254613ad09190614cd2565b925050819055506019869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613d0d565b601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b9a57506000601054115b15613c275761271060105486613bb09190614fc7565b613bba9190615038565b905060105460125482613bcd9190614fc7565b613bd79190615038565b60176000828254613be89190614cd2565b9250508190555060105460115482613c009190614fc7565b613c0a9190615038565b60166000828254613c1b9190614cd2565b92505081905550613d0c565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c8257506000601354115b15613d0b5761271060135486613c989190614fc7565b613ca29190615038565b905060135460155482613cb59190614fc7565b613cbf9190615038565b60176000828254613cd09190614cd2565b9250508190555060135460145482613ce89190614fc7565b613cf29190615038565b60166000828254613d039190614cd2565b925050819055505b5b5b6000811115613d2257613d21873083613df1565b5b8085613d2e9190615c4e565b94505b613d3c878787613df1565b505050505b505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613da78282611c2f565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e57906158c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ec69061595a565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f4c90615cf4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613fe89190614cd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161404c91906146ae565b60405180910390a350505050565b6000614065306119b3565b905060006016546017546140799190614cd2565b9050600082148061408a5750600081145b156140965750506141a1565b6000601754111561418b57600081601754846140b29190614fc7565b6140bc9190615038565b90506140e9307f0000000000000000000000006ebd9a280cb90da52ceaba118d773130c0918c8283613df1565b7f0000000000000000000000006ebd9a280cb90da52ceaba118d773130c0918c8273ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561415157600080fd5b505af1925050508015614162575060015b50808361416f9190615c4e565b92506017548261417f9190615c4e565b91506000601781905550505b600082111561419e5761419d826141a3565b5b50505b565b6000600267ffffffffffffffff8111156141c0576141bf6146ce565b5b6040519080825280602002602001820160405280156141ee5781602001602082028036833780820191505090505b509050308160008151811061420657614205614dd2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142cf9190615d29565b816001815181106142e3576142e2614dd2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016143a1959493929190615e17565b600060405180830381600087803b1580156143bb57600080fd5b505af11580156143cf573d6000803e3d6000fd5b505050505050565b50805460008255906000526020600020908101906143f591906143f8565b50565b5b808211156144115760008160009055506001016143f9565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61443c81614429565b811461444757600080fd5b50565b60008135905061445981614433565b92915050565b600080604083850312156144765761447561441f565b5b60006144848582860161444a565b92505060206144958582860161444a565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144d95780820151818401526020810190506144be565b60008484015250505050565b6000601f19601f8301169050919050565b60006145018261449f565b61450b81856144aa565b935061451b8185602086016144bb565b614524816144e5565b840191505092915050565b6000602082019050818103600083015261454981846144f6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061459661459161458c84614551565b614571565b614551565b9050919050565b60006145a88261457b565b9050919050565b60006145ba8261459d565b9050919050565b6145ca816145af565b82525050565b60006020820190506145e560008301846145c1565b92915050565b60006145f682614551565b9050919050565b614606816145eb565b811461461157600080fd5b50565b600081359050614623816145fd565b92915050565b600080604083850312156146405761463f61441f565b5b600061464e85828601614614565b925050602061465f8582860161444a565b9150509250929050565b60008115159050919050565b61467e81614669565b82525050565b60006020820190506146996000830184614675565b92915050565b6146a881614429565b82525050565b60006020820190506146c3600083018461469f565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614706826144e5565b810181811067ffffffffffffffff82111715614725576147246146ce565b5b80604052505050565b6000614738614415565b905061474482826146fd565b919050565b600067ffffffffffffffff821115614764576147636146ce565b5b602082029050602081019050919050565b600080fd5b600061478d61478884614749565b61472e565b905080838252602082019050602084028301858111156147b0576147af614775565b5b835b818110156147d957806147c58882614614565b8452602084019350506020810190506147b2565b5050509392505050565b600082601f8301126147f8576147f76146c9565b5b813561480884826020860161477a565b91505092915050565b6000602082840312156148275761482661441f565b5b600082013567ffffffffffffffff81111561484557614844614424565b5b614851848285016147e3565b91505092915050565b6000602082840312156148705761486f61441f565b5b600061487e8482850161444a565b91505092915050565b60006020828403121561489d5761489c61441f565b5b60006148ab84828501614614565b91505092915050565b6000806000606084860312156148cd576148cc61441f565b5b60006148db86828701614614565b93505060206148ec86828701614614565b92505060406148fd8682870161444a565b9150509250925092565b600060ff82169050919050565b61491d81614907565b82525050565b60006020820190506149386000830184614914565b92915050565b614947816145eb565b82525050565b6000602082019050614962600083018461493e565b92915050565b61497181614669565b811461497c57600080fd5b50565b60008135905061498e81614968565b92915050565b600080604083850312156149ab576149aa61441f565b5b60006149b985828601614614565b92505060206149ca8582860161497f565b9150509250929050565b6000602082840312156149ea576149e961441f565b5b60006149f88482850161497f565b91505092915050565b600067ffffffffffffffff821115614a1c57614a1b6146ce565b5b602082029050602081019050919050565b6000614a40614a3b84614a01565b61472e565b90508083825260208201905060208402830185811115614a6357614a62614775565b5b835b81811015614a8c5780614a78888261444a565b845260208401935050602081019050614a65565b5050509392505050565b600082601f830112614aab57614aaa6146c9565b5b8135614abb848260208601614a2d565b91505092915050565b60008060408385031215614adb57614ada61441f565b5b600083013567ffffffffffffffff811115614af957614af8614424565b5b614b05858286016147e3565b925050602083013567ffffffffffffffff811115614b2657614b25614424565b5b614b3285828601614a96565b9150509250929050565b600080fd5b60008083601f840112614b5757614b566146c9565b5b8235905067ffffffffffffffff811115614b7457614b73614b3c565b5b602083019150836020820283011115614b9057614b8f614775565b5b9250929050565b600080600060408486031215614bb057614baf61441f565b5b600084013567ffffffffffffffff811115614bce57614bcd614424565b5b614bda86828701614b41565b93509350506020614bed8682870161497f565b9150509250925092565b60008060408385031215614c0e57614c0d61441f565b5b6000614c1c85828601614614565b9250506020614c2d85828601614614565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c6d6020836144aa565b9150614c7882614c37565b602082019050919050565b60006020820190508181036000830152614c9c81614c60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614cdd82614429565b9150614ce883614429565b9250828201905080821115614d0057614cff614ca3565b5b92915050565b7f4d757374206b65657020666565732061742031303025206f72206c6573730000600082015250565b6000614d3c601e836144aa565b9150614d4782614d06565b602082019050919050565b60006020820190508181036000830152614d6b81614d2f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614db957607f821691505b602082108103614dcc57614dcb614d72565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614e0c82614429565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e3e57614e3d614ca3565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115614ea057808604811115614e7c57614e7b614ca3565b5b6001851615614e8b5780820291505b8081029050614e9985614e49565b9450614e60565b94509492505050565b600082614eb95760019050614f75565b81614ec75760009050614f75565b8160018114614edd5760028114614ee757614f16565b6001915050614f75565b60ff841115614ef957614ef8614ca3565b5b8360020a915084821115614f1057614f0f614ca3565b5b50614f75565b5060208310610133831016604e8410600b8410161715614f4b5782820a905083811115614f4657614f45614ca3565b5b614f75565b614f588484846001614e56565b92509050818404811115614f6f57614f6e614ca3565b5b81810290505b9392505050565b6000614f8782614429565b9150614f9283614907565b9250614fbf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614ea9565b905092915050565b6000614fd282614429565b9150614fdd83614429565b9250828202614feb81614429565b9150828204841483151761500257615001614ca3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061504382614429565b915061504e83614429565b92508261505e5761505d615009565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006150c5602f836144aa565b91506150d082615069565b604082019050919050565b600060208201905081810360008301526150f4816150b8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006151576028836144aa565b9150615162826150fb565b604082019050919050565b600060208201905081810360008301526151868161514a565b9050919050565b7f6d6179206e6f742073657420746f203020616464726573730000000000000000600082015250565b60006151c36018836144aa565b91506151ce8261518d565b602082019050919050565b600060208201905081810360008301526151f2816151b6565b9050919050565b7f4e6f20626f747320746f20626c6f636b00000000000000000000000000000000600082015250565b600061522f6010836144aa565b915061523a826151f9565b602082019050919050565b6000602082019050818103600083015261525e81615222565b9050919050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b600061529b6018836144aa565b91506152a682615265565b602082019050919050565b600060208201905081810360008301526152ca8161528e565b9050919050565b7f5468652050616e63616b655377617020706169722063616e6e6f74206265207260008201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657260208201527f5061697273000000000000000000000000000000000000000000000000000000604082015250565b60006153536045836144aa565b915061535e826152d1565b606082019050919050565b6000602082019050818103600083015261538281615346565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006153e56025836144aa565b91506153f082615389565b604082019050919050565b60006020820190508181036000830152615414816153d8565b9050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000615451601e836144aa565b915061545c8261541b565b602082019050919050565b6000602082019050818103600083015261548081615444565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b60006154e36036836144aa565b91506154ee82615487565b604082019050919050565b60006020820190508181036000830152615512816154d6565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b60006155756022836144aa565b915061558082615519565b604082019050919050565b600060208201905081810360008301526155a481615568565b9050919050565b600082825260208201905092915050565b6000819050919050565b6155cf816145eb565b82525050565b60006155e183836155c6565b60208301905092915050565b60006155fc6020840184614614565b905092915050565b6000602082019050919050565b600061561d83856155ab565b9350615628826155bc565b8060005b858110156156615761563e82846155ed565b61564888826155d5565b975061565383615604565b92505060018101905061562c565b5085925050509392505050565b60006040820190508181036000830152615689818587615611565b90506156986020830184614675565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006156fc6026836144aa565b9150615707826156a0565b604082019050919050565b6000602082019050818103600083015261572b816156ef565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061578e6024836144aa565b915061579982615732565b604082019050919050565b600060208201905081810360008301526157bd81615781565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006158206022836144aa565b915061582b826157c4565b604082019050919050565b6000602082019050818103600083015261584f81615813565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006158b26025836144aa565b91506158bd82615856565b604082019050919050565b600060208201905081810360008301526158e1816158a5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006159446023836144aa565b915061594f826158e8565b604082019050919050565b6000602082019050818103600083015261597381615937565b9050919050565b7f4e6f20626f747300000000000000000000000000000000000000000000000000600082015250565b60006159b06007836144aa565b91506159bb8261597a565b602082019050919050565b600060208201905081810360008301526159df816159a3565b9050919050565b7f54726164696e67206973206e6f7420616374697665207965742e000000000000600082015250565b6000615a1c601a836144aa565b9150615a27826159e6565b602082019050919050565b60006020820190508181036000830152615a4b81615a0f565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e000000000000000000600082015250565b6000615a886017836144aa565b9150615a9382615a52565b602082019050919050565b60006020820190508181036000830152615ab781615a7b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615b1a6035836144aa565b9150615b2582615abe565b604082019050919050565b60006020820190508181036000830152615b4981615b0d565b9050919050565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b6000615b86601b836144aa565b9150615b9182615b50565b602082019050919050565b60006020820190508181036000830152615bb581615b79565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615c186036836144aa565b9150615c2382615bbc565b604082019050919050565b60006020820190508181036000830152615c4781615c0b565b9050919050565b6000615c5982614429565b9150615c6483614429565b9250828203905081811115615c7c57615c7b614ca3565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615cde6026836144aa565b9150615ce982615c82565b604082019050919050565b60006020820190508181036000830152615d0d81615cd1565b9050919050565b600081519050615d23816145fd565b92915050565b600060208284031215615d3f57615d3e61441f565b5b6000615d4d84828501615d14565b91505092915050565b6000819050919050565b6000615d7b615d76615d7184615d56565b614571565b614429565b9050919050565b615d8b81615d60565b82525050565b600081519050919050565b6000819050602082019050919050565b6000602082019050919050565b6000615dc482615d91565b615dce81856155ab565b9350615dd983615d9c565b8060005b83811015615e0a578151615df188826155d5565b9750615dfc83615dac565b925050600181019050615ddd565b5085935050505092915050565b600060a082019050615e2c600083018861469f565b615e396020830187615d82565b8181036040830152615e4b8186615db9565b9050615e5a606083018561493e565b615e67608083018461469f565b969550505050505056fea2646970667358221220b4a47abcd135bda25a9d351f0a0c530a42b9cb91e99c1737b32d1b7d757406cf64736f6c63430008130033

Deployed Bytecode Sourcemap

10908:15267:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17053:325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4150:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10950:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5071:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11978:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25537:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11227:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16208:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12480:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4478:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12178:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11389;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5248:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18606:349;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4370:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25009:323;;;;;;;;;;;;;:::i;:::-;;5829:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10994:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11498:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18963:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16723:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11578:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4594:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8917:148;;;;;;;;;;;;;:::i;:::-;;11939:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19140:159;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17386:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15727:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8275:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16099:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4258:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11853:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18102:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6052:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4729:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12432:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25733:435;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12702:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12022:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11538:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17596:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16476:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17788:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11801:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11108:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12094:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11904:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4912:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11150:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15535:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25340:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11312:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12056:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9220:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11190:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12137:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11064:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17053:325;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17174:14:::1;17154:17;:34;;;;17218:13;17199:16;:32;;;;17278:16;;17258:17;;:36;;;;:::i;:::-;17242:13;:52;;;;17330:5;17313:13;;:22;;17305:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;17053:325:::0;;:::o;4150:100::-;4204:13;4237:5;4230:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4150:100;:::o;10950:37::-;;;:::o;5071:169::-;5154:4;5171:39;5180:12;:10;:12::i;:::-;5194:7;5203:6;5171:8;:39::i;:::-;5228:4;5221:11;;5071:169;;;;:::o;11978:31::-;;;;:::o;25537:188::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25621:9:::1;25617:101;25640:10;:17;25636:1;:21;25617:101;;;25702:4;25678:6;:21;25685:10;25696:1;25685:13;;;;;;;;:::i;:::-;;;;;;;;25678:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;25659:3;;;;;:::i;:::-;;;;25617:101;;;;25537:188:::0;:::o;11227:39::-;;;;:::o;16208:256::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16332:10:::1;:8;:10::i;:::-;16326:2;:16;;;;:::i;:::-;16317:4;16313:1;16297:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16296:47;;;;:::i;:::-;16287:6;:56;16279:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;16445:10;:8;:10::i;:::-;16439:2;:16;;;;:::i;:::-;16429:6;:27;;;;:::i;:::-;16406:20;:50;;;;16208:256:::0;:::o;12480:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;4478:108::-;4539:7;4566:12;;4559:19;;4478:108;:::o;12178:33::-;;;;:::o;11389:::-;;;;:::o;5248:573::-;5388:4;5405:36;5415:6;5423:9;5434:6;5405:9;:36::i;:::-;5454:24;5481:11;:19;5493:6;5481:19;;;;;;;;;;;;;;;:33;5501:12;:10;:12::i;:::-;5481:33;;;;;;;;;;;;;;;;5454:60;;5549:17;5529:16;:37;5525:265;;5611:6;5591:16;:26;;5583:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5706:57;5715:6;5723:12;:10;:12::i;:::-;5756:6;5737:16;:25;5706:8;:57::i;:::-;5525:265;5809:4;5802:11;;;5248:573;;;;;:::o;18606:349::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18736:1:::1;18705:33;;:19;:33;;::::0;18697:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18778:42;18794:19;18815:4;18778:15;:42::i;:::-;18881:16;;;;;;;;;;;18836:62;;18860:19;18836:62;;;;;;;;;;;;18928:19;18909:16;;:38;;;;;;;;;;;;;;;;;;18606:349:::0;:::o;4370:100::-;4428:5;4453:9;;;;;;;;;;;4446:16;;4370:100;:::o;25009:323::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25095:1:::1;25074:11;:18;;;;:22;25066:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;25134:9;25130:164;25153:11;:18;;;;25149:1;:22;25130:164;;;25196:6;:22;25203:11;25215:1;25203:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25196:22;;;;;;;;;;;;;;;;;;;;;;;;;25192:91;;25263:4;25238:6;:22;25245:11;25257:1;25245:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25238:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25192:91;25173:3;;;;;:::i;:::-;;;;25130:164;;;;25313:11;;25306:18;;;;:::i;:::-;25009:323::o:0;5829:215::-;5917:4;5934:80;5943:12;:10;:12::i;:::-;5957:7;6003:10;5966:11;:25;5978:12;:10;:12::i;:::-;5966:25;;;;;;;;;;;;;;;:34;5992:7;5966:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5934:8;:80::i;:::-;6032:4;6025:11;;5829:215;;;;:::o;10994:31::-;;;:::o;11498:33::-;;;;;;;;;;;;;:::o;18963:127::-;19030:4;19054:19;:28;19074:7;19054:28;;;;;;;;;;;;;;;;;;;;;;;;;19047:35;;18963:127;;;:::o;16723:318::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16842:14:::1;16823:16;:33;;;;16885:13;16867:15;:31;;;;16943:15;;16924:16;;:34;;;;:::i;:::-;16909:12;:49;;;;16993:5;16977:12;;:21;;16969:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16723:318:::0;;:::o;11578:31::-;;;;;;;;;;;;;:::o;4594:127::-;4668:7;4695:9;:18;4705:7;4695:18;;;;;;;;;;;;;;;;4688:25;;4594:127;;;:::o;8917:148::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9024:1:::1;8987:40;;9008:6;;;;;;;;;;;8987:40;;;;;;;;;;;;9055:1;9038:6;;:19;;;;;;;;;;;;;;;;;;8917:148::o:0;11939:32::-;;;;:::o;19140:159::-;19192:4;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19225:5:::1;19208:14;;:22;;;;;;;;;;;;;;;;;;19264:5;19241:20;;:28;;;;;;;;;;;;;;;;;;19287:4;19280:11;;19140:159:::0;:::o;17386:202::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17518:4:::1;17476:31;:39;17508:6;17476:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17567:6;17538:42;;;17575:4;17538:42;;;;;;:::i;:::-;;;;;;;;17386:202:::0;;:::o;15727:272::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15810:13:::1;;;;;;;;;;;15809:14;15801:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15879:4;15863:13;;:20;;;;;;;;;;;;;;;;;;15908:4;15894:11;;:18;;;;;;;;;;;;;;;;;;15944:12;15923:18;:33;;;;15980:11;15967:10;:24;;;;15727:272:::0;:::o;8275:79::-;8313:7;8340:6;;;;;;;;;;;8333:13;;8275:79;:::o;16099:101::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16185:7:::1;16171:11;;:21;;;;;;;;;;;;;;;;;;16099:101:::0;:::o;4258:104::-;4314:13;4347:7;4340:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4258:104;:::o;11853:42::-;11890:5;11853:42;:::o;18102:251::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18211:6:::1;18203:14;;:4;:14;;::::0;18195:96:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18304:41;18333:4;18339:5;18304:28;:41::i;:::-;18102:251:::0;;:::o;6052:413::-;6145:4;6162:24;6189:11;:25;6201:12;:10;:12::i;:::-;6189:25;;;;;;;;;;;;;;;:34;6215:7;6189:34;;;;;;;;;;;;;;;;6162:61;;6262:15;6242:16;:35;;6234:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6355:67;6364:12;:10;:12::i;:::-;6378:7;6406:15;6387:16;:34;6355:8;:67::i;:::-;6453:4;6446:11;;;6052:413;;;;:::o;4729:175::-;4815:4;4832:42;4842:12;:10;:12::i;:::-;4856:9;4867:6;4832:9;:42::i;:::-;4892:4;4885:11;;4729:175;;;;:::o;12432:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;25733:435::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25870:12:::1;:19;25852:7;:14;:37;25844:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;25960:3;25943:7;:14;:20;25935:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;26037:9;26033:126;26056:7;:14;26052:1;:18;26033:126;;;26091:56;26107:10;26119:7;26127:1;26119:10;;;;;;;;:::i;:::-;;;;;;;;26131:12;26144:1;26131:15;;;;;;;;:::i;:::-;;;;;;;;26091;:56::i;:::-;26072:3;;;;;:::i;:::-;;;;26033:126;;;;25733:435:::0;;:::o;12702:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;12022:27::-;;;;:::o;11538:33::-;;;;;;;;;;;;;:::o;17596:184::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17712:8:::1;17681:19;:28;17701:7;17681:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17754:7;17738:34;;;17763:8;17738:34;;;;;;:::i;:::-;;;;;;;;17596:184:::0;;:::o;16476:235::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16603:10:::1;:8;:10::i;:::-;16597:2;:16;;;;:::i;:::-;16591:3;16587:1;16571:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;16570:44;;;;:::i;:::-;16561:6;:53;16553:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;16692:10;:8;:10::i;:::-;16686:2;:16;;;;:::i;:::-;16676:6;:27;;;;:::i;:::-;16664:9;:39;;;;16476:235:::0;:::o;17788:306::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17907:9:::1;17903:115;17926:8;;:15;;17922:1;:19;17903:115;;;17998:8;17963:19;:32;17983:8;;17992:1;17983:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17963:32;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;17943:3;;;;;:::i;:::-;;;;17903:115;;;;18035:51;18067:8;;18077;18035:51;;;;;;;;:::i;:::-;;;;;;;;17788:306:::0;;;:::o;11801:39::-;;;;;;;;;;;;;:::o;11108:35::-;;;;:::o;12094:30::-;;;;:::o;11904:28::-;;;;:::o;4912:151::-;5001:7;5028:11;:18;5040:5;5028:18;;;;;;;;;;;;;;;:27;5047:7;5028:27;;;;;;;;;;;;;;;;5021:34;;4912:151;;;;:::o;11150:33::-;;;;:::o;15535:134::-;15595:4;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15634:5:::1;15611:20;;:28;;;;;;;;;;;;;;;;;;15657:4;15650:11;;15535:134:::0;:::o;25340:189::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25424:9:::1;25420:102;25443:10;:17;25439:1;:21;25420:102;;;25505:5;25481:6;:21;25488:10;25499:1;25488:13;;;;;;;;:::i;:::-;;;;;;;;25481:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25462:3;;;;;:::i;:::-;;;;25420:102;;;;25340:189:::0;:::o;11312:37::-;;;;:::o;12056:31::-;;;;:::o;9220:244::-;8497:12;:10;:12::i;:::-;8487:22;;:6;;;;;;;;;;;:22;;;8479:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9329:1:::1;9309:22;;:8;:22;;::::0;9301:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9419:8;9390:38;;9411:6;;;;;;;;;;;9390:38;;;;;;;;;;;;9448:8;9439:6;;:17;;;;;;;;;;;;;;;;;;9220:244:::0;:::o;11190:24::-;;;;:::o;12137:34::-;;;;:::o;11064:31::-;;;;;;;;;;;;;:::o;98:98::-;151:7;178:10;171:17;;98:98;:::o;7392:380::-;7545:1;7528:19;;:5;:19;;;7520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7626:1;7607:21;;:7;:21;;;7599:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7710:6;7680:11;:18;7692:5;7680:18;;;;;;;;;;;;;;;:27;7699:7;7680:27;;;;;;;;;;;;;;;:36;;;;7748:7;7732:32;;7741:5;7732:32;;;7757:6;7732:32;;;;;;:::i;:::-;;;;;;;;7392:380;;;:::o;19311:4392::-;19459:1;19443:18;;:4;:18;;;19435:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19536:1;19522:16;;:2;:16;;;19514:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19598:6;:10;19605:2;19598:10;;;;;;;;;;;;;;;;;;;;;;;;;19597:11;:28;;;;;19613:6;:12;19620:4;19613:12;;;;;;;;;;;;;;;;;;;;;;;;;19612:13;19597:28;19589:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;19664:1;19654:6;:11;19651:92;;19682:28;19698:4;19704:2;19708:1;19682:15;:28::i;:::-;19725:7;;19651:92;19767:13;;;;;;;;;;;19763:136;;19804:19;:25;19824:4;19804:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19833:19;:23;19853:2;19833:23;;;;;;;;;;;;;;;;;;;;;;;;;19804:52;19796:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;19763:136;19922:14;;;;;;;;;;;19919:1657;;;19982:7;:5;:7::i;:::-;19974:15;;:4;:15;;;;:49;;;;;20016:7;:5;:7::i;:::-;20010:13;;:2;:13;;;;19974:49;:86;;;;;20058:1;20044:16;;:2;:16;;;;19974:86;:128;;;;;20095:6;20081:21;;:2;:21;;;;19974:128;:158;;;;;20124:8;;;;;;;;;;;20123:9;19974:158;19952:1613;;;20306:20;;;;;;;;;;;20302:418;;;20405:12;20400:2;20358:28;:39;20387:9;20358:39;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;:59;20350:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;20486:9;20472:24;;:2;:24;;;;:49;;;;;20514:6;20500:21;;:2;:21;;;;20472:49;20468:233;;;20591:12;20549:28;:39;20578:9;20549:39;;;;;;;;;;;;;;;:54;;;;20665:12;20630:28;:32;20659:2;20630:32;;;;;;;;;;;;;;;:47;;;;20468:233;20302:418;20788:25;:31;20814:4;20788:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20824:31;:35;20856:2;20824:35;;;;;;;;;;;;;;;;;;;;;;;;;20823:36;20788:71;20784:766;;;20902:20;;20892:6;:30;;20884:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;21037:9;;21020:13;21030:2;21020:9;:13::i;:::-;21011:6;:22;;;;:::i;:::-;:35;;21003:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;20784:766;;;21155:25;:29;21181:2;21155:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;21189:31;:37;21221:4;21189:37;;;;;;;;;;;;;;;;;;;;;;;;;21188:38;21155:71;21151:399;;;21269:20;;21259:6;:30;;21251:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;21151:399;;;21395:31;:35;21427:2;21395:35;;;;;;;;;;;;;;;;;;;;;;;;;21391:159;;21489:9;;21472:13;21482:2;21472:9;:13::i;:::-;21463:6;:22;;;;:::i;:::-;:35;;21455:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21391:159;21151:399;20784:766;19952:1613;19919:1657;21582:28;21613:24;21631:4;21613:9;:24::i;:::-;21582:55;;21658:12;21697:18;;21673:20;:42;;21658:57;;21746:7;:35;;;;;21770:11;;;;;;;;;;;21746:35;:61;;;;;21799:8;;;;;;;;;;;21798:9;21746:61;:110;;;;;21825:25;:31;21851:4;21825:31;;;;;;;;;;;;;;;;;;;;;;;;;21824:32;21746:110;:153;;;;;21874:19;:25;21894:4;21874:25;;;;;;;;;;;;;;;;;;;;;;;;;21873:26;21746:153;:194;;;;;21917:19;:23;21937:2;21917:23;;;;;;;;;;;;;;;;;;;;;;;;;21916:24;21746:194;21728:322;;;21978:4;21967:8;;:15;;;;;;;;;;;;;;;;;;21997:10;:8;:10::i;:::-;22033:5;22022:8;;:16;;;;;;;;;;;;;;;;;;21728:322;22062:12;22078:8;;;;;;;;;;;22077:9;22062:24;;22187:19;:25;22207:4;22187:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22216:19;:23;22236:2;22216:23;;;;;;;;;;;;;;;;;;;;;;;;;22187:52;22184:99;;;22266:5;22256:15;;22184:99;22303:12;22394:7;22391:1259;;;22455:12;22441:10;;22420:18;;:31;;;;:::i;:::-;:47;;:117;;;;;22472:25;:29;22498:2;22472:29;;;;;;;;;;;;;;;;;;;;;;;;;:64;;;;22505:25;:31;22531:4;22505:31;;;;;;;;;;;;;;;;;;;;;;;;;22472:64;22420:117;22417:1076;;;11890:5;22573:12;;22564:6;:21;;;;:::i;:::-;:34;;;;:::i;:::-;22557:41;;22664:12;;22646:15;;22639:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;22617:18;;:59;;;;;;;:::i;:::-;;;;;;;;22744:12;;22725:16;;22718:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;22695:19;;:61;;;;;;;:::i;:::-;;;;;;;;22775:11;22792:2;22775:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22417:1076;;;22860:25;:29;22886:2;22860:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;22909:1;22893:13;;:17;22860:50;22856:637;;;11890:5;22946:13;;22937:6;:22;;;;:::i;:::-;:35;;;;:::i;:::-;22930:42;;23039:13;;23020:16;;23013:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;22991:18;;:61;;;;;;;:::i;:::-;;;;;;;;23121:13;;23101:17;;23094:4;:24;;;;:::i;:::-;:40;;;;:::i;:::-;23071:19;;:63;;;;;;;:::i;:::-;;;;;;;;22856:637;;;23209:25;:31;23235:4;23209:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23259:1;23244:12;;:16;23209:51;23206:287;;;11890:5;23294:12;;23285:6;:21;;;;:::i;:::-;:34;;;;:::i;:::-;23278:41;;23385:12;;23367:15;;23360:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;23338:18;;:59;;;;;;;:::i;:::-;;;;;;;;23465:12;;23446:16;;23439:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;23416:19;;:61;;;;;;;:::i;:::-;;;;;;;;23206:287;22856:637;22417:1076;23519:1;23512:4;:8;23509:93;;;23544:42;23560:4;23574;23581;23544:15;:42::i;:::-;23509:93;23634:4;23624:14;;;;;:::i;:::-;;;22391:1259;23662:33;23678:4;23684:2;23688:6;23662:15;:33::i;:::-;19424:4279;;;;19311:4392;;;;:::o;18361:237::-;18478:5;18444:25;:31;18470:4;18444:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18496:38;18522:4;18528:5;18496:25;:38::i;:::-;18584:5;18550:40;;18578:4;18550:40;;;;;;;;;;;;18361:237;;:::o;6473:614::-;6631:1;6613:20;;:6;:20;;;6605:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6715:1;6694:23;;:9;:23;;;6686:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6770:21;6794:9;:17;6804:6;6794:17;;;;;;;;;;;;;;;;6770:41;;6847:6;6830:13;:23;;6822:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6968:6;6952:13;:22;6932:9;:17;6942:6;6932:17;;;;;;;;;;;;;;;:42;;;;7020:6;6996:9;:20;7006:9;6996:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7061:9;7044:35;;7053:6;7044:35;;;7072:6;7044:35;;;;;;:::i;:::-;;;;;;;;6594:493;6473:614;;;:::o;24240:761::-;24279:23;24305:24;24323:4;24305:9;:24::i;:::-;24279:50;;24340:25;24389:19;;24368:18;;:40;;;;:::i;:::-;24340:68;;24451:1;24432:15;:20;:46;;;;24477:1;24456:17;:22;24432:46;24429:60;;;24481:7;;;;24429:60;24527:1;24506:18;;:22;24503:396;;;24544:23;24609:17;24588:18;;24570:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;24544:82;;24641:55;24665:4;24672:6;24680:15;24641;:55::i;:::-;24723:6;24715:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24711:37;24781:15;24762:34;;;;;:::i;:::-;;;24832:18;;24811:39;;;;;:::i;:::-;;;24886:1;24865:18;:22;;;;24529:370;24503:396;24932:1;24914:15;:19;24911:83;;;24949:33;24966:15;24949:16;:33::i;:::-;24911:83;24268:733;;24240:761;:::o;23711:521::-;23839:21;23877:1;23863:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23839:40;;23908:4;23890;23895:1;23890:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23934:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23924:4;23929:1;23924:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;23989:9;:60;;;24064:11;24090:1;24134:4;24161:16;;;;;;;;;;;24193:15;23989:230;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23766:466;23711:521;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:60::-;2672:3;2693:5;2686:12;;2644:60;;;:::o;2710:142::-;2760:9;2793:53;2811:34;2820:24;2838:5;2820:24;:::i;:::-;2811:34;:::i;:::-;2793:53;:::i;:::-;2780:66;;2710:142;;;:::o;2858:126::-;2908:9;2941:37;2972:5;2941:37;:::i;:::-;2928:50;;2858:126;;;:::o;2990:144::-;3058:9;3091:37;3122:5;3091:37;:::i;:::-;3078:50;;2990:144;;;:::o;3140:167::-;3245:55;3294:5;3245:55;:::i;:::-;3240:3;3233:68;3140:167;;:::o;3313:258::-;3424:4;3462:2;3451:9;3447:18;3439:26;;3475:89;3561:1;3550:9;3546:17;3537:6;3475:89;:::i;:::-;3313:258;;;;:::o;3577:96::-;3614:7;3643:24;3661:5;3643:24;:::i;:::-;3632:35;;3577:96;;;:::o;3679:122::-;3752:24;3770:5;3752:24;:::i;:::-;3745:5;3742:35;3732:63;;3791:1;3788;3781:12;3732:63;3679:122;:::o;3807:139::-;3853:5;3891:6;3878:20;3869:29;;3907:33;3934:5;3907:33;:::i;:::-;3807:139;;;;:::o;3952:474::-;4020:6;4028;4077:2;4065:9;4056:7;4052:23;4048:32;4045:119;;;4083:79;;:::i;:::-;4045:119;4203:1;4228:53;4273:7;4264:6;4253:9;4249:22;4228:53;:::i;:::-;4218:63;;4174:117;4330:2;4356:53;4401:7;4392:6;4381:9;4377:22;4356:53;:::i;:::-;4346:63;;4301:118;3952:474;;;;;:::o;4432:90::-;4466:7;4509:5;4502:13;4495:21;4484:32;;4432:90;;;:::o;4528:109::-;4609:21;4624:5;4609:21;:::i;:::-;4604:3;4597:34;4528:109;;:::o;4643:210::-;4730:4;4768:2;4757:9;4753:18;4745:26;;4781:65;4843:1;4832:9;4828:17;4819:6;4781:65;:::i;:::-;4643:210;;;;:::o;4859:118::-;4946:24;4964:5;4946:24;:::i;:::-;4941:3;4934:37;4859:118;;:::o;4983:222::-;5076:4;5114:2;5103:9;5099:18;5091:26;;5127:71;5195:1;5184:9;5180:17;5171:6;5127:71;:::i;:::-;4983:222;;;;:::o;5211:117::-;5320:1;5317;5310:12;5334:180;5382:77;5379:1;5372:88;5479:4;5476:1;5469:15;5503:4;5500:1;5493:15;5520:281;5603:27;5625:4;5603:27;:::i;:::-;5595:6;5591:40;5733:6;5721:10;5718:22;5697:18;5685:10;5682:34;5679:62;5676:88;;;5744:18;;:::i;:::-;5676:88;5784:10;5780:2;5773:22;5563:238;5520:281;;:::o;5807:129::-;5841:6;5868:20;;:::i;:::-;5858:30;;5897:33;5925:4;5917:6;5897:33;:::i;:::-;5807:129;;;:::o;5942:311::-;6019:4;6109:18;6101:6;6098:30;6095:56;;;6131:18;;:::i;:::-;6095:56;6181:4;6173:6;6169:17;6161:25;;6241:4;6235;6231:15;6223:23;;5942:311;;;:::o;6259:117::-;6368:1;6365;6358:12;6399:710;6495:5;6520:81;6536:64;6593:6;6536:64;:::i;:::-;6520:81;:::i;:::-;6511:90;;6621:5;6650:6;6643:5;6636:21;6684:4;6677:5;6673:16;6666:23;;6737:4;6729:6;6725:17;6717:6;6713:30;6766:3;6758:6;6755:15;6752:122;;;6785:79;;:::i;:::-;6752:122;6900:6;6883:220;6917:6;6912:3;6909:15;6883:220;;;6992:3;7021:37;7054:3;7042:10;7021:37;:::i;:::-;7016:3;7009:50;7088:4;7083:3;7079:14;7072:21;;6959:144;6943:4;6938:3;6934:14;6927:21;;6883:220;;;6887:21;6501:608;;6399:710;;;;;:::o;7132:370::-;7203:5;7252:3;7245:4;7237:6;7233:17;7229:27;7219:122;;7260:79;;:::i;:::-;7219:122;7377:6;7364:20;7402:94;7492:3;7484:6;7477:4;7469:6;7465:17;7402:94;:::i;:::-;7393:103;;7209:293;7132:370;;;;:::o;7508:539::-;7592:6;7641:2;7629:9;7620:7;7616:23;7612:32;7609:119;;;7647:79;;:::i;:::-;7609:119;7795:1;7784:9;7780:17;7767:31;7825:18;7817:6;7814:30;7811:117;;;7847:79;;:::i;:::-;7811:117;7952:78;8022:7;8013:6;8002:9;7998:22;7952:78;:::i;:::-;7942:88;;7738:302;7508:539;;;;:::o;8053:329::-;8112:6;8161:2;8149:9;8140:7;8136:23;8132:32;8129:119;;;8167:79;;:::i;:::-;8129:119;8287:1;8312:53;8357:7;8348:6;8337:9;8333:22;8312:53;:::i;:::-;8302:63;;8258:117;8053:329;;;;:::o;8388:::-;8447:6;8496:2;8484:9;8475:7;8471:23;8467:32;8464:119;;;8502:79;;:::i;:::-;8464:119;8622:1;8647:53;8692:7;8683:6;8672:9;8668:22;8647:53;:::i;:::-;8637:63;;8593:117;8388:329;;;;:::o;8723:619::-;8800:6;8808;8816;8865:2;8853:9;8844:7;8840:23;8836:32;8833:119;;;8871:79;;:::i;:::-;8833:119;8991:1;9016:53;9061:7;9052:6;9041:9;9037:22;9016:53;:::i;:::-;9006:63;;8962:117;9118:2;9144:53;9189:7;9180:6;9169:9;9165:22;9144:53;:::i;:::-;9134:63;;9089:118;9246:2;9272:53;9317:7;9308:6;9297:9;9293:22;9272:53;:::i;:::-;9262:63;;9217:118;8723:619;;;;;:::o;9348:86::-;9383:7;9423:4;9416:5;9412:16;9401:27;;9348:86;;;:::o;9440:112::-;9523:22;9539:5;9523:22;:::i;:::-;9518:3;9511:35;9440:112;;:::o;9558:214::-;9647:4;9685:2;9674:9;9670:18;9662:26;;9698:67;9762:1;9751:9;9747:17;9738:6;9698:67;:::i;:::-;9558:214;;;;:::o;9778:118::-;9865:24;9883:5;9865:24;:::i;:::-;9860:3;9853:37;9778:118;;:::o;9902:222::-;9995:4;10033:2;10022:9;10018:18;10010:26;;10046:71;10114:1;10103:9;10099:17;10090:6;10046:71;:::i;:::-;9902:222;;;;:::o;10130:116::-;10200:21;10215:5;10200:21;:::i;:::-;10193:5;10190:32;10180:60;;10236:1;10233;10226:12;10180:60;10130:116;:::o;10252:133::-;10295:5;10333:6;10320:20;10311:29;;10349:30;10373:5;10349:30;:::i;:::-;10252:133;;;;:::o;10391:468::-;10456:6;10464;10513:2;10501:9;10492:7;10488:23;10484:32;10481:119;;;10519:79;;:::i;:::-;10481:119;10639:1;10664:53;10709:7;10700:6;10689:9;10685:22;10664:53;:::i;:::-;10654:63;;10610:117;10766:2;10792:50;10834:7;10825:6;10814:9;10810:22;10792:50;:::i;:::-;10782:60;;10737:115;10391:468;;;;;:::o;10865:323::-;10921:6;10970:2;10958:9;10949:7;10945:23;10941:32;10938:119;;;10976:79;;:::i;:::-;10938:119;11096:1;11121:50;11163:7;11154:6;11143:9;11139:22;11121:50;:::i;:::-;11111:60;;11067:114;10865:323;;;;:::o;11194:311::-;11271:4;11361:18;11353:6;11350:30;11347:56;;;11383:18;;:::i;:::-;11347:56;11433:4;11425:6;11421:17;11413:25;;11493:4;11487;11483:15;11475:23;;11194:311;;;:::o;11528:710::-;11624:5;11649:81;11665:64;11722:6;11665:64;:::i;:::-;11649:81;:::i;:::-;11640:90;;11750:5;11779:6;11772:5;11765:21;11813:4;11806:5;11802:16;11795:23;;11866:4;11858:6;11854:17;11846:6;11842:30;11895:3;11887:6;11884:15;11881:122;;;11914:79;;:::i;:::-;11881:122;12029:6;12012:220;12046:6;12041:3;12038:15;12012:220;;;12121:3;12150:37;12183:3;12171:10;12150:37;:::i;:::-;12145:3;12138:50;12217:4;12212:3;12208:14;12201:21;;12088:144;12072:4;12067:3;12063:14;12056:21;;12012:220;;;12016:21;11630:608;;11528:710;;;;;:::o;12261:370::-;12332:5;12381:3;12374:4;12366:6;12362:17;12358:27;12348:122;;12389:79;;:::i;:::-;12348:122;12506:6;12493:20;12531:94;12621:3;12613:6;12606:4;12598:6;12594:17;12531:94;:::i;:::-;12522:103;;12338:293;12261:370;;;;:::o;12637:894::-;12755:6;12763;12812:2;12800:9;12791:7;12787:23;12783:32;12780:119;;;12818:79;;:::i;:::-;12780:119;12966:1;12955:9;12951:17;12938:31;12996:18;12988:6;12985:30;12982:117;;;13018:79;;:::i;:::-;12982:117;13123:78;13193:7;13184:6;13173:9;13169:22;13123:78;:::i;:::-;13113:88;;12909:302;13278:2;13267:9;13263:18;13250:32;13309:18;13301:6;13298:30;13295:117;;;13331:79;;:::i;:::-;13295:117;13436:78;13506:7;13497:6;13486:9;13482:22;13436:78;:::i;:::-;13426:88;;13221:303;12637:894;;;;;:::o;13537:117::-;13646:1;13643;13636:12;13677:568;13750:8;13760:6;13810:3;13803:4;13795:6;13791:17;13787:27;13777:122;;13818:79;;:::i;:::-;13777:122;13931:6;13918:20;13908:30;;13961:18;13953:6;13950:30;13947:117;;;13983:79;;:::i;:::-;13947:117;14097:4;14089:6;14085:17;14073:29;;14151:3;14143:4;14135:6;14131:17;14121:8;14117:32;14114:41;14111:128;;;14158:79;;:::i;:::-;14111:128;13677:568;;;;;:::o;14251:698::-;14343:6;14351;14359;14408:2;14396:9;14387:7;14383:23;14379:32;14376:119;;;14414:79;;:::i;:::-;14376:119;14562:1;14551:9;14547:17;14534:31;14592:18;14584:6;14581:30;14578:117;;;14614:79;;:::i;:::-;14578:117;14727:80;14799:7;14790:6;14779:9;14775:22;14727:80;:::i;:::-;14709:98;;;;14505:312;14856:2;14882:50;14924:7;14915:6;14904:9;14900:22;14882:50;:::i;:::-;14872:60;;14827:115;14251:698;;;;;:::o;14955:474::-;15023:6;15031;15080:2;15068:9;15059:7;15055:23;15051:32;15048:119;;;15086:79;;:::i;:::-;15048:119;15206:1;15231:53;15276:7;15267:6;15256:9;15252:22;15231:53;:::i;:::-;15221:63;;15177:117;15333:2;15359:53;15404:7;15395:6;15384:9;15380:22;15359:53;:::i;:::-;15349:63;;15304:118;14955:474;;;;;:::o;15435:182::-;15575:34;15571:1;15563:6;15559:14;15552:58;15435:182;:::o;15623:366::-;15765:3;15786:67;15850:2;15845:3;15786:67;:::i;:::-;15779:74;;15862:93;15951:3;15862:93;:::i;:::-;15980:2;15975:3;15971:12;15964:19;;15623:366;;;:::o;15995:419::-;16161:4;16199:2;16188:9;16184:18;16176:26;;16248:9;16242:4;16238:20;16234:1;16223:9;16219:17;16212:47;16276:131;16402:4;16276:131;:::i;:::-;16268:139;;15995:419;;;:::o;16420:180::-;16468:77;16465:1;16458:88;16565:4;16562:1;16555:15;16589:4;16586:1;16579:15;16606:191;16646:3;16665:20;16683:1;16665:20;:::i;:::-;16660:25;;16699:20;16717:1;16699:20;:::i;:::-;16694:25;;16742:1;16739;16735:9;16728:16;;16763:3;16760:1;16757:10;16754:36;;;16770:18;;:::i;:::-;16754:36;16606:191;;;;:::o;16803:180::-;16943:32;16939:1;16931:6;16927:14;16920:56;16803:180;:::o;16989:366::-;17131:3;17152:67;17216:2;17211:3;17152:67;:::i;:::-;17145:74;;17228:93;17317:3;17228:93;:::i;:::-;17346:2;17341:3;17337:12;17330:19;;16989:366;;;:::o;17361:419::-;17527:4;17565:2;17554:9;17550:18;17542:26;;17614:9;17608:4;17604:20;17600:1;17589:9;17585:17;17578:47;17642:131;17768:4;17642:131;:::i;:::-;17634:139;;17361:419;;;:::o;17786:180::-;17834:77;17831:1;17824:88;17931:4;17928:1;17921:15;17955:4;17952:1;17945:15;17972:320;18016:6;18053:1;18047:4;18043:12;18033:22;;18100:1;18094:4;18090:12;18121:18;18111:81;;18177:4;18169:6;18165:17;18155:27;;18111:81;18239:2;18231:6;18228:14;18208:18;18205:38;18202:84;;18258:18;;:::i;:::-;18202:84;18023:269;17972:320;;;:::o;18298:180::-;18346:77;18343:1;18336:88;18443:4;18440:1;18433:15;18467:4;18464:1;18457:15;18484:233;18523:3;18546:24;18564:5;18546:24;:::i;:::-;18537:33;;18592:66;18585:5;18582:77;18579:103;;18662:18;;:::i;:::-;18579:103;18709:1;18702:5;18698:13;18691:20;;18484:233;;;:::o;18723:102::-;18765:8;18812:5;18809:1;18805:13;18784:34;;18723:102;;;:::o;18831:848::-;18892:5;18899:4;18923:6;18914:15;;18947:5;18938:14;;18961:712;18982:1;18972:8;18969:15;18961:712;;;19077:4;19072:3;19068:14;19062:4;19059:24;19056:50;;;19086:18;;:::i;:::-;19056:50;19136:1;19126:8;19122:16;19119:451;;;19551:4;19544:5;19540:16;19531:25;;19119:451;19601:4;19595;19591:15;19583:23;;19631:32;19654:8;19631:32;:::i;:::-;19619:44;;18961:712;;;18831:848;;;;;;;:::o;19685:1073::-;19739:5;19930:8;19920:40;;19951:1;19942:10;;19953:5;;19920:40;19979:4;19969:36;;19996:1;19987:10;;19998:5;;19969:36;20065:4;20113:1;20108:27;;;;20149:1;20144:191;;;;20058:277;;20108:27;20126:1;20117:10;;20128:5;;;20144:191;20189:3;20179:8;20176:17;20173:43;;;20196:18;;:::i;:::-;20173:43;20245:8;20242:1;20238:16;20229:25;;20280:3;20273:5;20270:14;20267:40;;;20287:18;;:::i;:::-;20267:40;20320:5;;;20058:277;;20444:2;20434:8;20431:16;20425:3;20419:4;20416:13;20412:36;20394:2;20384:8;20381:16;20376:2;20370:4;20367:12;20363:35;20347:111;20344:246;;;20500:8;20494:4;20490:19;20481:28;;20535:3;20528:5;20525:14;20522:40;;;20542:18;;:::i;:::-;20522:40;20575:5;;20344:246;20615:42;20653:3;20643:8;20637:4;20634:1;20615:42;:::i;:::-;20600:57;;;;20689:4;20684:3;20680:14;20673:5;20670:25;20667:51;;;20698:18;;:::i;:::-;20667:51;20747:4;20740:5;20736:16;20727:25;;19685:1073;;;;;;:::o;20764:281::-;20822:5;20846:23;20864:4;20846:23;:::i;:::-;20838:31;;20890:25;20906:8;20890:25;:::i;:::-;20878:37;;20934:104;20971:66;20961:8;20955:4;20934:104;:::i;:::-;20925:113;;20764:281;;;;:::o;21051:410::-;21091:7;21114:20;21132:1;21114:20;:::i;:::-;21109:25;;21148:20;21166:1;21148:20;:::i;:::-;21143:25;;21203:1;21200;21196:9;21225:30;21243:11;21225:30;:::i;:::-;21214:41;;21404:1;21395:7;21391:15;21388:1;21385:22;21365:1;21358:9;21338:83;21315:139;;21434:18;;:::i;:::-;21315:139;21099:362;21051:410;;;;:::o;21467:180::-;21515:77;21512:1;21505:88;21612:4;21609:1;21602:15;21636:4;21633:1;21626:15;21653:185;21693:1;21710:20;21728:1;21710:20;:::i;:::-;21705:25;;21744:20;21762:1;21744:20;:::i;:::-;21739:25;;21783:1;21773:35;;21788:18;;:::i;:::-;21773:35;21830:1;21827;21823:9;21818:14;;21653:185;;;;:::o;21844:234::-;21984:34;21980:1;21972:6;21968:14;21961:58;22053:17;22048:2;22040:6;22036:15;22029:42;21844:234;:::o;22084:366::-;22226:3;22247:67;22311:2;22306:3;22247:67;:::i;:::-;22240:74;;22323:93;22412:3;22323:93;:::i;:::-;22441:2;22436:3;22432:12;22425:19;;22084:366;;;:::o;22456:419::-;22622:4;22660:2;22649:9;22645:18;22637:26;;22709:9;22703:4;22699:20;22695:1;22684:9;22680:17;22673:47;22737:131;22863:4;22737:131;:::i;:::-;22729:139;;22456:419;;;:::o;22881:227::-;23021:34;23017:1;23009:6;23005:14;22998:58;23090:10;23085:2;23077:6;23073:15;23066:35;22881:227;:::o;23114:366::-;23256:3;23277:67;23341:2;23336:3;23277:67;:::i;:::-;23270:74;;23353:93;23442:3;23353:93;:::i;:::-;23471:2;23466:3;23462:12;23455:19;;23114:366;;;:::o;23486:419::-;23652:4;23690:2;23679:9;23675:18;23667:26;;23739:9;23733:4;23729:20;23725:1;23714:9;23710:17;23703:47;23767:131;23893:4;23767:131;:::i;:::-;23759:139;;23486:419;;;:::o;23911:174::-;24051:26;24047:1;24039:6;24035:14;24028:50;23911:174;:::o;24091:366::-;24233:3;24254:67;24318:2;24313:3;24254:67;:::i;:::-;24247:74;;24330:93;24419:3;24330:93;:::i;:::-;24448:2;24443:3;24439:12;24432:19;;24091:366;;;:::o;24463:419::-;24629:4;24667:2;24656:9;24652:18;24644:26;;24716:9;24710:4;24706:20;24702:1;24691:9;24687:17;24680:47;24744:131;24870:4;24744:131;:::i;:::-;24736:139;;24463:419;;;:::o;24888:166::-;25028:18;25024:1;25016:6;25012:14;25005:42;24888:166;:::o;25060:366::-;25202:3;25223:67;25287:2;25282:3;25223:67;:::i;:::-;25216:74;;25299:93;25388:3;25299:93;:::i;:::-;25417:2;25412:3;25408:12;25401:19;;25060:366;;;:::o;25432:419::-;25598:4;25636:2;25625:9;25621:18;25613:26;;25685:9;25679:4;25675:20;25671:1;25660:9;25656:17;25649:47;25713:131;25839:4;25713:131;:::i;:::-;25705:139;;25432:419;;;:::o;25857:174::-;25997:26;25993:1;25985:6;25981:14;25974:50;25857:174;:::o;26037:366::-;26179:3;26200:67;26264:2;26259:3;26200:67;:::i;:::-;26193:74;;26276:93;26365:3;26276:93;:::i;:::-;26394:2;26389:3;26385:12;26378:19;;26037:366;;;:::o;26409:419::-;26575:4;26613:2;26602:9;26598:18;26590:26;;26662:9;26656:4;26652:20;26648:1;26637:9;26633:17;26626:47;26690:131;26816:4;26690:131;:::i;:::-;26682:139;;26409:419;;;:::o;26834:293::-;26974:34;26970:1;26962:6;26958:14;26951:58;27043:34;27038:2;27030:6;27026:15;27019:59;27112:7;27107:2;27099:6;27095:15;27088:32;26834:293;:::o;27133:366::-;27275:3;27296:67;27360:2;27355:3;27296:67;:::i;:::-;27289:74;;27372:93;27461:3;27372:93;:::i;:::-;27490:2;27485:3;27481:12;27474:19;;27133:366;;;:::o;27505:419::-;27671:4;27709:2;27698:9;27694:18;27686:26;;27758:9;27752:4;27748:20;27744:1;27733:9;27729:17;27722:47;27786:131;27912:4;27786:131;:::i;:::-;27778:139;;27505:419;;;:::o;27930:224::-;28070:34;28066:1;28058:6;28054:14;28047:58;28139:7;28134:2;28126:6;28122:15;28115:32;27930:224;:::o;28160:366::-;28302:3;28323:67;28387:2;28382:3;28323:67;:::i;:::-;28316:74;;28399:93;28488:3;28399:93;:::i;:::-;28517:2;28512:3;28508:12;28501:19;;28160:366;;;:::o;28532:419::-;28698:4;28736:2;28725:9;28721:18;28713:26;;28785:9;28779:4;28775:20;28771:1;28760:9;28756:17;28749:47;28813:131;28939:4;28813:131;:::i;:::-;28805:139;;28532:419;;;:::o;28957:180::-;29097:32;29093:1;29085:6;29081:14;29074:56;28957:180;:::o;29143:366::-;29285:3;29306:67;29370:2;29365:3;29306:67;:::i;:::-;29299:74;;29382:93;29471:3;29382:93;:::i;:::-;29500:2;29495:3;29491:12;29484:19;;29143:366;;;:::o;29515:419::-;29681:4;29719:2;29708:9;29704:18;29696:26;;29768:9;29762:4;29758:20;29754:1;29743:9;29739:17;29732:47;29796:131;29922:4;29796:131;:::i;:::-;29788:139;;29515:419;;;:::o;29940:241::-;30080:34;30076:1;30068:6;30064:14;30057:58;30149:24;30144:2;30136:6;30132:15;30125:49;29940:241;:::o;30187:366::-;30329:3;30350:67;30414:2;30409:3;30350:67;:::i;:::-;30343:74;;30426:93;30515:3;30426:93;:::i;:::-;30544:2;30539:3;30535:12;30528:19;;30187:366;;;:::o;30559:419::-;30725:4;30763:2;30752:9;30748:18;30740:26;;30812:9;30806:4;30802:20;30798:1;30787:9;30783:17;30776:47;30840:131;30966:4;30840:131;:::i;:::-;30832:139;;30559:419;;;:::o;30984:221::-;31124:34;31120:1;31112:6;31108:14;31101:58;31193:4;31188:2;31180:6;31176:15;31169:29;30984:221;:::o;31211:366::-;31353:3;31374:67;31438:2;31433:3;31374:67;:::i;:::-;31367:74;;31450:93;31539:3;31450:93;:::i;:::-;31568:2;31563:3;31559:12;31552:19;;31211:366;;;:::o;31583:419::-;31749:4;31787:2;31776:9;31772:18;31764:26;;31836:9;31830:4;31826:20;31822:1;31811:9;31807:17;31800:47;31864:131;31990:4;31864:131;:::i;:::-;31856:139;;31583:419;;;:::o;32008:184::-;32107:11;32141:6;32136:3;32129:19;32181:4;32176:3;32172:14;32157:29;;32008:184;;;;:::o;32198:102::-;32267:4;32290:3;32282:11;;32198:102;;;:::o;32306:108::-;32383:24;32401:5;32383:24;:::i;:::-;32378:3;32371:37;32306:108;;:::o;32420:179::-;32489:10;32510:46;32552:3;32544:6;32510:46;:::i;:::-;32588:4;32583:3;32579:14;32565:28;;32420:179;;;;:::o;32605:122::-;32657:5;32682:39;32717:2;32712:3;32708:12;32703:3;32682:39;:::i;:::-;32673:48;;32605:122;;;;:::o;32733:115::-;32805:4;32837;32832:3;32828:14;32820:22;;32733:115;;;:::o;32884:699::-;33013:3;33036:86;33115:6;33110:3;33036:86;:::i;:::-;33029:93;;33146:58;33198:5;33146:58;:::i;:::-;33227:7;33258:1;33243:315;33268:6;33265:1;33262:13;33243:315;;;33338:42;33373:6;33364:7;33338:42;:::i;:::-;33400:63;33459:3;33444:13;33400:63;:::i;:::-;33393:70;;33486:62;33541:6;33486:62;:::i;:::-;33476:72;;33303:255;33290:1;33287;33283:9;33278:14;;33243:315;;;33247:14;33574:3;33567:10;;33018:565;;32884:699;;;;;:::o;33589:491::-;33764:4;33802:2;33791:9;33787:18;33779:26;;33851:9;33845:4;33841:20;33837:1;33826:9;33822:17;33815:47;33879:118;33992:4;33983:6;33975;33879:118;:::i;:::-;33871:126;;34007:66;34069:2;34058:9;34054:18;34045:6;34007:66;:::i;:::-;33589:491;;;;;;:::o;34086:225::-;34226:34;34222:1;34214:6;34210:14;34203:58;34295:8;34290:2;34282:6;34278:15;34271:33;34086:225;:::o;34317:366::-;34459:3;34480:67;34544:2;34539:3;34480:67;:::i;:::-;34473:74;;34556:93;34645:3;34556:93;:::i;:::-;34674:2;34669:3;34665:12;34658:19;;34317:366;;;:::o;34689:419::-;34855:4;34893:2;34882:9;34878:18;34870:26;;34942:9;34936:4;34932:20;34928:1;34917:9;34913:17;34906:47;34970:131;35096:4;34970:131;:::i;:::-;34962:139;;34689:419;;;:::o;35114:223::-;35254:34;35250:1;35242:6;35238:14;35231:58;35323:6;35318:2;35310:6;35306:15;35299:31;35114:223;:::o;35343:366::-;35485:3;35506:67;35570:2;35565:3;35506:67;:::i;:::-;35499:74;;35582:93;35671:3;35582:93;:::i;:::-;35700:2;35695:3;35691:12;35684:19;;35343:366;;;:::o;35715:419::-;35881:4;35919:2;35908:9;35904:18;35896:26;;35968:9;35962:4;35958:20;35954:1;35943:9;35939:17;35932:47;35996:131;36122:4;35996:131;:::i;:::-;35988:139;;35715:419;;;:::o;36140:221::-;36280:34;36276:1;36268:6;36264:14;36257:58;36349:4;36344:2;36336:6;36332:15;36325:29;36140:221;:::o;36367:366::-;36509:3;36530:67;36594:2;36589:3;36530:67;:::i;:::-;36523:74;;36606:93;36695:3;36606:93;:::i;:::-;36724:2;36719:3;36715:12;36708:19;;36367:366;;;:::o;36739:419::-;36905:4;36943:2;36932:9;36928:18;36920:26;;36992:9;36986:4;36982:20;36978:1;36967:9;36963:17;36956:47;37020:131;37146:4;37020:131;:::i;:::-;37012:139;;36739:419;;;:::o;37164:224::-;37304:34;37300:1;37292:6;37288:14;37281:58;37373:7;37368:2;37360:6;37356:15;37349:32;37164:224;:::o;37394:366::-;37536:3;37557:67;37621:2;37616:3;37557:67;:::i;:::-;37550:74;;37633:93;37722:3;37633:93;:::i;:::-;37751:2;37746:3;37742:12;37735:19;;37394:366;;;:::o;37766:419::-;37932:4;37970:2;37959:9;37955:18;37947:26;;38019:9;38013:4;38009:20;38005:1;37994:9;37990:17;37983:47;38047:131;38173:4;38047:131;:::i;:::-;38039:139;;37766:419;;;:::o;38191:222::-;38331:34;38327:1;38319:6;38315:14;38308:58;38400:5;38395:2;38387:6;38383:15;38376:30;38191:222;:::o;38419:366::-;38561:3;38582:67;38646:2;38641:3;38582:67;:::i;:::-;38575:74;;38658:93;38747:3;38658:93;:::i;:::-;38776:2;38771:3;38767:12;38760:19;;38419:366;;;:::o;38791:419::-;38957:4;38995:2;38984:9;38980:18;38972:26;;39044:9;39038:4;39034:20;39030:1;39019:9;39015:17;39008:47;39072:131;39198:4;39072:131;:::i;:::-;39064:139;;38791:419;;;:::o;39216:157::-;39356:9;39352:1;39344:6;39340:14;39333:33;39216:157;:::o;39379:365::-;39521:3;39542:66;39606:1;39601:3;39542:66;:::i;:::-;39535:73;;39617:93;39706:3;39617:93;:::i;:::-;39735:2;39730:3;39726:12;39719:19;;39379:365;;;:::o;39750:419::-;39916:4;39954:2;39943:9;39939:18;39931:26;;40003:9;39997:4;39993:20;39989:1;39978:9;39974:17;39967:47;40031:131;40157:4;40031:131;:::i;:::-;40023:139;;39750:419;;;:::o;40175:176::-;40315:28;40311:1;40303:6;40299:14;40292:52;40175:176;:::o;40357:366::-;40499:3;40520:67;40584:2;40579:3;40520:67;:::i;:::-;40513:74;;40596:93;40685:3;40596:93;:::i;:::-;40714:2;40709:3;40705:12;40698:19;;40357:366;;;:::o;40729:419::-;40895:4;40933:2;40922:9;40918:18;40910:26;;40982:9;40976:4;40972:20;40968:1;40957:9;40953:17;40946:47;41010:131;41136:4;41010:131;:::i;:::-;41002:139;;40729:419;;;:::o;41154:173::-;41294:25;41290:1;41282:6;41278:14;41271:49;41154:173;:::o;41333:366::-;41475:3;41496:67;41560:2;41555:3;41496:67;:::i;:::-;41489:74;;41572:93;41661:3;41572:93;:::i;:::-;41690:2;41685:3;41681:12;41674:19;;41333:366;;;:::o;41705:419::-;41871:4;41909:2;41898:9;41894:18;41886:26;;41958:9;41952:4;41948:20;41944:1;41933:9;41929:17;41922:47;41986:131;42112:4;41986:131;:::i;:::-;41978:139;;41705:419;;;:::o;42130:240::-;42270:34;42266:1;42258:6;42254:14;42247:58;42339:23;42334:2;42326:6;42322:15;42315:48;42130:240;:::o;42376:366::-;42518:3;42539:67;42603:2;42598:3;42539:67;:::i;:::-;42532:74;;42615:93;42704:3;42615:93;:::i;:::-;42733:2;42728:3;42724:12;42717:19;;42376:366;;;:::o;42748:419::-;42914:4;42952:2;42941:9;42937:18;42929:26;;43001:9;42995:4;42991:20;42987:1;42976:9;42972:17;42965:47;43029:131;43155:4;43029:131;:::i;:::-;43021:139;;42748:419;;;:::o;43173:177::-;43313:29;43309:1;43301:6;43297:14;43290:53;43173:177;:::o;43356:366::-;43498:3;43519:67;43583:2;43578:3;43519:67;:::i;:::-;43512:74;;43595:93;43684:3;43595:93;:::i;:::-;43713:2;43708:3;43704:12;43697:19;;43356:366;;;:::o;43728:419::-;43894:4;43932:2;43921:9;43917:18;43909:26;;43981:9;43975:4;43971:20;43967:1;43956:9;43952:17;43945:47;44009:131;44135:4;44009:131;:::i;:::-;44001:139;;43728:419;;;:::o;44153:241::-;44293:34;44289:1;44281:6;44277:14;44270:58;44362:24;44357:2;44349:6;44345:15;44338:49;44153:241;:::o;44400:366::-;44542:3;44563:67;44627:2;44622:3;44563:67;:::i;:::-;44556:74;;44639:93;44728:3;44639:93;:::i;:::-;44757:2;44752:3;44748:12;44741:19;;44400:366;;;:::o;44772:419::-;44938:4;44976:2;44965:9;44961:18;44953:26;;45025:9;45019:4;45015:20;45011:1;45000:9;44996:17;44989:47;45053:131;45179:4;45053:131;:::i;:::-;45045:139;;44772:419;;;:::o;45197:194::-;45237:4;45257:20;45275:1;45257:20;:::i;:::-;45252:25;;45291:20;45309:1;45291:20;:::i;:::-;45286:25;;45335:1;45332;45328:9;45320:17;;45359:1;45353:4;45350:11;45347:37;;;45364:18;;:::i;:::-;45347:37;45197:194;;;;:::o;45397:225::-;45537:34;45533:1;45525:6;45521:14;45514:58;45606:8;45601:2;45593:6;45589:15;45582:33;45397:225;:::o;45628:366::-;45770:3;45791:67;45855:2;45850:3;45791:67;:::i;:::-;45784:74;;45867:93;45956:3;45867:93;:::i;:::-;45985:2;45980:3;45976:12;45969:19;;45628:366;;;:::o;46000:419::-;46166:4;46204:2;46193:9;46189:18;46181:26;;46253:9;46247:4;46243:20;46239:1;46228:9;46224:17;46217:47;46281:131;46407:4;46281:131;:::i;:::-;46273:139;;46000:419;;;:::o;46425:143::-;46482:5;46513:6;46507:13;46498:22;;46529:33;46556:5;46529:33;:::i;:::-;46425:143;;;;:::o;46574:351::-;46644:6;46693:2;46681:9;46672:7;46668:23;46664:32;46661:119;;;46699:79;;:::i;:::-;46661:119;46819:1;46844:64;46900:7;46891:6;46880:9;46876:22;46844:64;:::i;:::-;46834:74;;46790:128;46574:351;;;;:::o;46931:85::-;46976:7;47005:5;46994:16;;46931:85;;;:::o;47022:158::-;47080:9;47113:61;47131:42;47140:32;47166:5;47140:32;:::i;:::-;47131:42;:::i;:::-;47113:61;:::i;:::-;47100:74;;47022:158;;;:::o;47186:147::-;47281:45;47320:5;47281:45;:::i;:::-;47276:3;47269:58;47186:147;;:::o;47339:114::-;47406:6;47440:5;47434:12;47424:22;;47339:114;;;:::o;47459:132::-;47526:4;47549:3;47541:11;;47579:4;47574:3;47570:14;47562:22;;47459:132;;;:::o;47597:113::-;47667:4;47699;47694:3;47690:14;47682:22;;47597:113;;;:::o;47746:732::-;47865:3;47894:54;47942:5;47894:54;:::i;:::-;47964:86;48043:6;48038:3;47964:86;:::i;:::-;47957:93;;48074:56;48124:5;48074:56;:::i;:::-;48153:7;48184:1;48169:284;48194:6;48191:1;48188:13;48169:284;;;48270:6;48264:13;48297:63;48356:3;48341:13;48297:63;:::i;:::-;48290:70;;48383:60;48436:6;48383:60;:::i;:::-;48373:70;;48229:224;48216:1;48213;48209:9;48204:14;;48169:284;;;48173:14;48469:3;48462:10;;47870:608;;;47746:732;;;;:::o;48484:831::-;48747:4;48785:3;48774:9;48770:19;48762:27;;48799:71;48867:1;48856:9;48852:17;48843:6;48799:71;:::i;:::-;48880:80;48956:2;48945:9;48941:18;48932:6;48880:80;:::i;:::-;49007:9;49001:4;48997:20;48992:2;48981:9;48977:18;48970:48;49035:108;49138:4;49129:6;49035:108;:::i;:::-;49027:116;;49153:72;49221:2;49210:9;49206:18;49197:6;49153:72;:::i;:::-;49235:73;49303:3;49292:9;49288:19;49279:6;49235:73;:::i;:::-;48484:831;;;;;;;;:::o

Swarm Source

ipfs://b4a47abcd135bda25a9d351f0a0c530a42b9cb91e99c1737b32d1b7d757406cf

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  ]

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.