ETH Price: $3,439.12 (-2.75%)
Gas: 2 Gwei

Contract

0x1Ee16f83AdF70e7dfC78E096d86A8217D0e4d64A
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve201654912024-06-25 1:43:2327 days ago1719279803IN
0x1Ee16f83...7D0e4d64A
0 ETH0.000141733
Transfer201595492024-06-24 5:46:5928 days ago1719208019IN
0x1Ee16f83...7D0e4d64A
0 ETH0.000310093.04757311
Approve201423762024-06-21 20:06:5931 days ago1719000419IN
0x1Ee16f83...7D0e4d64A
0 ETH0.000247145.2645367
Approve201353652024-06-20 20:37:2332 days ago1718915843IN
0x1Ee16f83...7D0e4d64A
0 ETH0.000259195.48609274
Approve201245782024-06-19 8:25:3533 days ago1718785535IN
0x1Ee16f83...7D0e4d64A
0 ETH0.000254635.42545725
Transfer189112472024-01-01 7:56:35203 days ago1704095795IN
0x1Ee16f83...7D0e4d64A
0 ETH0.000551419.92575886
Transfer189104152024-01-01 5:08:35203 days ago1704085715IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0008081611.12345299
Approve182217702023-09-26 18:35:11300 days ago1695753311IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0010265821.84546493
Approve158028712022-10-22 9:52:35639 days ago1666432355IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0004272917.07752686
Approve144404722022-03-23 4:38:15852 days ago1648010295IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0010484141.90126384
Approve143710032022-03-12 8:56:53863 days ago1647075413IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0002831611.31715495
Approve143703612022-03-12 6:43:17863 days ago1647067397IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0008923318.8634971
Approve143072152022-03-02 11:08:39873 days ago1646219319IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0017460836.91118669
Approve143059032022-03-02 6:12:36873 days ago1646201556IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0009683938.7034666
Approve142483232022-02-21 8:28:03882 days ago1645432083IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0024516251.82585566
Approve142397472022-02-20 0:37:49883 days ago1645317469IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0018982775.8671672
Approve139931202022-01-12 21:19:16922 days ago1642022356IN
0x1Ee16f83...7D0e4d64A
0 ETH0.00345647138.14281261
Approve139143492021-12-31 17:06:39934 days ago1640970399IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0048968103.51566381
Approve138983512021-12-29 5:33:11936 days ago1640755991IN
0x1Ee16f83...7D0e4d64A
0 ETH0.003200467.65468063
Approve138974362021-12-29 2:12:57936 days ago1640743977IN
0x1Ee16f83...7D0e4d64A
0 ETH0.00528356111.69137898
Approve138736742021-12-25 10:07:03940 days ago1640426823IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0013469753.83374859
Approve138675182021-12-24 11:02:23941 days ago1640343743IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0017974937.99797334
Approve138624922021-12-23 16:25:24942 days ago1640276724IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0045288795.73777026
Transfer138608162021-12-23 10:22:34942 days ago1640254954IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0047070555.60546628
Approve138581182021-12-23 0:02:17942 days ago1640217737IN
0x1Ee16f83...7D0e4d64A
0 ETH0.0023719686.55237976
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
201654952024-06-25 1:44:1127 days ago1719279851
0x1Ee16f83...7D0e4d64A
0.00111881 ETH
201654952024-06-25 1:44:1127 days ago1719279851
0x1Ee16f83...7D0e4d64A
0.00186468 ETH
201654952024-06-25 1:44:1127 days ago1719279851
0x1Ee16f83...7D0e4d64A
0.0001755 ETH
201654952024-06-25 1:44:1127 days ago1719279851
0x1Ee16f83...7D0e4d64A
0.003159 ETH
162568192022-12-24 19:55:35576 days ago1671911735
0x1Ee16f83...7D0e4d64A
0.00150924 ETH
162568192022-12-24 19:55:35576 days ago1671911735
0x1Ee16f83...7D0e4d64A
0.0025154 ETH
162568192022-12-24 19:55:35576 days ago1671911735
0x1Ee16f83...7D0e4d64A
0.00023674 ETH
162568192022-12-24 19:55:35576 days ago1671911735
0x1Ee16f83...7D0e4d64A
0.00426139 ETH
143704992022-03-12 7:11:49863 days ago1647069109
0x1Ee16f83...7D0e4d64A
0.00299479 ETH
143704992022-03-12 7:11:49863 days ago1647069109
0x1Ee16f83...7D0e4d64A
0.00499131 ETH
143704992022-03-12 7:11:49863 days ago1647069109
0x1Ee16f83...7D0e4d64A
0.00046977 ETH
143704992022-03-12 7:11:49863 days ago1647069109
0x1Ee16f83...7D0e4d64A
0.00845588 ETH
143036582022-03-01 21:52:05874 days ago1646171525
0x1Ee16f83...7D0e4d64A
0.00406428 ETH
143036582022-03-01 21:52:05874 days ago1646171525
0x1Ee16f83...7D0e4d64A
0.00677381 ETH
143036582022-03-01 21:52:05874 days ago1646171525
0x1Ee16f83...7D0e4d64A
0.00063753 ETH
143036582022-03-01 21:52:05874 days ago1646171525
0x1Ee16f83...7D0e4d64A
0.01147563 ETH
138983642021-12-29 5:35:43936 days ago1640756143
0x1Ee16f83...7D0e4d64A
0.00427403 ETH
138983642021-12-29 5:35:43936 days ago1640756143
0x1Ee16f83...7D0e4d64A
0.00712339 ETH
138983642021-12-29 5:35:43936 days ago1640756143
0x1Ee16f83...7D0e4d64A
0.00067043 ETH
138983642021-12-29 5:35:43936 days ago1640756143
0x1Ee16f83...7D0e4d64A
0.01206787 ETH
138983582021-12-29 5:34:32936 days ago1640756072
0x1Ee16f83...7D0e4d64A
0.01053406 ETH
138983582021-12-29 5:34:32936 days ago1640756072
0x1Ee16f83...7D0e4d64A
0.01755676 ETH
138983582021-12-29 5:34:32936 days ago1640756072
0x1Ee16f83...7D0e4d64A
0.0016524 ETH
138983582021-12-29 5:34:32936 days ago1640756072
0x1Ee16f83...7D0e4d64A
0.02974323 ETH
138675322021-12-24 11:05:12941 days ago1640343912
0x1Ee16f83...7D0e4d64A
0.00418741 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SORAKA

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-14
*/

// t.me/Soraka_ERC20
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.9.0;

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

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

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

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8);

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

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

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

  /**
   * @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 IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract SORAKA is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;
    mapping (address => uint256) private _tOwned;
    mapping (address => uint256) private _buyMap;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isSniper;
    mapping (address => bool) private _liquidityHolders;

    uint256 private startingSupply = 1_000_000_000;

    string private _name = "Soraka";
    string private _symbol = "SORAKA";

    uint256 public _buyFee = 900;
    uint256 public _sellFee = 1100;
    uint256 public _transferFee = 2000;
    uint256 constant public _AntiDumpFee24hr = 2500;
    uint256 public _JeetFee = _AntiDumpFee24hr;
    uint256 constant maxJeetFee = 5000;
    uint256 constant public maxBuyTaxes = 900;
    uint256 constant public maxSellTaxes = 1100;
    uint256 constant public maxTransferTaxes = 2000;

    uint256 public _liquidityRatio = 1;
    uint256 public _marketingRatio = 5;
    uint256 public _devRatio = 3;

    uint256 private constant masterTaxDivisor = 10000;

    uint256 private constant MAX = ~uint256(0);
    uint8 constant private _decimals = 9;
    uint256 constant private _decimalsMul = _decimals;
    uint256 private _tTotal = startingSupply * 10**_decimalsMul;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // UNI ROUTER
    address private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable private _marketingWallet = payable(0x68F7A3F91B84D33F55F9CE6807ea506eba5d51d7);
    address payable private _devWallet = payable(0x68F7A3F91B84D33F55F9CE6807ea506eba5d51d7);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent = 1;
    uint256 private maxTxDivisor = 100;
    uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    uint256 public maxTxAmountUI = (startingSupply * maxTxPercent) / maxTxDivisor;

    uint256 private maxWalletPercent = 2;
    uint256 private maxWalletDivisor = 100;
    uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
    uint256 public maxWalletSizeUI = (startingSupply * maxWalletPercent) / maxWalletDivisor;

    uint256 private swapThreshold = (_tTotal * 5) / 10000;
    uint256 private swapAmount = (_tTotal * 5) / 1000;

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0;
    uint256 private snipeBlockAmt = 0;
    uint256 public snipersCaught = 0;
    bool private sameBlockActive = true;
    mapping (address => uint256) private lastTrade;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

        // Set the owner.
        _owner = msg.sender;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[owner()] = true;

        // Approve the owner for PancakeSwap, timesaver.
        _approve(_msgSender(), _routerAddress, _tTotal);

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (_marketingWallet == payable(_owner))
            _marketingWallet = payable(newOwner);
        
        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner() {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

    function originalPurchase(address account) public view returns (uint256) {
        return _buyMap[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

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

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 1 weeks, "One week cooldown.");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

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

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function isSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }

    function isProtected(uint256 rInitializer) external onlyOwner {
        require (_liqAddStatus == 0, "Error.");
        _liqAddStatus = rInitializer;
    }

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner() {
        _isSniper[account] = enabled;
    }

    function setStartingProtections(uint8 _block) external onlyOwner{
        require (snipeBlockAmt == 0 && !_hasLiqBeenAdded);
        snipeBlockAmt = _block;
    }

    function setProtectionSettings(bool antiSnipe, bool antiBlock) external onlyOwner() {
        sniperProtection = antiSnipe;
        sameBlockActive = antiBlock;
    }

    function setTaxes(uint256 buyFee, uint256 sellFee, uint256 transferFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _buyFee = buyFee;
        _sellFee = sellFee;
        _transferFee = transferFee;
    }

    function setJeetFee(uint256 JeetFee) external onlyOwner {
        require(JeetFee <= maxJeetFee, "Cannot exceed maximum.");
        _JeetFee = JeetFee;
        
    }

    function setRatios(uint256 liquidity, uint256 marketing) external onlyOwner {
        require (liquidity + marketing == 100, "Must add up to 100%");
        _liquidityRatio = liquidity;
        _marketingRatio = marketing;
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply.");
        _maxTxAmount = check;
        maxTxAmountUI = (startingSupply * percent) / divisor;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply.");
        _maxWalletSize = check;
        maxWalletSizeUI = (startingSupply * percent) / divisor;
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setWallets(address payable marketingWallet, address payable devWallet) external onlyOwner {
        _marketingWallet = payable(marketingWallet);
        _devWallet = payable(devWallet);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        if(_hasLimits(from, to)) {
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                } else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                }
            }
            if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
            }
            if(to != _routerAddress && !lpPairs[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }
        }

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

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (_liquidityRatio + _marketingRatio + _devRatio == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * _liquidityRatio) / (_liquidityRatio + _marketingRatio + _devRatio)) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * _liquidityRatio) / (_liquidityRatio + _marketingRatio + _devRatio)) / 2;

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {
            _marketingWallet.transfer(((currentBalance - liquidityBalance) * _marketingRatio) / (_marketingRatio + _devRatio));
            _devWallet.transfer(address(this).balance);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            DEAD,
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            if (snipeBlockAmt != 1) {
                _liqAddBlock = block.number + 5000;
            } else {
                _liqAddBlock = block.number;
            }

            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (sniperProtection){
            if (isSniper(from) || isSniper(to)) {
                revert("Sniper rejected.");
            }

            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
            } else {
                if (_liqAddBlock > 0 
                    && lpPairs[from] 
                    && _hasLimits(from, to)
                ) {
                    if (block.number - _liqAddBlock < snipeBlockAmt) {
                        _isSniper[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }
            }
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount;
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;

        if (from == lpPair) {
            currentFee = _buyFee;
        } else if (to == lpPair) {
            if (_buyMap[from] !=0 &&
            (_buyMap[from] + (5 minutes) >= block.timestamp)) {
                currentFee = _JeetFee;
            }
            else if (_buyMap[from] !=0 &&
            (_buyMap[from] + (24 hours) >= block.timestamp)) {
                currentFee = _AntiDumpFee24hr;
            }
            else {
                currentFee = _sellFee;
            }
            
        } else {
            currentFee = _transferFee;
        }

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != 1) {
                revert();
            }
        }

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;

        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_AntiDumpFee24hr","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_JeetFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"rInitializer","type":"uint256"}],"name":"isProtected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSizeUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"originalPurchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"JeetFee","type":"uint256"}],"name":"setJeetFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"antiSnipe","type":"bool"},{"internalType":"bool","name":"antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_block","type":"uint8"}],"name":"setStartingProtections","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWallet","type":"address"},{"internalType":"address payable","name":"devWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600455633b9aca006009556040518060400160405280600681526020017f536f72616b610000000000000000000000000000000000000000000000000000815250600a90805190602001906200005e92919062000c03565b506040518060400160405280600681526020017f534f52414b410000000000000000000000000000000000000000000000000000815250600b9080519060200190620000ac92919062000c03565b50610384600c5561044c600d556107d0600e556109c4600f55600160105560056011556003601255600960ff16600a620000e7919062000e55565b600954620000f6919062000f92565b601355737a250d5630b4cf539739df2c5dacb4c659f2488d601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507368f7a3f91b84d33f55f9ce6807ea506eba5d51d7601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507368f7a3f91b84d33f55f9ce6807ea506eba5d51d7601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601960156101000a81548160ff0219169083151502179055506001601a556064601b55601b54601a5460135462000232919062000f92565b6200023e919062000dc2565b601c55601b54601a5460095462000256919062000f92565b62000262919062000dc2565b601d556002601e556064601f55601f54601e5460135462000284919062000f92565b62000290919062000dc2565b602055601f54601e54600954620002a8919062000f92565b620002b4919062000dc2565b6021556127106005601354620002cb919062000f92565b620002d7919062000dc2565b6022556103e86005601354620002ee919062000f92565b620002fa919062000dc2565b6023556001602460006101000a81548160ff0219169083151502179055506000602460016101000a81548160ff021916908315150217905550600060255560006026556000602755600060285560006029556000602a556001602b60006101000a81548160ff0219169083151502179055506013546001600062000383620009ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620004cd57600080fd5b505afa158015620004e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000508919062000cca565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200058c57600080fd5b505afa158015620005a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c7919062000cca565b306040518363ffffffff1660e01b8152600401620005e792919062000d45565b602060405180830381600087803b1580156200060257600080fd5b505af115801562000617573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200063d919062000cca565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160066000620007d062000a0760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000620008e962000a0760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620009806200094e620009ff60201b60201c565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660135462000a3060201b60201c565b62000990620009ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601354604051620009f1919062000d94565b60405180910390a362001149565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000aa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a9a9062000d72565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b0d9062000d72565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000bf6919062000d94565b60405180910390a3505050565b82805462000c119062001031565b90600052602060002090601f01602090048101928262000c35576000855562000c81565b82601f1062000c5057805160ff191683800117855562000c81565b8280016001018555821562000c81579182015b8281111562000c8057825182559160200191906001019062000c63565b5b50905062000c90919062000c94565b5090565b5b8082111562000caf57600081600090555060010162000c95565b5090565b60008151905062000cc4816200112f565b92915050565b60006020828403121562000ce35762000ce2620010f4565b5b600062000cf38482850162000cb3565b91505092915050565b62000d078162000ff3565b82525050565b600062000d1c60138362000db1565b915062000d298262001106565b602082019050919050565b62000d3f8162001027565b82525050565b600060408201905062000d5c600083018562000cfc565b62000d6b602083018462000cfc565b9392505050565b6000602082019050818103600083015262000d8d8162000d0d565b9050919050565b600060208201905062000dab600083018462000d34565b92915050565b600082825260208201905092915050565b600062000dcf8262001027565b915062000ddc8362001027565b92508262000def5762000dee62001096565b5b828204905092915050565b6000808291508390505b600185111562000e4c5780860481111562000e245762000e2362001067565b5b600185161562000e345780820291505b808102905062000e4485620010f9565b945062000e04565b94509492505050565b600062000e628262001027565b915062000e6f8362001027565b925062000e9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ea6565b905092915050565b60008262000eb8576001905062000f8b565b8162000ec8576000905062000f8b565b816001811462000ee1576002811462000eec5762000f22565b600191505062000f8b565b60ff84111562000f015762000f0062001067565b5b8360020a91508482111562000f1b5762000f1a62001067565b5b5062000f8b565b5060208310610133831016604e8410600b841016171562000f5c5782820a90508381111562000f565762000f5562001067565b5b62000f8b565b62000f6b848484600162000dfa565b9250905081840481111562000f855762000f8462001067565b5b81810290505b9392505050565b600062000f9f8262001027565b915062000fac8362001027565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000fe85762000fe762001067565b5b828202905092915050565b6000620010008262001007565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200104a57607f821691505b60208210811415620010615762001060620010c5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6200113a8162000ff3565b81146200114657600080fd5b50565b61571a80620011596000396000f3fe60806040526004361061031e5760003560e01c8063590ffdce116101ab578063a9059cbb116100f7578063e79d416011610095578063eec2744e1161006f578063eec2744e14610bfb578063f6540ec714610c24578063f954f21c14610c4f578063fb78680d14610c7a57610325565b8063e79d416014610b7e578063e9dae5ed14610ba9578063eafb5a3c14610bd257610325565b8063c49b9a80116100d1578063c49b9a8014610ab2578063cc653b4414610adb578063d3f6a15714610b18578063dd62ed3e14610b4157610325565b8063a9059cbb14610a1f578063b1b08f7114610a5c578063b3d514fb14610a8757610325565b806380c581d1116101645780638da5cb5b1161013e5780638da5cb5b1461096157806395d89b411461098c578063a457c2d7146109b7578063a8edc797146109f457610325565b806380c581d1146108e457806381c6f11b1461090d578063893d20e81461093657610325565b8063590ffdce146107ea57806364038409146108135780636639dd931461083e57806370a0823114610867578063715018a6146108a4578063730174c6146108bb57610325565b8063395093511161026a5780634a74bb02116102235780634fbee193116101fd5780634fbee1931461071a57806350a8e01614610757578063571ac8b014610782578063590f897e146107bf57610325565b80634a74bb021461069b5780634ef3cce5146106c65780634fb2e45d146106f157610325565b8063395093511461058b5780633df9a8d2146105c85780633f3cf56c146105f357806340b9a54b1461061c5780634129ecee14610647578063452ed4f11461067057610325565b806318160ddd116102d75780632b28fc7a116102b15780632b28fc7a146104df5780632ed74e831461050a578063313ce56714610535578063384f6b511461056057610325565b806318160ddd1461044e57806323b872dd1461047957806326003957146104b657610325565b806303fd2a451461032a578063044df7261461035557806306fdde031461037e5780630758d924146103a9578063095ea7b3146103d45780630f3a325f1461041157610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610ca3565b60405161034c9190614bbd565b60405180910390f35b34801561036157600080fd5b5061037c6004803603810190610377919061468e565b610ca9565b005b34801561038a57600080fd5b50610393610d76565b6040516103a09190614c98565b60405180910390f35b3480156103b557600080fd5b506103be610e08565b6040516103cb9190614c7d565b60405180910390f35b3480156103e057600080fd5b506103fb60048036038101906103f69190614621565b610e2e565b6040516104089190614c62565b60405180910390f35b34801561041d57600080fd5b50610438600480360381019061043391906144b4565b610e4c565b6040516104459190614c62565b60405180910390f35b34801561045a57600080fd5b50610463610ea2565b6040516104709190614eba565b60405180910390f35b34801561048557600080fd5b506104a0600480360381019061049b919061458e565b610eac565b6040516104ad9190614c62565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d891906146fb565b610ff9565b005b3480156104eb57600080fd5b506104f4611128565b6040516105019190614eba565b60405180910390f35b34801561051657600080fd5b5061051f61112e565b60405161052c9190614eba565b60405180910390f35b34801561054157600080fd5b5061054a611134565b6040516105579190614f66565b60405180910390f35b34801561056c57600080fd5b5061057561113d565b6040516105829190614eba565b60405180910390f35b34801561059757600080fd5b506105b260048036038101906105ad9190614621565b611143565b6040516105bf9190614c62565b60405180910390f35b3480156105d457600080fd5b506105dd6111ef565b6040516105ea9190614eba565b60405180910390f35b3480156105ff57600080fd5b5061061a600480360381019061061591906146fb565b6111f5565b005b34801561062857600080fd5b50610631611324565b60405161063e9190614eba565b60405180910390f35b34801561065357600080fd5b5061066e60048036038101906106699190614848565b61132a565b005b34801561067c57600080fd5b506106856113f4565b6040516106929190614bbd565b60405180910390f35b3480156106a757600080fd5b506106b061141a565b6040516106bd9190614c62565b60405180910390f35b3480156106d257600080fd5b506106db61142d565b6040516106e89190614eba565b60405180910390f35b3480156106fd57600080fd5b50610718600480360381019061071391906144b4565b611433565b005b34801561072657600080fd5b50610741600480360381019061073c91906144b4565b6118a4565b60405161074e9190614c62565b60405180910390f35b34801561076357600080fd5b5061076c6118fa565b6040516107799190614c62565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a491906144b4565b61190d565b6040516107b69190614c62565b60405180910390f35b3480156107cb57600080fd5b506107d4611940565b6040516107e19190614eba565b60405180910390f35b3480156107f657600080fd5b50610811600480360381019061080c91906145e1565b611946565b005b34801561081f57600080fd5b50610828611a36565b6040516108359190614eba565b60405180910390f35b34801561084a57600080fd5b50610865600480360381019061086091906146fb565b611a3c565b005b34801561087357600080fd5b5061088e600480360381019061088991906144b4565b611b31565b60405161089b9190614eba565b60405180910390f35b3480156108b057600080fd5b506108b9611b7a565b005b3480156108c757600080fd5b506108e260048036038101906108dd91906146ce565b611cf8565b005b3480156108f057600080fd5b5061090b600480360381019061090691906145e1565b611ddc565b005b34801561091957600080fd5b50610934600480360381019061092f91906146ce565b611f9c565b005b34801561094257600080fd5b5061094b612080565b6040516109589190614bbd565b60405180910390f35b34801561096d57600080fd5b5061097661208f565b6040516109839190614bbd565b60405180910390f35b34801561099857600080fd5b506109a16120b8565b6040516109ae9190614c98565b60405180910390f35b3480156109c357600080fd5b506109de60048036038101906109d99190614621565b61214a565b6040516109eb9190614c62565b60405180910390f35b348015610a0057600080fd5b50610a096121f6565b604051610a169190614eba565b60405180910390f35b348015610a2b57600080fd5b50610a466004803603810190610a419190614621565b6121fc565b604051610a539190614c62565b60405180910390f35b348015610a6857600080fd5b50610a7161221b565b604051610a7e9190614eba565b60405180910390f35b348015610a9357600080fd5b50610a9c612221565b604051610aa99190614eba565b60405180910390f35b348015610abe57600080fd5b50610ad96004803603810190610ad49190614661565b612227565b005b348015610ae757600080fd5b50610b026004803603810190610afd91906144b4565b612310565b604051610b0f9190614eba565b60405180910390f35b348015610b2457600080fd5b50610b3f6004803603810190610b3a919061450e565b612359565b005b348015610b4d57600080fd5b50610b686004803603810190610b63919061454e565b612474565b604051610b759190614eba565b60405180910390f35b348015610b8a57600080fd5b50610b936124fb565b604051610ba09190614eba565b60405180910390f35b348015610bb557600080fd5b50610bd06004803603810190610bcb919061473b565b612501565b005b348015610bde57600080fd5b50610bf96004803603810190610bf491906144b4565b612611565b005b348015610c0757600080fd5b50610c226004803603810190610c1d91906145e1565b612abd565b005b348015610c3057600080fd5b50610c39612bad565b604051610c469190614eba565b60405180910390f35b348015610c5b57600080fd5b50610c64612bb3565b604051610c719190614eba565b60405180910390f35b348015610c8657600080fd5b50610ca16004803603810190610c9c91906147e1565b612bb9565b005b61dead81565b610cb1612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3590614cba565b60405180910390fd5b81602460006101000a81548160ff02191690831515021790555080602b60006101000a81548160ff0219169083151502179055505050565b6060600a8054610d85906151cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610db1906151cd565b8015610dfe5780601f10610dd357610100808354040283529160200191610dfe565b820191906000526020600020905b815481529060010190602001808311610de157829003601f168201915b5050505050905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e42610e3b612c92565b8484612c9a565b6001905092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fe55781600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610fdd91906150b7565b925050819055505b610ff0848484612e65565b90509392505050565b611001612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108590614cba565b60405180910390fd5b6000818360135461109f919061505d565b6110a9919061502c565b90506103e86013546110bb919061502c565b8110156110fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f490614d3a565b60405180910390fd5b806020819055508183600954611113919061505d565b61111d919061502c565b602181905550505050565b61038481565b600f5481565b60006009905090565b60105481565b60006111e5611150612c92565b84846005600061115e612c92565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111e09190614fd6565b612c9a565b6001905092915050565b600e5481565b6111fd612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128190614cba565b60405180910390fd5b6000818360135461129b919061505d565b6112a5919061502c565b90506103e86013546112b7919061502c565b8110156112f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f090614d3a565b60405180910390fd5b80601c81905550818360095461130f919061505d565b611319919061502c565b601d81905550505050565b600c5481565b611332612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b690614cba565b60405180910390fd5b60006029541480156113de5750602460019054906101000a900460ff16155b6113e757600080fd5b8060ff1660298190555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960159054906101000a900460ff1681565b60115481565b61143b612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90614cba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f90614e9a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a090614e9a565b60405180910390fd5b6115d460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611946565b6115df816001611946565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116975780601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6116c060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b31565b600560008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061178c60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b31565b11156117e7576117e560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826117e060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b31565b612e65565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602460019054906101000a900460ff1681565b6000611939827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e2e565b9050919050565b600d5481565b61194e612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d290614cba565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d5481565b611a44612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac890614cba565b60405180910390fd5b60648183611adf9190614fd6565b14611b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1690614e5a565b60405180910390fd5b81601081905550806011819055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b82612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0690614cba565b60405180910390fd5b611c3a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611946565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b611d00612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8490614cba565b60405180910390fd5b611388811115611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc990614dda565b60405180910390fd5b80600f8190555050565b611de4612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6890614cba565b60405180910390fd5b600015158115151415611edb576000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611f98565b600060045414611f385762093a8060045442611ef791906150b7565b11611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e90614d7a565b60405180910390fd5b5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426004819055505b5050565b611fa4612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202890614cba565b60405180910390fd5b600060255414612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90614e1a565b60405180910390fd5b8060258190555050565b600061208a61208f565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b80546120c7906151cd565b80601f01602080910402602001604051908101604052809291908181526020018280546120f3906151cd565b80156121405780601f1061211557610100808354040283529160200191612140565b820191906000526020600020905b81548152906001019060200180831161212357829003601f168201915b5050505050905090565b60006121ec612157612c92565b848460056000612165612c92565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121e791906150b7565b612c9a565b6001905092915050565b60125481565b6000612210612209612c92565b8484612e65565b506001905092915050565b6107d081565b61044c81565b61222f612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b390614cba565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516123059190614c62565b60405180910390a150565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612361612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e590614cba565b60405180910390fd5b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602a5481565b612509612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258d90614cba565b60405180910390fd5b61038483111580156125aa575061044c8211155b80156125b857506107d08111155b6125f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ee90614d1a565b60405180910390fd5b82600c8190555081600d8190555080600e81905550505050565b612619612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269d90614cba565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156126f357600080fd5b505afa158015612707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272b91906144e1565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561278d57600080fd5b505afa1580156127a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c591906144e1565b6040518363ffffffff1660e01b81526004016127e2929190614bd8565b60206040518083038186803b1580156127fa57600080fd5b505afa15801561280e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283291906144e1565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a35578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156128af57600080fd5b505afa1580156128c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e791906144e1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561294957600080fd5b505afa15801561295d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298191906144e1565b6040518363ffffffff1660e01b815260040161299e929190614bd8565b602060405180830381600087803b1580156129b857600080fd5b505af11580156129cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f091906144e1565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612a77565b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b612ac5612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4990614cba565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60215481565b6109c481565b612bc1612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4590614cba565b60405180910390fd5b8284601354612c5d919061505d565b612c67919061502c565b6022819055508082601354612c7c919061505d565b612c86919061502c565b60238190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0190614dba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7190614dba565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e589190614eba565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecd90614d5a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3d90614d5a565b60405180910390fd5b60008211612f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8090614d9a565b60405180910390fd5b612f938484613492565b1561331957602b60009054906101000a900460ff161561312657600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156130945743602c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561304b57600080fd5b43602c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613125565b43602c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156130e057600080fd5b43602c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131c75750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561321257601c54821115613211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320890614e7a565b60405180910390fd5b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156132ba5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561331857602054826132cc85611b31565b6132d69190614fd6565b1115613317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330e90614e3a565b60405180910390fd5b5b5b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133c05750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156133ca57600090505b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561347c57601960149054906101000a900460ff161580156134455750601960159054906101000a900460ff165b1561347b57600061345530611b31565b9050602254811061347957602354811061346f5760235490505b61347881613669565b5b505b5b613488858585846138e1565b9150509392505050565b600061349c61208f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561350a57506134da61208f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156135605750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135b65750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135f0575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156136295750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561366157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601960146101000a81548160ff02191690831515021790555060006012546011546010546136999190614fd6565b6136a39190614fd6565b14156136ae576138c3565b600060026012546011546010546136c59190614fd6565b6136cf9190614fd6565b601054846136dd919061505d565b6136e7919061502c565b6136f1919061502c565b90506000818361370191906150b7565b905061370c81613c44565b6000479050600060026012546011546010546137289190614fd6565b6137329190614fd6565b60105484613740919061505d565b61374a919061502c565b613754919061502c565b905060008411156137a5576137698482613e69565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828660405161379c93929190614f2f565b60405180910390a15b600084866137b391906150b7565b11156138be57601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012546011546138059190614fd6565b601154848661381491906150b7565b61381e919061505d565b613828919061502c565b9081150290604051600060405180830381858888f19350505050158015613853573d6000803e3d6000fd5b50601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156138bc573d6000803e3d6000fd5b505b505050505b6000601960146101000a81548160ff02191690831515021790555050565b6000602460009054906101000a900460ff1615613b0b5761390185610e4c565b80613911575061391084610e4c565b5b15613951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394890614dfa565b60405180910390fd5b602460019054906101000a900460ff166139d75761396f8585613f2b565b602460019054906101000a900460ff1615801561399257506139918585613492565b5b156139d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139c990614cfa565b60405180910390fd5b613b0a565b6000602654118015613a325750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015613a445750613a438585613492565b5b15613b095760295460265443613a5a91906150b7565b1015613b08576001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602a6000815480929190613acb906151ff565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e584604051613aff9190614bbd565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b5a91906150b7565b92505081905550600082613b6e5783613b7a565b613b798686866140e1565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613bcb9190614fd6565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c2f9190614eba565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613c6157613c60615304565b5b604051908082528060200260200182016040528015613c8f5781602001602082028036833780820191505090505b5090503081600081518110613ca757613ca66152d5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613d4957600080fd5b505afa158015613d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8191906144e1565b81600181518110613d9557613d946152d5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613e33959493929190614ed5565b600060405180830381600087803b158015613e4d57600080fd5b505af1158015613e61573d6000803e3d6000fd5b505050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613ed296959493929190614c01565b6060604051808303818588803b158015613eeb57600080fd5b505af1158015613eff573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f24919061478e565b5050505050565b602460019054906101000a900460ff1615613f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f7290614cda565b60405180910390fd5b613f858282613492565b158015613fdf5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156140dd576001602954146140075761138843613ffc9190614fd6565b60268190555061400f565b436026819055505b6001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602460016101000a81548160ff021916908315150217905550426027819055506001601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15960016040516140d49190614c62565b60405180910390a15b5050565b600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561414457600c549050614304565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156142fd576000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415801561423657504261012c600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142339190614fd6565b10155b1561424557600f5490506142f8565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141580156142e257504262015180600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142df9190614fd6565b10155b156142f1576109c490506142f7565b600d5490505b5b614303565b600e5490505b5b61430e8585613492565b1561433257600060255414806143275750600160255414155b1561433157600080fd5b5b60006127108285614343919061505d565b61434d919061502c565b905080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461439e9190614fd6565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144029190614eba565b60405180910390a3808461441691906150b7565b925050509392505050565b60008135905061443081615671565b92915050565b60008151905061444581615671565b92915050565b60008135905061445a81615688565b92915050565b60008135905061446f8161569f565b92915050565b600081359050614484816156b6565b92915050565b600081519050614499816156b6565b92915050565b6000813590506144ae816156cd565b92915050565b6000602082840312156144ca576144c9615333565b5b60006144d884828501614421565b91505092915050565b6000602082840312156144f7576144f6615333565b5b600061450584828501614436565b91505092915050565b6000806040838503121561452557614524615333565b5b60006145338582860161444b565b92505060206145448582860161444b565b9150509250929050565b6000806040838503121561456557614564615333565b5b600061457385828601614421565b925050602061458485828601614421565b9150509250929050565b6000806000606084860312156145a7576145a6615333565b5b60006145b586828701614421565b93505060206145c686828701614421565b92505060406145d786828701614475565b9150509250925092565b600080604083850312156145f8576145f7615333565b5b600061460685828601614421565b925050602061461785828601614460565b9150509250929050565b6000806040838503121561463857614637615333565b5b600061464685828601614421565b925050602061465785828601614475565b9150509250929050565b60006020828403121561467757614676615333565b5b600061468584828501614460565b91505092915050565b600080604083850312156146a5576146a4615333565b5b60006146b385828601614460565b92505060206146c485828601614460565b9150509250929050565b6000602082840312156146e4576146e3615333565b5b60006146f284828501614475565b91505092915050565b6000806040838503121561471257614711615333565b5b600061472085828601614475565b925050602061473185828601614475565b9150509250929050565b60008060006060848603121561475457614753615333565b5b600061476286828701614475565b935050602061477386828701614475565b925050604061478486828701614475565b9150509250925092565b6000806000606084860312156147a7576147a6615333565b5b60006147b58682870161448a565b93505060206147c68682870161448a565b92505060406147d78682870161448a565b9150509250925092565b600080600080608085870312156147fb576147fa615333565b5b600061480987828801614475565b945050602061481a87828801614475565b935050604061482b87828801614475565b925050606061483c87828801614475565b91505092959194509250565b60006020828403121561485e5761485d615333565b5b600061486c8482850161449f565b91505092915050565b6000614881838361488d565b60208301905092915050565b614896816150eb565b82525050565b6148a5816150eb565b82525050565b60006148b682614f91565b6148c08185614fb4565b93506148cb83614f81565b8060005b838110156148fc5781516148e38882614875565b97506148ee83614fa7565b9250506001810190506148cf565b5085935050505092915050565b6149128161510f565b82525050565b61492181615152565b82525050565b61493081615164565b82525050565b600061494182614f9c565b61494b8185614fc5565b935061495b81856020860161519a565b61496481615338565b840191505092915050565b600061497c601183614fc5565b915061498782615349565b602082019050919050565b600061499f602383614fc5565b91506149aa82615372565b604082019050919050565b60006149c2602583614fc5565b91506149cd826153c1565b604082019050919050565b60006149e5601783614fc5565b91506149f082615410565b602082019050919050565b6000614a08602383614fc5565b9150614a1382615439565b604082019050919050565b6000614a2b601483614fc5565b9150614a3682615488565b602082019050919050565b6000614a4e601283614fc5565b9150614a59826154b1565b602082019050919050565b6000614a71600883614fc5565b9150614a7c826154da565b602082019050919050565b6000614a94601383614fc5565b9150614a9f82615503565b602082019050919050565b6000614ab7601683614fc5565b9150614ac28261552c565b602082019050919050565b6000614ada601083614fc5565b9150614ae582615555565b602082019050919050565b6000614afd600683614fc5565b9150614b088261557e565b602082019050919050565b6000614b20601a83614fc5565b9150614b2b826155a7565b602082019050919050565b6000614b43601383614fc5565b9150614b4e826155d0565b602082019050919050565b6000614b66601883614fc5565b9150614b71826155f9565b602082019050919050565b6000614b89603d83614fc5565b9150614b9482615622565b604082019050919050565b614ba88161513b565b82525050565b614bb781615145565b82525050565b6000602082019050614bd2600083018461489c565b92915050565b6000604082019050614bed600083018561489c565b614bfa602083018461489c565b9392505050565b600060c082019050614c16600083018961489c565b614c236020830188614b9f565b614c306040830187614927565b614c3d6060830186614927565b614c4a608083018561489c565b614c5760a0830184614b9f565b979650505050505050565b6000602082019050614c776000830184614909565b92915050565b6000602082019050614c926000830184614918565b92915050565b60006020820190508181036000830152614cb28184614936565b905092915050565b60006020820190508181036000830152614cd38161496f565b9050919050565b60006020820190508181036000830152614cf381614992565b9050919050565b60006020820190508181036000830152614d13816149b5565b9050919050565b60006020820190508181036000830152614d33816149d8565b9050919050565b60006020820190508181036000830152614d53816149fb565b9050919050565b60006020820190508181036000830152614d7381614a1e565b9050919050565b60006020820190508181036000830152614d9381614a41565b9050919050565b60006020820190508181036000830152614db381614a64565b9050919050565b60006020820190508181036000830152614dd381614a87565b9050919050565b60006020820190508181036000830152614df381614aaa565b9050919050565b60006020820190508181036000830152614e1381614acd565b9050919050565b60006020820190508181036000830152614e3381614af0565b9050919050565b60006020820190508181036000830152614e5381614b13565b9050919050565b60006020820190508181036000830152614e7381614b36565b9050919050565b60006020820190508181036000830152614e9381614b59565b9050919050565b60006020820190508181036000830152614eb381614b7c565b9050919050565b6000602082019050614ecf6000830184614b9f565b92915050565b600060a082019050614eea6000830188614b9f565b614ef76020830187614927565b8181036040830152614f0981866148ab565b9050614f18606083018561489c565b614f256080830184614b9f565b9695505050505050565b6000606082019050614f446000830186614b9f565b614f516020830185614b9f565b614f5e6040830184614b9f565b949350505050565b6000602082019050614f7b6000830184614bae565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614fe18261513b565b9150614fec8361513b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561502157615020615248565b5b828201905092915050565b60006150378261513b565b91506150428361513b565b92508261505257615051615277565b5b828204905092915050565b60006150688261513b565b91506150738361513b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150ac576150ab615248565b5b828202905092915050565b60006150c28261513b565b91506150cd8361513b565b9250828210156150e0576150df615248565b5b828203905092915050565b60006150f68261511b565b9050919050565b60006151088261511b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061515d82615176565b9050919050565b600061516f8261513b565b9050919050565b600061518182615188565b9050919050565b60006151938261511b565b9050919050565b60005b838110156151b857808201518184015260208101905061519d565b838111156151c7576000848401525b50505050565b600060028204905060018216806151e557607f821691505b602082108114156151f9576151f86152a6565b5b50919050565b600061520a8261513b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561523d5761523c615248565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000600082015250565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b7f4d7573742062652061626f766520302e3125206f6620746f74616c207375707060008201527f6c792e0000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b7f43616e6e6f7420657863656564206d6178696d756d2e00000000000000000000600082015250565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f4d7573742061646420757020746f203130302500000000000000000000000000600082015250565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b61567a816150eb565b811461568557600080fd5b50565b615691816150fd565b811461569c57600080fd5b50565b6156a88161510f565b81146156b357600080fd5b50565b6156bf8161513b565b81146156ca57600080fd5b50565b6156d681615145565b81146156e157600080fd5b5056fea26469706673582212209bb163c04478dcca41b3bfddb636b1d8b3816f254e916fd0b7baae581cf5b2b064736f6c63430008070033

Deployed Bytecode

0x60806040526004361061031e5760003560e01c8063590ffdce116101ab578063a9059cbb116100f7578063e79d416011610095578063eec2744e1161006f578063eec2744e14610bfb578063f6540ec714610c24578063f954f21c14610c4f578063fb78680d14610c7a57610325565b8063e79d416014610b7e578063e9dae5ed14610ba9578063eafb5a3c14610bd257610325565b8063c49b9a80116100d1578063c49b9a8014610ab2578063cc653b4414610adb578063d3f6a15714610b18578063dd62ed3e14610b4157610325565b8063a9059cbb14610a1f578063b1b08f7114610a5c578063b3d514fb14610a8757610325565b806380c581d1116101645780638da5cb5b1161013e5780638da5cb5b1461096157806395d89b411461098c578063a457c2d7146109b7578063a8edc797146109f457610325565b806380c581d1146108e457806381c6f11b1461090d578063893d20e81461093657610325565b8063590ffdce146107ea57806364038409146108135780636639dd931461083e57806370a0823114610867578063715018a6146108a4578063730174c6146108bb57610325565b8063395093511161026a5780634a74bb02116102235780634fbee193116101fd5780634fbee1931461071a57806350a8e01614610757578063571ac8b014610782578063590f897e146107bf57610325565b80634a74bb021461069b5780634ef3cce5146106c65780634fb2e45d146106f157610325565b8063395093511461058b5780633df9a8d2146105c85780633f3cf56c146105f357806340b9a54b1461061c5780634129ecee14610647578063452ed4f11461067057610325565b806318160ddd116102d75780632b28fc7a116102b15780632b28fc7a146104df5780632ed74e831461050a578063313ce56714610535578063384f6b511461056057610325565b806318160ddd1461044e57806323b872dd1461047957806326003957146104b657610325565b806303fd2a451461032a578063044df7261461035557806306fdde031461037e5780630758d924146103a9578063095ea7b3146103d45780630f3a325f1461041157610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610ca3565b60405161034c9190614bbd565b60405180910390f35b34801561036157600080fd5b5061037c6004803603810190610377919061468e565b610ca9565b005b34801561038a57600080fd5b50610393610d76565b6040516103a09190614c98565b60405180910390f35b3480156103b557600080fd5b506103be610e08565b6040516103cb9190614c7d565b60405180910390f35b3480156103e057600080fd5b506103fb60048036038101906103f69190614621565b610e2e565b6040516104089190614c62565b60405180910390f35b34801561041d57600080fd5b50610438600480360381019061043391906144b4565b610e4c565b6040516104459190614c62565b60405180910390f35b34801561045a57600080fd5b50610463610ea2565b6040516104709190614eba565b60405180910390f35b34801561048557600080fd5b506104a0600480360381019061049b919061458e565b610eac565b6040516104ad9190614c62565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d891906146fb565b610ff9565b005b3480156104eb57600080fd5b506104f4611128565b6040516105019190614eba565b60405180910390f35b34801561051657600080fd5b5061051f61112e565b60405161052c9190614eba565b60405180910390f35b34801561054157600080fd5b5061054a611134565b6040516105579190614f66565b60405180910390f35b34801561056c57600080fd5b5061057561113d565b6040516105829190614eba565b60405180910390f35b34801561059757600080fd5b506105b260048036038101906105ad9190614621565b611143565b6040516105bf9190614c62565b60405180910390f35b3480156105d457600080fd5b506105dd6111ef565b6040516105ea9190614eba565b60405180910390f35b3480156105ff57600080fd5b5061061a600480360381019061061591906146fb565b6111f5565b005b34801561062857600080fd5b50610631611324565b60405161063e9190614eba565b60405180910390f35b34801561065357600080fd5b5061066e60048036038101906106699190614848565b61132a565b005b34801561067c57600080fd5b506106856113f4565b6040516106929190614bbd565b60405180910390f35b3480156106a757600080fd5b506106b061141a565b6040516106bd9190614c62565b60405180910390f35b3480156106d257600080fd5b506106db61142d565b6040516106e89190614eba565b60405180910390f35b3480156106fd57600080fd5b50610718600480360381019061071391906144b4565b611433565b005b34801561072657600080fd5b50610741600480360381019061073c91906144b4565b6118a4565b60405161074e9190614c62565b60405180910390f35b34801561076357600080fd5b5061076c6118fa565b6040516107799190614c62565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a491906144b4565b61190d565b6040516107b69190614c62565b60405180910390f35b3480156107cb57600080fd5b506107d4611940565b6040516107e19190614eba565b60405180910390f35b3480156107f657600080fd5b50610811600480360381019061080c91906145e1565b611946565b005b34801561081f57600080fd5b50610828611a36565b6040516108359190614eba565b60405180910390f35b34801561084a57600080fd5b50610865600480360381019061086091906146fb565b611a3c565b005b34801561087357600080fd5b5061088e600480360381019061088991906144b4565b611b31565b60405161089b9190614eba565b60405180910390f35b3480156108b057600080fd5b506108b9611b7a565b005b3480156108c757600080fd5b506108e260048036038101906108dd91906146ce565b611cf8565b005b3480156108f057600080fd5b5061090b600480360381019061090691906145e1565b611ddc565b005b34801561091957600080fd5b50610934600480360381019061092f91906146ce565b611f9c565b005b34801561094257600080fd5b5061094b612080565b6040516109589190614bbd565b60405180910390f35b34801561096d57600080fd5b5061097661208f565b6040516109839190614bbd565b60405180910390f35b34801561099857600080fd5b506109a16120b8565b6040516109ae9190614c98565b60405180910390f35b3480156109c357600080fd5b506109de60048036038101906109d99190614621565b61214a565b6040516109eb9190614c62565b60405180910390f35b348015610a0057600080fd5b50610a096121f6565b604051610a169190614eba565b60405180910390f35b348015610a2b57600080fd5b50610a466004803603810190610a419190614621565b6121fc565b604051610a539190614c62565b60405180910390f35b348015610a6857600080fd5b50610a7161221b565b604051610a7e9190614eba565b60405180910390f35b348015610a9357600080fd5b50610a9c612221565b604051610aa99190614eba565b60405180910390f35b348015610abe57600080fd5b50610ad96004803603810190610ad49190614661565b612227565b005b348015610ae757600080fd5b50610b026004803603810190610afd91906144b4565b612310565b604051610b0f9190614eba565b60405180910390f35b348015610b2457600080fd5b50610b3f6004803603810190610b3a919061450e565b612359565b005b348015610b4d57600080fd5b50610b686004803603810190610b63919061454e565b612474565b604051610b759190614eba565b60405180910390f35b348015610b8a57600080fd5b50610b936124fb565b604051610ba09190614eba565b60405180910390f35b348015610bb557600080fd5b50610bd06004803603810190610bcb919061473b565b612501565b005b348015610bde57600080fd5b50610bf96004803603810190610bf491906144b4565b612611565b005b348015610c0757600080fd5b50610c226004803603810190610c1d91906145e1565b612abd565b005b348015610c3057600080fd5b50610c39612bad565b604051610c469190614eba565b60405180910390f35b348015610c5b57600080fd5b50610c64612bb3565b604051610c719190614eba565b60405180910390f35b348015610c8657600080fd5b50610ca16004803603810190610c9c91906147e1565b612bb9565b005b61dead81565b610cb1612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3590614cba565b60405180910390fd5b81602460006101000a81548160ff02191690831515021790555080602b60006101000a81548160ff0219169083151502179055505050565b6060600a8054610d85906151cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610db1906151cd565b8015610dfe5780601f10610dd357610100808354040283529160200191610dfe565b820191906000526020600020905b815481529060010190602001808311610de157829003601f168201915b5050505050905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e42610e3b612c92565b8484612c9a565b6001905092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fe55781600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610fdd91906150b7565b925050819055505b610ff0848484612e65565b90509392505050565b611001612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108590614cba565b60405180910390fd5b6000818360135461109f919061505d565b6110a9919061502c565b90506103e86013546110bb919061502c565b8110156110fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f490614d3a565b60405180910390fd5b806020819055508183600954611113919061505d565b61111d919061502c565b602181905550505050565b61038481565b600f5481565b60006009905090565b60105481565b60006111e5611150612c92565b84846005600061115e612c92565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111e09190614fd6565b612c9a565b6001905092915050565b600e5481565b6111fd612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128190614cba565b60405180910390fd5b6000818360135461129b919061505d565b6112a5919061502c565b90506103e86013546112b7919061502c565b8110156112f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f090614d3a565b60405180910390fd5b80601c81905550818360095461130f919061505d565b611319919061502c565b601d81905550505050565b600c5481565b611332612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b690614cba565b60405180910390fd5b60006029541480156113de5750602460019054906101000a900460ff16155b6113e757600080fd5b8060ff1660298190555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960159054906101000a900460ff1681565b60115481565b61143b612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90614cba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f90614e9a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a090614e9a565b60405180910390fd5b6115d460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611946565b6115df816001611946565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116975780601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6116c060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b31565b600560008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061178c60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b31565b11156117e7576117e560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826117e060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b31565b612e65565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602460019054906101000a900460ff1681565b6000611939827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e2e565b9050919050565b600d5481565b61194e612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d290614cba565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d5481565b611a44612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac890614cba565b60405180910390fd5b60648183611adf9190614fd6565b14611b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1690614e5a565b60405180910390fd5b81601081905550806011819055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b82612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0690614cba565b60405180910390fd5b611c3a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611946565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b611d00612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8490614cba565b60405180910390fd5b611388811115611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc990614dda565b60405180910390fd5b80600f8190555050565b611de4612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6890614cba565b60405180910390fd5b600015158115151415611edb576000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611f98565b600060045414611f385762093a8060045442611ef791906150b7565b11611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e90614d7a565b60405180910390fd5b5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426004819055505b5050565b611fa4612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202890614cba565b60405180910390fd5b600060255414612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90614e1a565b60405180910390fd5b8060258190555050565b600061208a61208f565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b80546120c7906151cd565b80601f01602080910402602001604051908101604052809291908181526020018280546120f3906151cd565b80156121405780601f1061211557610100808354040283529160200191612140565b820191906000526020600020905b81548152906001019060200180831161212357829003601f168201915b5050505050905090565b60006121ec612157612c92565b848460056000612165612c92565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121e791906150b7565b612c9a565b6001905092915050565b60125481565b6000612210612209612c92565b8484612e65565b506001905092915050565b6107d081565b61044c81565b61222f612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b390614cba565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516123059190614c62565b60405180910390a150565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612361612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e590614cba565b60405180910390fd5b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602a5481565b612509612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258d90614cba565b60405180910390fd5b61038483111580156125aa575061044c8211155b80156125b857506107d08111155b6125f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ee90614d1a565b60405180910390fd5b82600c8190555081600d8190555080600e81905550505050565b612619612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269d90614cba565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156126f357600080fd5b505afa158015612707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272b91906144e1565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561278d57600080fd5b505afa1580156127a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c591906144e1565b6040518363ffffffff1660e01b81526004016127e2929190614bd8565b60206040518083038186803b1580156127fa57600080fd5b505afa15801561280e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283291906144e1565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a35578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156128af57600080fd5b505afa1580156128c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e791906144e1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561294957600080fd5b505afa15801561295d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298191906144e1565b6040518363ffffffff1660e01b815260040161299e929190614bd8565b602060405180830381600087803b1580156129b857600080fd5b505af11580156129cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f091906144e1565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612a77565b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b612ac5612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4990614cba565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60215481565b6109c481565b612bc1612c92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4590614cba565b60405180910390fd5b8284601354612c5d919061505d565b612c67919061502c565b6022819055508082601354612c7c919061505d565b612c86919061502c565b60238190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0190614dba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7190614dba565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e589190614eba565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecd90614d5a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3d90614d5a565b60405180910390fd5b60008211612f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8090614d9a565b60405180910390fd5b612f938484613492565b1561331957602b60009054906101000a900460ff161561312657600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156130945743602c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561304b57600080fd5b43602c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613125565b43602c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156130e057600080fd5b43602c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131c75750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561321257601c54821115613211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320890614e7a565b60405180910390fd5b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156132ba5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561331857602054826132cc85611b31565b6132d69190614fd6565b1115613317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330e90614e3a565b60405180910390fd5b5b5b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133c05750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156133ca57600090505b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561347c57601960149054906101000a900460ff161580156134455750601960159054906101000a900460ff165b1561347b57600061345530611b31565b9050602254811061347957602354811061346f5760235490505b61347881613669565b5b505b5b613488858585846138e1565b9150509392505050565b600061349c61208f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561350a57506134da61208f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156135605750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135b65750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135f0575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156136295750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561366157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601960146101000a81548160ff02191690831515021790555060006012546011546010546136999190614fd6565b6136a39190614fd6565b14156136ae576138c3565b600060026012546011546010546136c59190614fd6565b6136cf9190614fd6565b601054846136dd919061505d565b6136e7919061502c565b6136f1919061502c565b90506000818361370191906150b7565b905061370c81613c44565b6000479050600060026012546011546010546137289190614fd6565b6137329190614fd6565b60105484613740919061505d565b61374a919061502c565b613754919061502c565b905060008411156137a5576137698482613e69565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828660405161379c93929190614f2f565b60405180910390a15b600084866137b391906150b7565b11156138be57601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012546011546138059190614fd6565b601154848661381491906150b7565b61381e919061505d565b613828919061502c565b9081150290604051600060405180830381858888f19350505050158015613853573d6000803e3d6000fd5b50601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156138bc573d6000803e3d6000fd5b505b505050505b6000601960146101000a81548160ff02191690831515021790555050565b6000602460009054906101000a900460ff1615613b0b5761390185610e4c565b80613911575061391084610e4c565b5b15613951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394890614dfa565b60405180910390fd5b602460019054906101000a900460ff166139d75761396f8585613f2b565b602460019054906101000a900460ff1615801561399257506139918585613492565b5b156139d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139c990614cfa565b60405180910390fd5b613b0a565b6000602654118015613a325750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015613a445750613a438585613492565b5b15613b095760295460265443613a5a91906150b7565b1015613b08576001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602a6000815480929190613acb906151ff565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e584604051613aff9190614bbd565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b5a91906150b7565b92505081905550600082613b6e5783613b7a565b613b798686866140e1565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613bcb9190614fd6565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c2f9190614eba565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613c6157613c60615304565b5b604051908082528060200260200182016040528015613c8f5781602001602082028036833780820191505090505b5090503081600081518110613ca757613ca66152d5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613d4957600080fd5b505afa158015613d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8191906144e1565b81600181518110613d9557613d946152d5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613e33959493929190614ed5565b600060405180830381600087803b158015613e4d57600080fd5b505af1158015613e61573d6000803e3d6000fd5b505050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613ed296959493929190614c01565b6060604051808303818588803b158015613eeb57600080fd5b505af1158015613eff573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f24919061478e565b5050505050565b602460019054906101000a900460ff1615613f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f7290614cda565b60405180910390fd5b613f858282613492565b158015613fdf5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156140dd576001602954146140075761138843613ffc9190614fd6565b60268190555061400f565b436026819055505b6001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602460016101000a81548160ff021916908315150217905550426027819055506001601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15960016040516140d49190614c62565b60405180910390a15b5050565b600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561414457600c549050614304565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156142fd576000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415801561423657504261012c600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142339190614fd6565b10155b1561424557600f5490506142f8565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141580156142e257504262015180600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142df9190614fd6565b10155b156142f1576109c490506142f7565b600d5490505b5b614303565b600e5490505b5b61430e8585613492565b1561433257600060255414806143275750600160255414155b1561433157600080fd5b5b60006127108285614343919061505d565b61434d919061502c565b905080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461439e9190614fd6565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144029190614eba565b60405180910390a3808461441691906150b7565b925050509392505050565b60008135905061443081615671565b92915050565b60008151905061444581615671565b92915050565b60008135905061445a81615688565b92915050565b60008135905061446f8161569f565b92915050565b600081359050614484816156b6565b92915050565b600081519050614499816156b6565b92915050565b6000813590506144ae816156cd565b92915050565b6000602082840312156144ca576144c9615333565b5b60006144d884828501614421565b91505092915050565b6000602082840312156144f7576144f6615333565b5b600061450584828501614436565b91505092915050565b6000806040838503121561452557614524615333565b5b60006145338582860161444b565b92505060206145448582860161444b565b9150509250929050565b6000806040838503121561456557614564615333565b5b600061457385828601614421565b925050602061458485828601614421565b9150509250929050565b6000806000606084860312156145a7576145a6615333565b5b60006145b586828701614421565b93505060206145c686828701614421565b92505060406145d786828701614475565b9150509250925092565b600080604083850312156145f8576145f7615333565b5b600061460685828601614421565b925050602061461785828601614460565b9150509250929050565b6000806040838503121561463857614637615333565b5b600061464685828601614421565b925050602061465785828601614475565b9150509250929050565b60006020828403121561467757614676615333565b5b600061468584828501614460565b91505092915050565b600080604083850312156146a5576146a4615333565b5b60006146b385828601614460565b92505060206146c485828601614460565b9150509250929050565b6000602082840312156146e4576146e3615333565b5b60006146f284828501614475565b91505092915050565b6000806040838503121561471257614711615333565b5b600061472085828601614475565b925050602061473185828601614475565b9150509250929050565b60008060006060848603121561475457614753615333565b5b600061476286828701614475565b935050602061477386828701614475565b925050604061478486828701614475565b9150509250925092565b6000806000606084860312156147a7576147a6615333565b5b60006147b58682870161448a565b93505060206147c68682870161448a565b92505060406147d78682870161448a565b9150509250925092565b600080600080608085870312156147fb576147fa615333565b5b600061480987828801614475565b945050602061481a87828801614475565b935050604061482b87828801614475565b925050606061483c87828801614475565b91505092959194509250565b60006020828403121561485e5761485d615333565b5b600061486c8482850161449f565b91505092915050565b6000614881838361488d565b60208301905092915050565b614896816150eb565b82525050565b6148a5816150eb565b82525050565b60006148b682614f91565b6148c08185614fb4565b93506148cb83614f81565b8060005b838110156148fc5781516148e38882614875565b97506148ee83614fa7565b9250506001810190506148cf565b5085935050505092915050565b6149128161510f565b82525050565b61492181615152565b82525050565b61493081615164565b82525050565b600061494182614f9c565b61494b8185614fc5565b935061495b81856020860161519a565b61496481615338565b840191505092915050565b600061497c601183614fc5565b915061498782615349565b602082019050919050565b600061499f602383614fc5565b91506149aa82615372565b604082019050919050565b60006149c2602583614fc5565b91506149cd826153c1565b604082019050919050565b60006149e5601783614fc5565b91506149f082615410565b602082019050919050565b6000614a08602383614fc5565b9150614a1382615439565b604082019050919050565b6000614a2b601483614fc5565b9150614a3682615488565b602082019050919050565b6000614a4e601283614fc5565b9150614a59826154b1565b602082019050919050565b6000614a71600883614fc5565b9150614a7c826154da565b602082019050919050565b6000614a94601383614fc5565b9150614a9f82615503565b602082019050919050565b6000614ab7601683614fc5565b9150614ac28261552c565b602082019050919050565b6000614ada601083614fc5565b9150614ae582615555565b602082019050919050565b6000614afd600683614fc5565b9150614b088261557e565b602082019050919050565b6000614b20601a83614fc5565b9150614b2b826155a7565b602082019050919050565b6000614b43601383614fc5565b9150614b4e826155d0565b602082019050919050565b6000614b66601883614fc5565b9150614b71826155f9565b602082019050919050565b6000614b89603d83614fc5565b9150614b9482615622565b604082019050919050565b614ba88161513b565b82525050565b614bb781615145565b82525050565b6000602082019050614bd2600083018461489c565b92915050565b6000604082019050614bed600083018561489c565b614bfa602083018461489c565b9392505050565b600060c082019050614c16600083018961489c565b614c236020830188614b9f565b614c306040830187614927565b614c3d6060830186614927565b614c4a608083018561489c565b614c5760a0830184614b9f565b979650505050505050565b6000602082019050614c776000830184614909565b92915050565b6000602082019050614c926000830184614918565b92915050565b60006020820190508181036000830152614cb28184614936565b905092915050565b60006020820190508181036000830152614cd38161496f565b9050919050565b60006020820190508181036000830152614cf381614992565b9050919050565b60006020820190508181036000830152614d13816149b5565b9050919050565b60006020820190508181036000830152614d33816149d8565b9050919050565b60006020820190508181036000830152614d53816149fb565b9050919050565b60006020820190508181036000830152614d7381614a1e565b9050919050565b60006020820190508181036000830152614d9381614a41565b9050919050565b60006020820190508181036000830152614db381614a64565b9050919050565b60006020820190508181036000830152614dd381614a87565b9050919050565b60006020820190508181036000830152614df381614aaa565b9050919050565b60006020820190508181036000830152614e1381614acd565b9050919050565b60006020820190508181036000830152614e3381614af0565b9050919050565b60006020820190508181036000830152614e5381614b13565b9050919050565b60006020820190508181036000830152614e7381614b36565b9050919050565b60006020820190508181036000830152614e9381614b59565b9050919050565b60006020820190508181036000830152614eb381614b7c565b9050919050565b6000602082019050614ecf6000830184614b9f565b92915050565b600060a082019050614eea6000830188614b9f565b614ef76020830187614927565b8181036040830152614f0981866148ab565b9050614f18606083018561489c565b614f256080830184614b9f565b9695505050505050565b6000606082019050614f446000830186614b9f565b614f516020830185614b9f565b614f5e6040830184614b9f565b949350505050565b6000602082019050614f7b6000830184614bae565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614fe18261513b565b9150614fec8361513b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561502157615020615248565b5b828201905092915050565b60006150378261513b565b91506150428361513b565b92508261505257615051615277565b5b828204905092915050565b60006150688261513b565b91506150738361513b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150ac576150ab615248565b5b828202905092915050565b60006150c28261513b565b91506150cd8361513b565b9250828210156150e0576150df615248565b5b828203905092915050565b60006150f68261511b565b9050919050565b60006151088261511b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061515d82615176565b9050919050565b600061516f8261513b565b9050919050565b600061518182615188565b9050919050565b60006151938261511b565b9050919050565b60005b838110156151b857808201518184015260208101905061519d565b838111156151c7576000848401525b50505050565b600060028204905060018216806151e557607f821691505b602082108114156151f9576151f86152a6565b5b50919050565b600061520a8261513b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561523d5761523c615248565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000600082015250565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b7f4d7573742062652061626f766520302e3125206f6620746f74616c207375707060008201527f6c792e0000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b7f43616e6e6f7420657863656564206d6178696d756d2e00000000000000000000600082015250565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f4d7573742061646420757020746f203130302500000000000000000000000000600082015250565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b61567a816150eb565b811461568557600080fd5b50565b615691816150fd565b811461569c57600080fd5b50565b6156a88161510f565b81146156b357600080fd5b50565b6156bf8161513b565b81146156ca57600080fd5b50565b6156d681615145565b81146156e157600080fd5b5056fea26469706673582212209bb163c04478dcca41b3bfddb636b1d8b3816f254e916fd0b7baae581cf5b2b064736f6c63430008070033

Deployed Bytecode Sourcemap

5732:19698:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7444:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16443:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12532:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7269:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13268:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15854:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12267:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13882:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17747:325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6689:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6599:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12356:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6843:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14196:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6504:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17419:320;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6432:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16270:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7311:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7754:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6884:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10950:761;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15579:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8483:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13754:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6467:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15712:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7965:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17179:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12845:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11719:195;;;;;;;;;;;;;:::i;:::-;;17001:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15161:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15968:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12618:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10863:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12442:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14419:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6925:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13093:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6787:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6737:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18588:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12970:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18377:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12704:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8734:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16620:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14652:501;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16134:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8226:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6545:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18080:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7444:73;7475:42;7444:73;:::o;16443:169::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16557:9:::1;16538:16;;:28;;;;;;;;;;;;;;;;;;16595:9;16577:15;;:27;;;;;;;;;;;;;;;;;;16443:169:::0;;:::o;12532:80::-;12580:13;12604:5;12597:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12532:80;:::o;7269:35::-;;;;;;;;;;;;;:::o;13268:161::-;13343:4;13360:39;13369:12;:10;:12::i;:::-;13383:7;13392:6;13360:8;:39::i;:::-;13417:4;13410:11;;13268:161;;;;:::o;15854:106::-;15910:4;15934:9;:18;15944:7;15934:18;;;;;;;;;;;;;;;;;;;;;;;;;15927:25;;15854:106;;;:::o;12267:83::-;12322:7;12340;;12333:14;;12267:83;:::o;13882:306::-;13982:4;14038:17;14003:11;:19;14015:6;14003:19;;;;;;;;;;;;;;;:31;14023:10;14003:31;;;;;;;;;;;;;;;;:52;13999:126;;14107:6;14072:11;:19;14084:6;14072:19;;;;;;;;;;;;;;;:31;14092:10;14072:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;13999:126;14144:36;14154:6;14162:9;14173:6;14144:9;:36::i;:::-;14137:43;;13882:306;;;;;:::o;17747:325::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17837:13:::1;17875:7;17864;17854;;:17;;;;:::i;:::-;17853:29;;;;:::i;:::-;17837:45;;17921:4;17911:7;;:14;;;;:::i;:::-;17901:5;:25;;17893:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17994:5;17977:14;:22;;;;18057:7;18046;18029:14;;:24;;;;:::i;:::-;18028:36;;;;:::i;:::-;18010:15;:54;;;;17826:246;17747:325:::0;;:::o;6689:41::-;6727:3;6689:41;:::o;6599:42::-;;;;:::o;12356:80::-;12408:5;7104:1;12417:16;;12356:80;:::o;6843:34::-;;;;:::o;14196:215::-;14284:4;14301:80;14310:12;:10;:12::i;:::-;14324:7;14370:10;14333:11;:25;14345:12;:10;:12::i;:::-;14333:25;;;;;;;;;;;;;;;:34;14359:7;14333:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;14301:8;:80::i;:::-;14399:4;14392:11;;14196:215;;;;:::o;6504:34::-;;;;:::o;17419:320::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17508:13:::1;17546:7;17535;17525;;:17;;;;:::i;:::-;17524:29;;;;:::i;:::-;17508:45;;17592:4;17582:7;;:14;;;;:::i;:::-;17572:5;:25;;17564:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17663:5;17648:12;:20;;;;17724:7;17713;17696:14;;:24;;;;:::i;:::-;17695:36;;;;:::i;:::-;17679:13;:52;;;;17497:242;17419:320:::0;;:::o;6432:28::-;;;;:::o;16270:165::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16371:1:::1;16354:13;;:18;:39;;;;;16377:16;;;;;;;;;;;16376:17;16354:39;16345:49;;;::::0;::::1;;16421:6;16405:22;;:13;:22;;;;16270:165:::0;:::o;7311:21::-;;;;;;;;;;;;;:::o;7754:41::-;;;;;;;;;;;;;:::o;6884:34::-;;;;:::o;10950:761::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11051:1:::1;11031:22;;:8;:22;;;;11023:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;7475:42;11138:16;;:8;:16;;;;11130:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;11231:34;11251:6;::::0;::::1;;;;;;;;11259:5;11231:19;:34::i;:::-;11276:35;11296:8;11306:4;11276:19;:35::i;:::-;11364:6;::::0;::::1;;;;;;;;11336:35;;:16;;;;;;;;;;;:35;;;11332:90;;;11413:8;11386:16;;:36;;;;;;;;;;;;;;;;;;11332:90;11475:17;11485:6;::::0;::::1;;;;;;;;11475:9;:17::i;:::-;11443:11;:19;11455:6:::0;::::1;;;;;;;;;;11443:19;;;;;;;;;;;;;;;:29;11463:8;11443:29;;;;;;;;;;;;;;;:49;;;;11526:1;11506:17;11516:6;::::0;::::1;;;;;;;;11506:9;:17::i;:::-;:21;11503:99;;;11544:46;11554:6;::::0;::::1;;;;;;;;11562:8;11572:17;11582:6;::::0;::::1;;;;;;;;11572:9;:17::i;:::-;11544:9;:46::i;:::-;;11503:99;11631:8;11622:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;11684:8;11655:38;;11676:6;::::0;::::1;;;;;;;;11655:38;;;;;;;;;;;;10950:761:::0;:::o;15579:125::-;15644:4;15668:19;:28;15688:7;15668:28;;;;;;;;;;;;;;;;;;;;;;;;;15661:35;;15579:125;;;:::o;8483:36::-;;;;;;;;;;;;;:::o;13754:120::-;13807:4;13831:35;13839:7;13848:17;13831:7;:35::i;:::-;13824:42;;13754:120;;;:::o;6467:30::-;;;;:::o;15712:134::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15831:7:::1;15800:19;:28;15820:7;15800:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15712:134:::0;;:::o;7965:77::-;;;;:::o;17179:232::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17300:3:::1;17287:9;17275;:21;;;;:::i;:::-;:28;17266:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17356:9;17338:15;:27;;;;17394:9;17376:15;:27;;;;17179:232:::0;;:::o;12845:117::-;12911:7;12938;:16;12946:7;12938:16;;;;;;;;;;;;;;;;12931:23;;12845:117;;;:::o;11719:195::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11786:34:::1;11806:6;::::0;::::1;;;;;;;;11814:5;11786:19;:34::i;:::-;11848:1;11831:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;11903:1;11866:40;;11887:6;::::0;::::1;;;;;;;;11866:40;;;;;;;;;;;;11719:195::o:0;17001:170::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6678:4:::1;17076:7;:21;;17068:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17146:7;17135:8;:18;;;;17001:170:::0;:::o;15161:410::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15253:5:::1;15242:16;;:7;:16;;;15238:326;;;15291:5;15275:7;:13;15283:4;15275:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15238:326;;;15354:1;15333:17;;:22;15329:139;;15422:7;15402:17;;15384:15;:35;;;;:::i;:::-;:45;15376:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15329:139;15498:4;15482:7;:13;15490:4;15482:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15537:15;15517:17;:35;;;;15238:326;15161:410:::0;;:::o;15968:158::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16067:1:::1;16050:13;;:18;16041:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16106:12;16090:13;:28;;;;15968:158:::0;:::o;12618:80::-;12670:7;12688;:5;:7::i;:::-;12681:14;;12618:80;:::o;10863:79::-;10901:7;10928:6;;;;;;;;;;;10921:13;;10863:79;:::o;12442:84::-;12492:13;12516:7;12509:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12442:84;:::o;14419:225::-;14512:4;14529:85;14538:12;:10;:12::i;:::-;14552:7;14598:15;14561:11;:25;14573:12;:10;:12::i;:::-;14561:25;;;;;;;;;;;;;;;:34;14587:7;14561:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;14529:8;:85::i;:::-;14632:4;14625:11;;14419:225;;;;:::o;6925:28::-;;;;:::o;13093:167::-;13171:4;13188:42;13198:12;:10;:12::i;:::-;13212:9;13223:6;13188:9;:42::i;:::-;;13248:4;13241:11;;13093:167;;;;:::o;6787:47::-;6830:4;6787:47;:::o;6737:43::-;6776:4;6737:43;:::o;18588:171::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;18689:8:::1;18665:21;;:32;;;;;;;;;;;;;;;;;;18713:38;18742:8;18713:38;;;;;;:::i;:::-;;;;;;;;18588:171:::0;:::o;12970:115::-;13034:7;13061;:16;13069:7;13061:16;;;;;;;;;;;;;;;;13054:23;;12970:115;;;:::o;18377:203::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;18514:15:::1;18487:16;;:43;;;;;;;;;;;;;;;;;;18562:9;18541:10;;:31;;;;;;;;;;;;;;;;;;18377:203:::0;;:::o;12704:133::-;12788:7;12806:11;:19;12818:6;12806:19;;;;;;;;;;;;;;;:28;12826:7;12806:28;;;;;;;;;;;;;;;;12799:35;;12704:133;;;;:::o;8734:32::-;;;;:::o;16620:373::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6727:3:::1;16730:6;:21;;:65;;;;;6776:4;16772:7;:23;;16730:65;:117;;;;;6830:4;16816:11;:31;;16730:117;16722:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;16913:6;16903:7;:16;;;;16941:7;16930:8;:18;;;;16974:11;16959:12;:26;;;;16620:373:::0;;;:::o;14652:501::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;14723:29:::1;14774:9;14723:61;;14795:16;14832:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14814:47;;;14870:4;14877:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14814:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14795:100;;14930:1;14910:22;;:8;:22;;;14906:207;;;14976:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14958:50;;;15017:4;15024:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14958:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14949:6;;:93;;;;;;;;;;;;;;;;;;14906:207;;;15093:8;15084:6;;:17;;;;;;;;;;;;;;;;;;14906:207;15135:10;15123:9;;:22;;;;;;;;;;;;;;;;;;14712:441;;14652:501:::0;:::o;16134:128::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16247:7:::1;16226:9;:18;16236:7;16226:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;16134:128:::0;;:::o;8226:87::-;;;;:::o;6545:47::-;6588:4;6545:47;:::o;18080:289::-;9438:12;:10;:12::i;:::-;9428:22;;:6;;;;;;;;;;:22;;;9420:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;18280:16:::1;18260;18250:7;;:26;;;;:::i;:::-;18249:47;;;;:::i;:::-;18233:13;:63;;;;18348:13;18331;18321:7;;:23;;;;:::i;:::-;18320:41;;;;:::i;:::-;18307:10;:54;;;;18080:289:::0;;;;:::o;125:107::-;170:15;213:10;198:26;;125:107;:::o;13437:309::-;13549:1;13531:20;;:6;:20;;;;13523:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13613:1;13594:21;;:7;:21;;;;13586:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13683:6;13652:11;:19;13664:6;13652:19;;;;;;;;;;;;;;;:28;13672:7;13652:28;;;;;;;;;;;;;;;:37;;;;13722:7;13705:33;;13714:6;13705:33;;;13731:6;13705:33;;;;;;:::i;:::-;;;;;;;;13437:309;;;:::o;19098:1646::-;19177:4;19218:1;19202:18;;:4;:18;;;;19194:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19278:1;19264:16;;:2;:16;;;;19256:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19333:1;19324:6;:10;19316:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;19361:20;19372:4;19378:2;19361:10;:20::i;:::-;19358:707;;;19402:15;;;;;;;;;;;19398:347;;;19442:7;:13;19450:4;19442:13;;;;;;;;;;;;;;;;;;;;;;;;;19438:292;;;19504:12;19487:9;:13;19497:2;19487:13;;;;;;;;;;;;;;;;:29;;19479:38;;;;;;19556:12;19540:9;:13;19550:2;19540:13;;;;;;;;;;;;;;;:28;;;;19438:292;;;19644:12;19625:9;:15;19635:4;19625:15;;;;;;;;;;;;;;;;:31;;19617:40;;;;;;19698:12;19680:9;:15;19690:4;19680:15;;;;;;;;;;;;;;;:30;;;;19438:292;19398:347;19762:7;:13;19770:4;19762:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;19779:7;:11;19787:2;19779:11;;;;;;;;;;;;;;;;;;;;;;;;;19762:28;19759:126;;;19828:12;;19818:6;:22;;19810:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;19759:126;19908:14;;;;;;;;;;;19902:20;;:2;:20;;;;:36;;;;;19927:7;:11;19935:2;19927:11;;;;;;;;;;;;;;;;;;;;;;;;;19926:12;19902:36;19899:155;;;19993:14;;19983:6;19967:13;19977:2;19967:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;19959:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;19899:155;19358:707;20077:12;20092:4;20077:19;;20110;:25;20130:4;20110:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20139:19;:23;20159:2;20139:23;;;;;;;;;;;;;;;;;;;;;;;;;20110:52;20107:98;;;20188:5;20178:15;;20107:98;20221:7;:11;20229:2;20221:11;;;;;;;;;;;;;;;;;;;;;;;;;20217:457;;;20254:16;;;;;;;;;;;20253:17;:59;;;;;20291:21;;;;;;;;;;;20253:59;20249:408;;;20347:28;20378:24;20396:4;20378:9;:24::i;:::-;20347:55;;20449:13;;20425:20;:37;20421:221;;20514:10;;20490:20;:34;20487:77;;20551:10;;20528:33;;20487:77;20586:36;20601:20;20586:14;:36::i;:::-;20421:221;20328:329;20249:408;20217:457;20692:44;20710:4;20716:2;20720:6;20728:7;20692:17;:44::i;:::-;20685:51;;;19098:1646;;;;;:::o;18767:323::-;18835:4;18867:7;:5;:7::i;:::-;18859:15;;:4;:15;;;;:45;;;;;18897:7;:5;:7::i;:::-;18891:13;;:2;:13;;;;18859:45;:84;;;;;18922:17;:21;18940:2;18922:21;;;;;;;;;;;;;;;;;;;;;;;;;18921:22;18859:84;:125;;;;;18961:17;:23;18979:4;18961:23;;;;;;;;;;;;;;;;;;;;;;;;;18960:24;18859:125;:152;;;;;7475:42;19001:10;;:2;:10;;;;18859:152;:185;;;;;19042:1;19028:16;;:2;:16;;;;18859:185;:223;;;;;19077:4;19061:21;;:4;:21;;;;18859:223;18852:230;;18767:323;;;;:::o;20752:1014::-;9321:4;9302:16;;:23;;;;;;;;;;;;;;;;;;20890:1:::1;20877:9;;20859:15;;20841;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;:50;20837:76;;;20906:7;;20837:76;20923:17;21038:1;21024:9;;21006:15;;20988;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;20968:15;;20945:20;:38;;;;:::i;:::-;20944:90;;;;:::i;:::-;20943:96;;;;:::i;:::-;20923:116;;21052:20;21098:9;21075:20;:32;;;;:::i;:::-;21052:55;;21118:30;21135:12;21118:16;:30::i;:::-;21161:22;21186:21;21161:46;;21218:24;21334:1;21320:9;;21302:15;;21284;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;21264:15;;21247:14;:32;;;;:::i;:::-;21246:84;;;;:::i;:::-;21245:90;;;;:::i;:::-;21218:117;;21364:1;21352:9;:13;21348:161;;;21382:41;21395:9;21406:16;21382:12;:41::i;:::-;21443:54;21458:9;21469:16;21487:9;21443:54;;;;;;;;:::i;:::-;;;;;;;;21348:161;21558:1;21546:9;21523:20;:32;;;;:::i;:::-;:36;21519:240;;;21576:16;;;;;;;;;;;:25;;:114;21679:9;;21661:15;;:27;;;;:::i;:::-;21641:15;;21621:16;21604:14;:33;;;;:::i;:::-;21603:53;;;;:::i;:::-;21602:87;;;;:::i;:::-;21576:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21705:10;;;;;;;;;;;:19;;:42;21725:21;21705:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21519:240;20826:940;;;;9336:1;9367:5:::0;9348:16;;:24;;;;;;;;;;;;;;;;;;20752:1014;:::o;23162:1177::-;23262:4;23283:16;;;;;;;;;;;23279:819;;;23319:14;23328:4;23319:8;:14::i;:::-;:30;;;;23337:12;23346:2;23337:8;:12::i;:::-;23319:30;23315:97;;;23370:26;;;;;;;;;;:::i;:::-;;;;;;;;23315:97;23433:16;;;;;;;;;;;23428:659;;23470:28;23489:4;23495:2;23470:18;:28::i;:::-;23522:16;;;;;;;;;;;23521:17;:41;;;;;23542:20;23553:4;23559:2;23542:10;:20::i;:::-;23521:41;23517:137;;;23587:47;;;;;;;;;;:::i;:::-;;;;;;;;23517:137;23428:659;;;23713:1;23698:12;;:16;:55;;;;;23740:7;:13;23748:4;23740:13;;;;;;;;;;;;;;;;;;;;;;;;;23698:55;:101;;;;;23779:20;23790:4;23796:2;23779:10;:20::i;:::-;23698:101;23694:378;;;23876:13;;23861:12;;23846;:27;;;;:::i;:::-;:43;23842:211;;;23934:4;23918:9;:13;23928:2;23918:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;23965:13;;:16;;;;;;;;;:::i;:::-;;;;;;24013;24026:2;24013:16;;;;;;:::i;:::-;;;;;;;;23842:211;23694:378;23428:659;23279:819;24127:6;24110:7;:13;24118:4;24110:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;24144:22;24170:7;24169:48;;24211:6;24169:48;;;24181:27;24191:4;24197:2;24201:6;24181:9;:27::i;:::-;24169:48;24144:73;;24243:14;24228:7;:11;24236:2;24228:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;24290:2;24275:34;;24284:4;24275:34;;;24294:14;24275:34;;;;;;:::i;:::-;;;;;;;;24327:4;24320:11;;;23162:1177;;;;;;:::o;21774:417::-;21841:21;21879:1;21865:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21841:40;;21910:4;21892;21897:1;21892:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21936:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21926:4;21931:1;21926:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;21965:9;;;;;;;;;;;:60;;;22040:11;22066:1;22110:4;22137;22157:15;21965:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21830:361;21774:417;:::o;22199:332::-;22280:9;;;;;;;;;;;:25;;;22313:9;22346:4;22366:11;22392:1;22435;7475:42;22497:15;22280:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22199:332;;:::o;22539:615::-;22621:16;;;;;;;;;;;22620:17;22612:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22693:20;22704:4;22710:2;22693:10;:20::i;:::-;22692:21;:37;;;;;22723:6;;;;;;;;;;;22717:12;;:2;:12;;;22692:37;22688:459;;;22767:1;22750:13;;:18;22746:161;;22819:4;22804:12;:19;;;;:::i;:::-;22789:12;:34;;;;22746:161;;;22879:12;22864;:27;;;;22746:161;22949:4;22923:17;:23;22941:4;22923:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;22987:4;22968:16;;:23;;;;;;;;;;;;;;;;;;23021:15;23006:12;:30;;;;23077:4;23053:21;;:28;;;;;;;;;;;;;;;;;;23101:34;23130:4;23101:34;;;;;;:::i;:::-;;;;;;;;22688:459;22539:615;;:::o;24347:1080::-;24426:7;24446:18;24489:6;;;;;;;;;;;24481:14;;:4;:14;;;24477:578;;;24525:7;;24512:20;;24477:578;;;24560:6;;;;;;;;;;;24554:12;;:2;:12;;;24550:505;;;24603:1;24587:7;:13;24595:4;24587:13;;;;;;;;;;;;;;;;:17;;:82;;;;;24653:15;24639:9;24622:7;:13;24630:4;24622:13;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;:46;;24587:82;24583:389;;;24703:8;;24690:21;;24583:389;;;24766:1;24750:7;:13;24758:4;24750:13;;;;;;;;;;;;;;;;:17;;:81;;;;;24815:15;24802:8;24785:7;:13;24793:4;24785:13;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;:45;;24750:81;24746:226;;;6588:4;24852:29;;24746:226;;;24948:8;;24935:21;;24746:226;24583:389;24550:505;;;25031:12;;25018:25;;24550:505;24477:578;25071:20;25082:4;25088:2;25071:10;:20::i;:::-;25067:140;;;25128:1;25111:13;;:18;:40;;;;25150:1;25133:13;;:18;;25111:40;25107:89;;;25172:8;;;25107:89;25067:140;25219:17;7006:5;25248:10;25239:6;:19;;;;:::i;:::-;:38;;;;:::i;:::-;25219:58;;25316:9;25290:7;:22;25306:4;25290:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;25364:4;25341:40;;25350:4;25341:40;;;25371:9;25341:40;;;;;;:::i;:::-;;;;;;;;25410:9;25401:6;:18;;;;:::i;:::-;25394:25;;;;24347:1080;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:139::-;647:5;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;601:139;;;;:::o;746:143::-;803:5;834:6;828:13;819:22;;850:33;877:5;850:33;:::i;:::-;746:143;;;;:::o;895:135::-;939:5;977:6;964:20;955:29;;993:31;1018:5;993:31;:::i;:::-;895:135;;;;:::o;1036:329::-;1095:6;1144:2;1132:9;1123:7;1119:23;1115:32;1112:119;;;1150:79;;:::i;:::-;1112:119;1270:1;1295:53;1340:7;1331:6;1320:9;1316:22;1295:53;:::i;:::-;1285:63;;1241:117;1036:329;;;;:::o;1371:351::-;1441:6;1490:2;1478:9;1469:7;1465:23;1461:32;1458:119;;;1496:79;;:::i;:::-;1458:119;1616:1;1641:64;1697:7;1688:6;1677:9;1673:22;1641:64;:::i;:::-;1631:74;;1587:128;1371:351;;;;:::o;1728:506::-;1812:6;1820;1869:2;1857:9;1848:7;1844:23;1840:32;1837:119;;;1875:79;;:::i;:::-;1837:119;1995:1;2020:61;2073:7;2064:6;2053:9;2049:22;2020:61;:::i;:::-;2010:71;;1966:125;2130:2;2156:61;2209:7;2200:6;2189:9;2185:22;2156:61;:::i;:::-;2146:71;;2101:126;1728:506;;;;;:::o;2240:474::-;2308:6;2316;2365:2;2353:9;2344:7;2340:23;2336:32;2333:119;;;2371:79;;:::i;:::-;2333:119;2491:1;2516:53;2561:7;2552:6;2541:9;2537:22;2516:53;:::i;:::-;2506:63;;2462:117;2618:2;2644:53;2689:7;2680:6;2669:9;2665:22;2644:53;:::i;:::-;2634:63;;2589:118;2240:474;;;;;:::o;2720:619::-;2797:6;2805;2813;2862:2;2850:9;2841:7;2837:23;2833:32;2830:119;;;2868:79;;:::i;:::-;2830:119;2988:1;3013:53;3058:7;3049:6;3038:9;3034:22;3013:53;:::i;:::-;3003:63;;2959:117;3115:2;3141:53;3186:7;3177:6;3166:9;3162:22;3141:53;:::i;:::-;3131:63;;3086:118;3243:2;3269:53;3314:7;3305:6;3294:9;3290:22;3269:53;:::i;:::-;3259:63;;3214:118;2720:619;;;;;:::o;3345:468::-;3410:6;3418;3467:2;3455:9;3446:7;3442:23;3438:32;3435:119;;;3473:79;;:::i;:::-;3435:119;3593:1;3618:53;3663:7;3654:6;3643:9;3639:22;3618:53;:::i;:::-;3608:63;;3564:117;3720:2;3746:50;3788:7;3779:6;3768:9;3764:22;3746:50;:::i;:::-;3736:60;;3691:115;3345:468;;;;;:::o;3819:474::-;3887:6;3895;3944:2;3932:9;3923:7;3919:23;3915:32;3912:119;;;3950:79;;:::i;:::-;3912:119;4070:1;4095:53;4140:7;4131:6;4120:9;4116:22;4095:53;:::i;:::-;4085:63;;4041:117;4197:2;4223:53;4268:7;4259:6;4248:9;4244:22;4223:53;:::i;:::-;4213:63;;4168:118;3819:474;;;;;:::o;4299:323::-;4355:6;4404:2;4392:9;4383:7;4379:23;4375:32;4372:119;;;4410:79;;:::i;:::-;4372:119;4530:1;4555:50;4597:7;4588:6;4577:9;4573:22;4555:50;:::i;:::-;4545:60;;4501:114;4299:323;;;;:::o;4628:462::-;4690:6;4698;4747:2;4735:9;4726:7;4722:23;4718:32;4715:119;;;4753:79;;:::i;:::-;4715:119;4873:1;4898:50;4940:7;4931:6;4920:9;4916:22;4898:50;:::i;:::-;4888:60;;4844:114;4997:2;5023:50;5065:7;5056:6;5045:9;5041:22;5023:50;:::i;:::-;5013:60;;4968:115;4628:462;;;;;:::o;5096:329::-;5155:6;5204:2;5192:9;5183:7;5179:23;5175:32;5172:119;;;5210:79;;:::i;:::-;5172:119;5330:1;5355:53;5400:7;5391:6;5380:9;5376:22;5355:53;:::i;:::-;5345:63;;5301:117;5096:329;;;;:::o;5431:474::-;5499:6;5507;5556:2;5544:9;5535:7;5531:23;5527:32;5524:119;;;5562:79;;:::i;:::-;5524:119;5682:1;5707:53;5752:7;5743:6;5732:9;5728:22;5707:53;:::i;:::-;5697:63;;5653:117;5809:2;5835:53;5880:7;5871:6;5860:9;5856:22;5835:53;:::i;:::-;5825:63;;5780:118;5431:474;;;;;:::o;5911:619::-;5988:6;5996;6004;6053:2;6041:9;6032:7;6028:23;6024:32;6021:119;;;6059:79;;:::i;:::-;6021:119;6179:1;6204:53;6249:7;6240:6;6229:9;6225:22;6204:53;:::i;:::-;6194:63;;6150:117;6306:2;6332:53;6377:7;6368:6;6357:9;6353:22;6332:53;:::i;:::-;6322:63;;6277:118;6434:2;6460:53;6505:7;6496:6;6485:9;6481:22;6460:53;:::i;:::-;6450:63;;6405:118;5911:619;;;;;:::o;6536:663::-;6624:6;6632;6640;6689:2;6677:9;6668:7;6664:23;6660:32;6657:119;;;6695:79;;:::i;:::-;6657:119;6815:1;6840:64;6896:7;6887:6;6876:9;6872:22;6840:64;:::i;:::-;6830:74;;6786:128;6953:2;6979:64;7035:7;7026:6;7015:9;7011:22;6979:64;:::i;:::-;6969:74;;6924:129;7092:2;7118:64;7174:7;7165:6;7154:9;7150:22;7118:64;:::i;:::-;7108:74;;7063:129;6536:663;;;;;:::o;7205:765::-;7291:6;7299;7307;7315;7364:3;7352:9;7343:7;7339:23;7335:33;7332:120;;;7371:79;;:::i;:::-;7332:120;7491:1;7516:53;7561:7;7552:6;7541:9;7537:22;7516:53;:::i;:::-;7506:63;;7462:117;7618:2;7644:53;7689:7;7680:6;7669:9;7665:22;7644:53;:::i;:::-;7634:63;;7589:118;7746:2;7772:53;7817:7;7808:6;7797:9;7793:22;7772:53;:::i;:::-;7762:63;;7717:118;7874:2;7900:53;7945:7;7936:6;7925:9;7921:22;7900:53;:::i;:::-;7890:63;;7845:118;7205:765;;;;;;;:::o;7976:325::-;8033:6;8082:2;8070:9;8061:7;8057:23;8053:32;8050:119;;;8088:79;;:::i;:::-;8050:119;8208:1;8233:51;8276:7;8267:6;8256:9;8252:22;8233:51;:::i;:::-;8223:61;;8179:115;7976:325;;;;:::o;8307:179::-;8376:10;8397:46;8439:3;8431:6;8397:46;:::i;:::-;8475:4;8470:3;8466:14;8452:28;;8307:179;;;;:::o;8492:108::-;8569:24;8587:5;8569:24;:::i;:::-;8564:3;8557:37;8492:108;;:::o;8606:118::-;8693:24;8711:5;8693:24;:::i;:::-;8688:3;8681:37;8606:118;;:::o;8760:732::-;8879:3;8908:54;8956:5;8908:54;:::i;:::-;8978:86;9057:6;9052:3;8978:86;:::i;:::-;8971:93;;9088:56;9138:5;9088:56;:::i;:::-;9167:7;9198:1;9183:284;9208:6;9205:1;9202:13;9183:284;;;9284:6;9278:13;9311:63;9370:3;9355:13;9311:63;:::i;:::-;9304:70;;9397:60;9450:6;9397:60;:::i;:::-;9387:70;;9243:224;9230:1;9227;9223:9;9218:14;;9183:284;;;9187:14;9483:3;9476:10;;8884:608;;;8760:732;;;;:::o;9498:109::-;9579:21;9594:5;9579:21;:::i;:::-;9574:3;9567:34;9498:109;;:::o;9613:183::-;9726:63;9783:5;9726:63;:::i;:::-;9721:3;9714:76;9613:183;;:::o;9802:147::-;9897:45;9936:5;9897:45;:::i;:::-;9892:3;9885:58;9802:147;;:::o;9955:364::-;10043:3;10071:39;10104:5;10071:39;:::i;:::-;10126:71;10190:6;10185:3;10126:71;:::i;:::-;10119:78;;10206:52;10251:6;10246:3;10239:4;10232:5;10228:16;10206:52;:::i;:::-;10283:29;10305:6;10283:29;:::i;:::-;10278:3;10274:39;10267:46;;10047:272;9955:364;;;;:::o;10325:366::-;10467:3;10488:67;10552:2;10547:3;10488:67;:::i;:::-;10481:74;;10564:93;10653:3;10564:93;:::i;:::-;10682:2;10677:3;10673:12;10666:19;;10325:366;;;:::o;10697:::-;10839:3;10860:67;10924:2;10919:3;10860:67;:::i;:::-;10853:74;;10936:93;11025:3;10936:93;:::i;:::-;11054:2;11049:3;11045:12;11038:19;;10697:366;;;:::o;11069:::-;11211:3;11232:67;11296:2;11291:3;11232:67;:::i;:::-;11225:74;;11308:93;11397:3;11308:93;:::i;:::-;11426:2;11421:3;11417:12;11410:19;;11069:366;;;:::o;11441:::-;11583:3;11604:67;11668:2;11663:3;11604:67;:::i;:::-;11597:74;;11680:93;11769:3;11680:93;:::i;:::-;11798:2;11793:3;11789:12;11782:19;;11441:366;;;:::o;11813:::-;11955:3;11976:67;12040:2;12035:3;11976:67;:::i;:::-;11969:74;;12052:93;12141:3;12052:93;:::i;:::-;12170:2;12165:3;12161:12;12154:19;;11813:366;;;:::o;12185:::-;12327:3;12348:67;12412:2;12407:3;12348:67;:::i;:::-;12341:74;;12424:93;12513:3;12424:93;:::i;:::-;12542:2;12537:3;12533:12;12526:19;;12185:366;;;:::o;12557:::-;12699:3;12720:67;12784:2;12779:3;12720:67;:::i;:::-;12713:74;;12796:93;12885:3;12796:93;:::i;:::-;12914:2;12909:3;12905:12;12898:19;;12557:366;;;:::o;12929:365::-;13071:3;13092:66;13156:1;13151:3;13092:66;:::i;:::-;13085:73;;13167:93;13256:3;13167:93;:::i;:::-;13285:2;13280:3;13276:12;13269:19;;12929:365;;;:::o;13300:366::-;13442:3;13463:67;13527:2;13522:3;13463:67;:::i;:::-;13456:74;;13539:93;13628:3;13539:93;:::i;:::-;13657:2;13652:3;13648:12;13641:19;;13300:366;;;:::o;13672:::-;13814:3;13835:67;13899:2;13894:3;13835:67;:::i;:::-;13828:74;;13911:93;14000:3;13911:93;:::i;:::-;14029:2;14024:3;14020:12;14013:19;;13672:366;;;:::o;14044:::-;14186:3;14207:67;14271:2;14266:3;14207:67;:::i;:::-;14200:74;;14283:93;14372:3;14283:93;:::i;:::-;14401:2;14396:3;14392:12;14385:19;;14044:366;;;:::o;14416:365::-;14558:3;14579:66;14643:1;14638:3;14579:66;:::i;:::-;14572:73;;14654:93;14743:3;14654:93;:::i;:::-;14772:2;14767:3;14763:12;14756:19;;14416:365;;;:::o;14787:366::-;14929:3;14950:67;15014:2;15009:3;14950:67;:::i;:::-;14943:74;;15026:93;15115:3;15026:93;:::i;:::-;15144:2;15139:3;15135:12;15128:19;;14787:366;;;:::o;15159:::-;15301:3;15322:67;15386:2;15381:3;15322:67;:::i;:::-;15315:74;;15398:93;15487:3;15398:93;:::i;:::-;15516:2;15511:3;15507:12;15500:19;;15159:366;;;:::o;15531:::-;15673:3;15694:67;15758:2;15753:3;15694:67;:::i;:::-;15687:74;;15770:93;15859:3;15770:93;:::i;:::-;15888:2;15883:3;15879:12;15872:19;;15531:366;;;:::o;15903:::-;16045:3;16066:67;16130:2;16125:3;16066:67;:::i;:::-;16059:74;;16142:93;16231:3;16142:93;:::i;:::-;16260:2;16255:3;16251:12;16244:19;;15903:366;;;:::o;16275:118::-;16362:24;16380:5;16362:24;:::i;:::-;16357:3;16350:37;16275:118;;:::o;16399:112::-;16482:22;16498:5;16482:22;:::i;:::-;16477:3;16470:35;16399:112;;:::o;16517:222::-;16610:4;16648:2;16637:9;16633:18;16625:26;;16661:71;16729:1;16718:9;16714:17;16705:6;16661:71;:::i;:::-;16517:222;;;;:::o;16745:332::-;16866:4;16904:2;16893:9;16889:18;16881:26;;16917:71;16985:1;16974:9;16970:17;16961:6;16917:71;:::i;:::-;16998:72;17066:2;17055:9;17051:18;17042:6;16998:72;:::i;:::-;16745:332;;;;;:::o;17083:807::-;17332:4;17370:3;17359:9;17355:19;17347:27;;17384:71;17452:1;17441:9;17437:17;17428:6;17384:71;:::i;:::-;17465:72;17533:2;17522:9;17518:18;17509:6;17465:72;:::i;:::-;17547:80;17623:2;17612:9;17608:18;17599:6;17547:80;:::i;:::-;17637;17713:2;17702:9;17698:18;17689:6;17637:80;:::i;:::-;17727:73;17795:3;17784:9;17780:19;17771:6;17727:73;:::i;:::-;17810;17878:3;17867:9;17863:19;17854:6;17810:73;:::i;:::-;17083:807;;;;;;;;;:::o;17896:210::-;17983:4;18021:2;18010:9;18006:18;17998:26;;18034:65;18096:1;18085:9;18081:17;18072:6;18034:65;:::i;:::-;17896:210;;;;:::o;18112:274::-;18231:4;18269:2;18258:9;18254:18;18246:26;;18282:97;18376:1;18365:9;18361:17;18352:6;18282:97;:::i;:::-;18112:274;;;;:::o;18392:313::-;18505:4;18543:2;18532:9;18528:18;18520:26;;18592:9;18586:4;18582:20;18578:1;18567:9;18563:17;18556:47;18620:78;18693:4;18684:6;18620:78;:::i;:::-;18612:86;;18392:313;;;;:::o;18711:419::-;18877:4;18915:2;18904:9;18900:18;18892:26;;18964:9;18958:4;18954:20;18950:1;18939:9;18935:17;18928:47;18992:131;19118:4;18992:131;:::i;:::-;18984:139;;18711:419;;;:::o;19136:::-;19302:4;19340:2;19329:9;19325:18;19317:26;;19389:9;19383:4;19379:20;19375:1;19364:9;19360:17;19353:47;19417:131;19543:4;19417:131;:::i;:::-;19409:139;;19136:419;;;:::o;19561:::-;19727:4;19765:2;19754:9;19750:18;19742:26;;19814:9;19808:4;19804:20;19800:1;19789:9;19785:17;19778:47;19842:131;19968:4;19842:131;:::i;:::-;19834:139;;19561:419;;;:::o;19986:::-;20152:4;20190:2;20179:9;20175:18;20167:26;;20239:9;20233:4;20229:20;20225:1;20214:9;20210:17;20203:47;20267:131;20393:4;20267:131;:::i;:::-;20259:139;;19986:419;;;:::o;20411:::-;20577:4;20615:2;20604:9;20600:18;20592:26;;20664:9;20658:4;20654:20;20650:1;20639:9;20635:17;20628:47;20692:131;20818:4;20692:131;:::i;:::-;20684:139;;20411:419;;;:::o;20836:::-;21002:4;21040:2;21029:9;21025:18;21017:26;;21089:9;21083:4;21079:20;21075:1;21064:9;21060:17;21053:47;21117:131;21243:4;21117:131;:::i;:::-;21109:139;;20836:419;;;:::o;21261:::-;21427:4;21465:2;21454:9;21450:18;21442:26;;21514:9;21508:4;21504:20;21500:1;21489:9;21485:17;21478:47;21542:131;21668:4;21542:131;:::i;:::-;21534:139;;21261:419;;;:::o;21686:::-;21852:4;21890:2;21879:9;21875:18;21867:26;;21939:9;21933:4;21929:20;21925:1;21914:9;21910:17;21903:47;21967:131;22093:4;21967:131;:::i;:::-;21959:139;;21686:419;;;:::o;22111:::-;22277:4;22315:2;22304:9;22300:18;22292:26;;22364:9;22358:4;22354:20;22350:1;22339:9;22335:17;22328:47;22392:131;22518:4;22392:131;:::i;:::-;22384:139;;22111:419;;;:::o;22536:::-;22702:4;22740:2;22729:9;22725:18;22717:26;;22789:9;22783:4;22779:20;22775:1;22764:9;22760:17;22753:47;22817:131;22943:4;22817:131;:::i;:::-;22809:139;;22536:419;;;:::o;22961:::-;23127:4;23165:2;23154:9;23150:18;23142:26;;23214:9;23208:4;23204:20;23200:1;23189:9;23185:17;23178:47;23242:131;23368:4;23242:131;:::i;:::-;23234:139;;22961:419;;;:::o;23386:::-;23552:4;23590:2;23579:9;23575:18;23567:26;;23639:9;23633:4;23629:20;23625:1;23614:9;23610:17;23603:47;23667:131;23793:4;23667:131;:::i;:::-;23659:139;;23386:419;;;:::o;23811:::-;23977:4;24015:2;24004:9;24000:18;23992:26;;24064:9;24058:4;24054:20;24050:1;24039:9;24035:17;24028:47;24092:131;24218:4;24092:131;:::i;:::-;24084:139;;23811:419;;;:::o;24236:::-;24402:4;24440:2;24429:9;24425:18;24417:26;;24489:9;24483:4;24479:20;24475:1;24464:9;24460:17;24453:47;24517:131;24643:4;24517:131;:::i;:::-;24509:139;;24236:419;;;:::o;24661:::-;24827:4;24865:2;24854:9;24850:18;24842:26;;24914:9;24908:4;24904:20;24900:1;24889:9;24885:17;24878:47;24942:131;25068:4;24942:131;:::i;:::-;24934:139;;24661:419;;;:::o;25086:::-;25252:4;25290:2;25279:9;25275:18;25267:26;;25339:9;25333:4;25329:20;25325:1;25314:9;25310:17;25303:47;25367:131;25493:4;25367:131;:::i;:::-;25359:139;;25086:419;;;:::o;25511:222::-;25604:4;25642:2;25631:9;25627:18;25619:26;;25655:71;25723:1;25712:9;25708:17;25699:6;25655:71;:::i;:::-;25511:222;;;;:::o;25739:831::-;26002:4;26040:3;26029:9;26025:19;26017:27;;26054:71;26122:1;26111:9;26107:17;26098:6;26054:71;:::i;:::-;26135:80;26211:2;26200:9;26196:18;26187:6;26135:80;:::i;:::-;26262:9;26256:4;26252:20;26247:2;26236:9;26232:18;26225:48;26290:108;26393:4;26384:6;26290:108;:::i;:::-;26282:116;;26408:72;26476:2;26465:9;26461:18;26452:6;26408:72;:::i;:::-;26490:73;26558:3;26547:9;26543:19;26534:6;26490:73;:::i;:::-;25739:831;;;;;;;;:::o;26576:442::-;26725:4;26763:2;26752:9;26748:18;26740:26;;26776:71;26844:1;26833:9;26829:17;26820:6;26776:71;:::i;:::-;26857:72;26925:2;26914:9;26910:18;26901:6;26857:72;:::i;:::-;26939;27007:2;26996:9;26992:18;26983:6;26939:72;:::i;:::-;26576:442;;;;;;:::o;27024:214::-;27113:4;27151:2;27140:9;27136:18;27128:26;;27164:67;27228:1;27217:9;27213:17;27204:6;27164:67;:::i;:::-;27024:214;;;;:::o;27325:132::-;27392:4;27415:3;27407:11;;27445:4;27440:3;27436:14;27428:22;;27325:132;;;:::o;27463:114::-;27530:6;27564:5;27558:12;27548:22;;27463:114;;;:::o;27583:99::-;27635:6;27669:5;27663:12;27653:22;;27583:99;;;:::o;27688:113::-;27758:4;27790;27785:3;27781:14;27773:22;;27688:113;;;:::o;27807:184::-;27906:11;27940:6;27935:3;27928:19;27980:4;27975:3;27971:14;27956:29;;27807:184;;;;:::o;27997:169::-;28081:11;28115:6;28110:3;28103:19;28155:4;28150:3;28146:14;28131:29;;27997:169;;;;:::o;28172:305::-;28212:3;28231:20;28249:1;28231:20;:::i;:::-;28226:25;;28265:20;28283:1;28265:20;:::i;:::-;28260:25;;28419:1;28351:66;28347:74;28344:1;28341:81;28338:107;;;28425:18;;:::i;:::-;28338:107;28469:1;28466;28462:9;28455:16;;28172:305;;;;:::o;28483:185::-;28523:1;28540:20;28558:1;28540:20;:::i;:::-;28535:25;;28574:20;28592:1;28574:20;:::i;:::-;28569:25;;28613:1;28603:35;;28618:18;;:::i;:::-;28603:35;28660:1;28657;28653:9;28648:14;;28483:185;;;;:::o;28674:348::-;28714:7;28737:20;28755:1;28737:20;:::i;:::-;28732:25;;28771:20;28789:1;28771:20;:::i;:::-;28766:25;;28959:1;28891:66;28887:74;28884:1;28881:81;28876:1;28869:9;28862:17;28858:105;28855:131;;;28966:18;;:::i;:::-;28855:131;29014:1;29011;29007:9;28996:20;;28674:348;;;;:::o;29028:191::-;29068:4;29088:20;29106:1;29088:20;:::i;:::-;29083:25;;29122:20;29140:1;29122:20;:::i;:::-;29117:25;;29161:1;29158;29155:8;29152:34;;;29166:18;;:::i;:::-;29152:34;29211:1;29208;29204:9;29196:17;;29028:191;;;;:::o;29225:96::-;29262:7;29291:24;29309:5;29291:24;:::i;:::-;29280:35;;29225:96;;;:::o;29327:104::-;29372:7;29401:24;29419:5;29401:24;:::i;:::-;29390:35;;29327:104;;;:::o;29437:90::-;29471:7;29514:5;29507:13;29500:21;29489:32;;29437:90;;;:::o;29533:126::-;29570:7;29610:42;29603:5;29599:54;29588:65;;29533:126;;;:::o;29665:77::-;29702:7;29731:5;29720:16;;29665:77;;;:::o;29748:86::-;29783:7;29823:4;29816:5;29812:16;29801:27;;29748:86;;;:::o;29840:152::-;29916:9;29949:37;29980:5;29949:37;:::i;:::-;29936:50;;29840:152;;;:::o;29998:121::-;30056:9;30089:24;30107:5;30089:24;:::i;:::-;30076:37;;29998:121;;;:::o;30125:126::-;30175:9;30208:37;30239:5;30208:37;:::i;:::-;30195:50;;30125:126;;;:::o;30257:113::-;30307:9;30340:24;30358:5;30340:24;:::i;:::-;30327:37;;30257:113;;;:::o;30376:307::-;30444:1;30454:113;30468:6;30465:1;30462:13;30454:113;;;30553:1;30548:3;30544:11;30538:18;30534:1;30529:3;30525:11;30518:39;30490:2;30487:1;30483:10;30478:15;;30454:113;;;30585:6;30582:1;30579:13;30576:101;;;30665:1;30656:6;30651:3;30647:16;30640:27;30576:101;30425:258;30376:307;;;:::o;30689:320::-;30733:6;30770:1;30764:4;30760:12;30750:22;;30817:1;30811:4;30807:12;30838:18;30828:81;;30894:4;30886:6;30882:17;30872:27;;30828:81;30956:2;30948:6;30945:14;30925:18;30922:38;30919:84;;;30975:18;;:::i;:::-;30919:84;30740:269;30689:320;;;:::o;31015:233::-;31054:3;31077:24;31095:5;31077:24;:::i;:::-;31068:33;;31123:66;31116:5;31113:77;31110:103;;;31193:18;;:::i;:::-;31110:103;31240:1;31233:5;31229:13;31222:20;;31015:233;;;:::o;31254:180::-;31302:77;31299:1;31292:88;31399:4;31396:1;31389:15;31423:4;31420:1;31413:15;31440:180;31488:77;31485:1;31478:88;31585:4;31582:1;31575:15;31609:4;31606:1;31599:15;31626:180;31674:77;31671:1;31664:88;31771:4;31768:1;31761:15;31795:4;31792:1;31785:15;31812:180;31860:77;31857:1;31850:88;31957:4;31954:1;31947:15;31981:4;31978:1;31971:15;31998:180;32046:77;32043:1;32036:88;32143:4;32140:1;32133:15;32167:4;32164:1;32157:15;32307:117;32416:1;32413;32406:12;32430:102;32471:6;32522:2;32518:7;32513:2;32506:5;32502:14;32498:28;32488:38;;32430:102;;;:::o;32538:167::-;32678:19;32674:1;32666:6;32662:14;32655:43;32538:167;:::o;32711:222::-;32851:34;32847:1;32839:6;32835:14;32828:58;32920:5;32915:2;32907:6;32903:15;32896:30;32711:222;:::o;32939:224::-;33079:34;33075:1;33067:6;33063:14;33056:58;33148:7;33143:2;33135:6;33131:15;33124:32;32939:224;:::o;33169:173::-;33309:25;33305:1;33297:6;33293:14;33286:49;33169:173;:::o;33348:222::-;33488:34;33484:1;33476:6;33472:14;33465:58;33557:5;33552:2;33544:6;33540:15;33533:30;33348:222;:::o;33576:170::-;33716:22;33712:1;33704:6;33700:14;33693:46;33576:170;:::o;33752:168::-;33892:20;33888:1;33880:6;33876:14;33869:44;33752:168;:::o;33926:158::-;34066:10;34062:1;34054:6;34050:14;34043:34;33926:158;:::o;34090:169::-;34230:21;34226:1;34218:6;34214:14;34207:45;34090:169;:::o;34265:172::-;34405:24;34401:1;34393:6;34389:14;34382:48;34265:172;:::o;34443:166::-;34583:18;34579:1;34571:6;34567:14;34560:42;34443:166;:::o;34615:156::-;34755:8;34751:1;34743:6;34739:14;34732:32;34615:156;:::o;34777:176::-;34917:28;34913:1;34905:6;34901:14;34894:52;34777:176;:::o;34959:169::-;35099:21;35095:1;35087:6;35083:14;35076:45;34959:169;:::o;35134:174::-;35274:26;35270:1;35262:6;35258:14;35251:50;35134:174;:::o;35314:248::-;35454:34;35450:1;35442:6;35438:14;35431:58;35523:31;35518:2;35510:6;35506:15;35499:56;35314:248;:::o;35568:122::-;35641:24;35659:5;35641:24;:::i;:::-;35634:5;35631:35;35621:63;;35680:1;35677;35670:12;35621:63;35568:122;:::o;35696:138::-;35777:32;35803:5;35777:32;:::i;:::-;35770:5;35767:43;35757:71;;35824:1;35821;35814:12;35757:71;35696:138;:::o;35840:116::-;35910:21;35925:5;35910:21;:::i;:::-;35903:5;35900:32;35890:60;;35946:1;35943;35936:12;35890:60;35840:116;:::o;35962:122::-;36035:24;36053:5;36035:24;:::i;:::-;36028:5;36025:35;36015:63;;36074:1;36071;36064:12;36015:63;35962:122;:::o;36090:118::-;36161:22;36177:5;36161:22;:::i;:::-;36154:5;36151:33;36141:61;;36198:1;36195;36188:12;36141:61;36090:118;:::o

Swarm Source

ipfs://9bb163c04478dcca41b3bfddb636b1d8b3816f254e916fd0b7baae581cf5b2b0

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.