ETH Price: $2,620.80 (+1.22%)

Contract

0xeCaF27EB08bFc4f5B2b8dC6b027D81ccD0D4314d
 

Overview

ETH Balance

0.048005369009079911 ETH

Eth Value

$125.81 (@ $2,620.80/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve204321952024-08-01 7:26:1121 days ago1722497171IN
0xeCaF27EB...cD0D4314d
0 ETH0.00010234.10946336
Approve204213222024-07-30 19:01:2322 days ago1722366083IN
0xeCaF27EB...cD0D4314d
0 ETH0.000443399.39819077
Approve204063842024-07-28 16:56:3524 days ago1722185795IN
0xeCaF27EB...cD0D4314d
0 ETH0.000119994.46155715
Approve204063832024-07-28 16:56:2324 days ago1722185783IN
0xeCaF27EB...cD0D4314d
0 ETH0.000111014.45920348
Approve203478132024-07-20 12:42:3532 days ago1721479355IN
0xeCaF27EB...cD0D4314d
0 ETH0.000285446.05024305
Approve203219132024-07-16 21:58:3536 days ago1721167115IN
0xeCaF27EB...cD0D4314d
0 ETH0.000408028.69480943
Transfer200220322024-06-05 0:26:3578 days ago1717547195IN
0xeCaF27EB...cD0D4314d
0 ETH0.00033825.5045914
Transfer200220252024-06-05 0:25:1178 days ago1717547111IN
0xeCaF27EB...cD0D4314d
0 ETH0.000350765.71009482
Transfer200220192024-06-05 0:23:5978 days ago1717547039IN
0xeCaF27EB...cD0D4314d
0 ETH0.000292864.76749162
Transfer200220062024-06-05 0:21:2378 days ago1717546883IN
0xeCaF27EB...cD0D4314d
0 ETH0.000295754.81361627
Transfer200219972024-06-05 0:19:3578 days ago1717546775IN
0xeCaF27EB...cD0D4314d
0 ETH0.000324015.27363953
Approve200219832024-06-05 0:16:4778 days ago1717546607IN
0xeCaF27EB...cD0D4314d
0 ETH0.000256645.43988815
Transfer200219442024-06-05 0:08:3578 days ago1717546115IN
0xeCaF27EB...cD0D4314d
0 ETH0.000367395.97956821
Transfer200219352024-06-05 0:06:4778 days ago1717546007IN
0xeCaF27EB...cD0D4314d
0 ETH0.000357845.82535254
Transfer200219222024-06-05 0:04:1178 days ago1717545851IN
0xeCaF27EB...cD0D4314d
0 ETH0.000380266.19038402
Transfer200218972024-06-04 23:59:1178 days ago1717545551IN
0xeCaF27EB...cD0D4314d
0 ETH0.00033635.47364271
Transfer200218892024-06-04 23:57:3578 days ago1717545455IN
0xeCaF27EB...cD0D4314d
0 ETH0.000341985.5660498
Transfer200218822024-06-04 23:56:1178 days ago1717545371IN
0xeCaF27EB...cD0D4314d
0 ETH0.000343535.59130356
Transfer200218712024-06-04 23:53:5978 days ago1717545239IN
0xeCaF27EB...cD0D4314d
0 ETH0.000373576.08025988
Transfer200218602024-06-04 23:51:4778 days ago1717545107IN
0xeCaF27EB...cD0D4314d
0 ETH0.000370346.02772573
Approve199976972024-06-01 14:54:3581 days ago1717253675IN
0xeCaF27EB...cD0D4314d
0 ETH0.000374037.97459547
Approve199915582024-05-31 18:19:2382 days ago1717179563IN
0xeCaF27EB...cD0D4314d
0 ETH0.0006753614.29677395
Approve199873852024-05-31 4:19:3583 days ago1717129175IN
0xeCaF27EB...cD0D4314d
0 ETH0.000352487.46172587
Approve198985612024-05-18 18:16:4795 days ago1716056207IN
0xeCaF27EB...cD0D4314d
0 ETH0.000209644.44357552
Approve198823852024-05-16 11:57:3597 days ago1715860655IN
0xeCaF27EB...cD0D4314d
0 ETH0.000204334.32548085
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
190886322024-01-26 5:15:35209 days ago1706246135
0xeCaF27EB...cD0D4314d
0.1668164 ETH
190886322024-01-26 5:15:35209 days ago1706246135
0xeCaF27EB...cD0D4314d
0.1668164 ETH
176404812023-07-07 7:35:35412 days ago1688715335
0xeCaF27EB...cD0D4314d
0.39230844 ETH
176404812023-07-07 7:35:35412 days ago1688715335
0xeCaF27EB...cD0D4314d
0.39230844 ETH
174796042023-06-14 17:16:59434 days ago1686763019
0xeCaF27EB...cD0D4314d
0.71737045 ETH
174796042023-06-14 17:16:59434 days ago1686763019
0xeCaF27EB...cD0D4314d
0.71737045 ETH
174299472023-06-07 17:22:35441 days ago1686158555
0xeCaF27EB...cD0D4314d
0.95882593 ETH
174299472023-06-07 17:22:35441 days ago1686158555
0xeCaF27EB...cD0D4314d
0.95882593 ETH
174116002023-06-05 3:14:11444 days ago1685934851
0xeCaF27EB...cD0D4314d
0.34644457 ETH
174116002023-06-05 3:14:11444 days ago1685934851
0xeCaF27EB...cD0D4314d
0.34644457 ETH
173751012023-05-30 23:47:23449 days ago1685490443
0xeCaF27EB...cD0D4314d
0.00402202 ETH
173751012023-05-30 23:47:23449 days ago1685490443
0xeCaF27EB...cD0D4314d
0.08292079 ETH
173751012023-05-30 23:47:23449 days ago1685490443
0xeCaF27EB...cD0D4314d
1 wei
173751012023-05-30 23:47:23449 days ago1685490443
0xeCaF27EB...cD0D4314d
0.16584159 ETH
173751012023-05-30 23:47:23449 days ago1685490443
0xeCaF27EB...cD0D4314d
0.24876238 ETH
173436472023-05-26 13:44:59453 days ago1685108699
0xeCaF27EB...cD0D4314d
0.00441915 ETH
173436472023-05-26 13:44:59453 days ago1685108699
0xeCaF27EB...cD0D4314d
0.09069809 ETH
173436472023-05-26 13:44:59453 days ago1685108699
0xeCaF27EB...cD0D4314d
1 wei
173436472023-05-26 13:44:59453 days ago1685108699
0xeCaF27EB...cD0D4314d
0.18139619 ETH
173436472023-05-26 13:44:59453 days ago1685108699
0xeCaF27EB...cD0D4314d
0.27209429 ETH
173394192023-05-25 23:28:35454 days ago1685057315
0xeCaF27EB...cD0D4314d
0.00057013 ETH
173394192023-05-25 23:28:35454 days ago1685057315
0xeCaF27EB...cD0D4314d
0.02414407 ETH
173394192023-05-25 23:28:35454 days ago1685057315
0xeCaF27EB...cD0D4314d
1 wei
173394192023-05-25 23:28:35454 days ago1685057315
0xeCaF27EB...cD0D4314d
0.04828814 ETH
173394192023-05-25 23:28:35454 days ago1685057315
0xeCaF27EB...cD0D4314d
0.07243222 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HUGO

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
  _    _                   
 | |  | |                  
 | |__| |_   _  __ _  ___  
 |  __  | | | |/ _` |/ _ \ 
 | |  | | |_| | (_| | (_) |
 |_|  |_|\__,_|\__, |\___/ 
                __/ |      
               |___/ 
https://hugoeth.com
https://twitter.com/HoneyBadgerHugo
https://t.me/hugohoneybadger
https://www.facebook.com/groups/558845872934454/?ref=share&mibextid=SDPelY
https://youtube.com/@HoneyBadgerHUGO
https://www.tiktok.com/@hugohsji2i4?_t=8cLg7qCSASU&_r=1
https://instagram.com/honeybadgerhugo?igshid=NTc4MTIwNjQ2YQ==
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

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

interface IERC20 {

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

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

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

}

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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 DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    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 HUGO is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Honey Badger";
    string private _symbol = "HUGO";
    uint8 private _decimals = 18;

    address payable public marketingWallet = payable(0x2914382bd0aE2ab55F4341fd22F30E90c2C82D5f);
    address payable public DeveloperWallet = payable(0xe87912e625007Fe7472Ad7C453c213c4BE64D344);
    address public liquidityReciever;
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public blacklist;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 public _buyLiquidityFee = 5;
    uint256 public _buyMarketingFee = 10;
    uint256 public _buyDeveloperFee = 5;
    
    uint256 public _sellLiquidityFee = 5;
    uint256 public _sellMarketingFee = 20;
    uint256 public _sellDeveloperFee = 5;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 1000000000 * 10**_decimals;

    uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(100);   //0.001%

    uint256 public _maxTxAmount =  _totalSupply.mul(1).div(100);  //1%
    uint256 public _walletMax =   _totalSupply.mul(1).div(100);   //1%

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[DeveloperWallet] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[marketingWallet] = true;
        isWalletLimitExempt[DeveloperWallet] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[marketingWallet] = true;
        isTxLimitExempt[DeveloperWallet] = true;
        isTxLimitExempt[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);

        isMarketPair[address(uniswapPair)] = true;
        liquidityReciever = address(msg.sender);

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

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

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

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTransactionLimit = _status;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWallet = payable(newAddress);
    }

    function setLiquidityWalletAddress(address newAddress) external onlyOwner() {
        liquidityReciever = payable(newAddress);
    }

    function setDeveloperWalletAddress(address newAddress) external onlyOwner() {
        DeveloperWallet = payable(newAddress);
    }

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

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    function setBlacklist(address _adr, bool _status) external onlyOwner {
        blacklist[_adr] = _status;
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
    }

    function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _buyLiquidityFee = _Liquidity;
        _buyMarketingFee = _Marketing;
        _buyDeveloperFee = _Developer;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
    }

    function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _sellLiquidityFee = _Liquidity;
        _sellMarketingFee = _Marketing;
        _sellDeveloperFee = _Developer;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!blacklist[sender] && !blacklist[recipient], "Bot Enemy address Restricted!");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Amount Exceed From Max Wallet Limit!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
        
    }

    function rescueStuckedToken(address _token, uint _amount) external onlyOwner {
        IERC20(_token).transfer(msg.sender,_amount);
    }

    function rescueFunds() external onlyOwner {
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        uint256 totalShares = _totalTaxIfBuying.add(_totalTaxIfSelling);

        uint256 liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 MarketingShare = _buyMarketingFee.add(_sellMarketingFee);
        // uint256 DeveloperShare = _buyDeveloperFee.add(_sellDeveloperFee);
        
        uint256 tokenForLp = tAmount.mul(liquidityShare).div(totalShares).div(2);
        uint256 tokenForSwap = tAmount.sub(tokenForLp);

        uint256 initialBalance =  address(this).balance;
        swapTokensForEth(tokenForSwap);
        uint256 recievedBalance =  address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(liquidityShare.div(2));

        uint256 amountETHLiquidity = recievedBalance.mul(liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = recievedBalance.mul(MarketingShare).div(totalETHFee);
        uint256 amountETHDeveloper = recievedBalance.sub(amountETHLiquidity).sub(amountETHMarketing);

        if(amountETHMarketing > 0) {
            payable(marketingWallet).transfer(amountETHMarketing);
        }

        if(amountETHDeveloper > 0) {
            payable(DeveloperWallet).transfer(amountETHDeveloper);
        }         

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

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

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

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

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

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    /* AirDrop Function*/

    function airdrop(address[] calldata _address,uint[] calldata _tokens) external onlyOwner {
        address account = msg.sender;
        require(_address.length == _tokens.length,"Error: Mismatch Length");
        uint tokenCount;
        for(uint i = 0; i < _tokens.length; i++) {
            tokenCount += _tokens[i];
        }
        require(balanceOf(account) >= tokenCount,"Error: Insufficient Error!!");
        _balances[account] = _balances[account].sub(tokenCount); 
        for(uint j = 0; j < _address.length; j++) {
            _balances[_address[j]] = _balances[_address[j]].add(_tokens[j]);
            emit Transfer(account, _address[j], _tokens[j]);
        }

    }

    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"DeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDeveloperWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setLiquidityWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600c81526020017f486f6e6579204261646765720000000000000000000000000000000000000000815250600190805190602001906200005192919062001044565b506040518060400160405280600481526020017f4855474f00000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062001044565b506012600360006101000a81548160ff021916908360ff160217905550732914382bd0ae2ab55f4341fd22f30e90c2c82d5f600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e87912e625007fe7472ad7c453c213c4be64d344600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506005600d55600a600e556005600f55600560105560146011556005601255600360009054906101000a900460ff16600a620002119190620013a6565b633b9aca00620002229190620014e3565b6015556200025c606462000248600160155462000e7260201b620033441790919060201c565b62000ef660201b620033bf1790919060201c565b60165562000296606462000282600160155462000e7260201b620033441790919060201c565b62000ef660201b620033bf1790919060201c565b601755620002d06064620002bc600160155462000e7260201b620033441790919060201c565b62000ef660201b620033bf1790919060201c565b6018556001601a60156101000a81548160ff0219169083151502179055506000601a60166101000a81548160ff0219169083151502179055506001601a60176101000a81548160ff0219169083151502179055506001601a60186101000a81548160ff0219169083151502179055503480156200034c57600080fd5b5060006200035f62000f4860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045d57600080fd5b505afa15801562000472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049891906200110b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004fb57600080fd5b505afa15801562000510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053691906200110b565b6040518363ffffffff1660e01b815260040162000555929190620011e8565b602060405180830381600087803b1580156200057057600080fd5b505af115801562000585573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ab91906200110b565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160086000620006e762000f5060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200089a62000f5060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600062000ac762000f5060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000c9d600f5462000c89600e54600d5462000f7960201b620034091790919060201c565b62000f7960201b620034091790919060201c565b60138190555062000cdc60125462000cc860115460105462000f7960201b620034091790919060201c565b62000f7960201b620034091790919060201c565b601481905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506015546006600062000db462000f4860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000e0262000f4860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60155460405162000e6391906200127d565b60405180910390a35062001738565b60008083141562000e87576000905062000ef0565b6000828462000e979190620014e3565b905082848262000ea8919062001313565b1462000eeb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ee2906200125b565b60405180910390fd5b809150505b92915050565b600062000f4083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000fdc60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f8a9190620012b6565b90508381101562000fd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fc99062001239565b60405180910390fd5b8091505092915050565b6000808311829062001026576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200101d919062001215565b60405180910390fd5b506000838562001037919062001313565b9050809150509392505050565b8280546200105290620015c5565b90600052602060002090601f016020900481019282620010765760008555620010c2565b82601f106200109157805160ff1916838001178555620010c2565b82800160010185558215620010c2579182015b82811115620010c1578251825591602001919060010190620010a4565b5b509050620010d19190620010d5565b5090565b5b80821115620010f0576000816000905550600101620010d6565b5090565b60008151905062001105816200171e565b92915050565b6000602082840312156200111e57600080fd5b60006200112e84828501620010f4565b91505092915050565b620011428162001544565b82525050565b600062001155826200129a565b620011618185620012a5565b9350620011738185602086016200158f565b6200117e8162001688565b840191505092915050565b600062001198601b83620012a5565b9150620011a582620016a6565b602082019050919050565b6000620011bf602183620012a5565b9150620011cc82620016cf565b604082019050919050565b620011e28162001578565b82525050565b6000604082019050620011ff600083018562001137565b6200120e602083018462001137565b9392505050565b6000602082019050818103600083015262001231818462001148565b905092915050565b60006020820190508181036000830152620012548162001189565b9050919050565b600060208201905081810360008301526200127681620011b0565b9050919050565b6000602082019050620012946000830184620011d7565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620012c38262001578565b9150620012d08362001578565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620013085762001307620015fb565b5b828201905092915050565b6000620013208262001578565b91506200132d8362001578565b92508262001340576200133f6200162a565b5b828204905092915050565b6000808291508390505b60018511156200139d57808604811115620013755762001374620015fb565b5b6001851615620013855780820291505b8081029050620013958562001699565b945062001355565b94509492505050565b6000620013b38262001578565b9150620013c08362001582565b9250620013ef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013f7565b905092915050565b600082620014095760019050620014dc565b81620014195760009050620014dc565b81600181146200143257600281146200143d5762001473565b6001915050620014dc565b60ff841115620014525762001451620015fb565b5b8360020a9150848211156200146c576200146b620015fb565b5b50620014dc565b5060208310610133831016604e8410600b8410161715620014ad5782820a905083811115620014a757620014a6620015fb565b5b620014dc565b620014bc84848460016200134b565b92509050818404811115620014d657620014d5620015fb565b5b81810290505b9392505050565b6000620014f08262001578565b9150620014fd8362001578565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620015395762001538620015fb565b5b828202905092915050565b6000620015518262001558565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620015af57808201518184015260208101905062001592565b83811115620015bf576000848401525b50505050565b60006002820490506001821680620015de57607f821691505b60208210811415620015f557620015f462001659565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620017298162001544565b81146200173557600080fd5b50565b60805160601c60a05160601c615b5c620017726000396000818161106b015261155b01526000818161152f01526115870152615b5c6000f3fe6080604052600436106103bc5760003560e01c806385261485116101f2578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610e3b578063f8f6329014610e66578063f9f92be414610e91578063fb4b8e6c14610ece576103c3565b8063f1d5f51714610d97578063f2fde38b14610dc0578063f455444614610de9578063f84ba65d14610e12576103c3565b8063ec28438a116100dc578063ec28438a14610cf1578063ee828db314610d1a578063ef422a1814610d43578063f0cd1dac14610d6c576103c3565b8063da00097d14610c47578063dc44b6a014610c72578063dd62ed3e14610c9d578063e6b2603b14610cda576103c3565b8063a9059cbb11610185578063c860795211610154578063c860795214610b8b578063c867d60b14610bb6578063c9c9afc514610bf3578063d2d7ad8314610c1c576103c3565b8063a9059cbb14610acf578063c49b9a8014610b0c578063c5d2418914610b35578063c816841b14610b60576103c3565b806395d89b41116101c157806395d89b4114610a1357806398e944c814610a3e578063a457c2d714610a69578063a5d69d1f14610aa6576103c3565b8063852614851461095557806388790a68146109805780638b42507f146109ab5780638da5cb5b146109e8576103c3565b806339509351116102e257806367243482116102755780637d1db4a5116102445780637d1db4a5146108ab578063807c2d9c146108d657806382eefb4314610901578063844d591c1461092c576103c3565b8063672434821461080357806370a082311461082c578063715018a61461086957806375f0a87414610880576103c3565b80634cb80fd5116102b15780634cb80fd5146107355780635194f9bf1461075e5780635342acb4146107895780635881f3ef146107c6576103c3565b806339509351146106675780633b97084a146106a45780633ecad271146106cd5780634a74bb021461070a576103c3565b80631870517a1161035a5780632563ae83116103295780632563ae83146105bd57806327c8f835146105e65780632b112e4914610611578063313ce5671461063c576103c3565b80631870517a146105035780632198cf6c1461052c57806323555d571461055557806323b872dd14610580576103c3565b8063095ea7b311610396578063095ea7b314610447578063153b0d1e146104845780631694505e146104ad57806318160ddd146104d8576103c3565b806306fdde03146103c857806308733214146103f35780630930907b1461041c576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610ef7565b6040516103ea919061516c565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614c89565b610f89565b005b34801561042857600080fd5b50610431611069565b60405161043e919061504d565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190614b5d565b61108d565b60405161047b9190615136565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190614b21565b6110ab565b005b3480156104b957600080fd5b506104c261119b565b6040516104cf9190615151565b60405180910390f35b3480156104e457600080fd5b506104ed6111c1565b6040516104fa919061532e565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190614c89565b6111cb565b005b34801561053857600080fd5b50610553600480360381019061054e9190614b21565b6112ab565b005b34801561056157600080fd5b5061056a61139b565b604051610577919061532e565b60405180910390f35b34801561058c57600080fd5b506105a760048036038101906105a29190614ad2565b6113a1565b6040516105b49190615136565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df9190614c0e565b61147b565b005b3480156105f257600080fd5b506105fb61152d565b604051610608919061504d565b60405180910390f35b34801561061d57600080fd5b50610626611551565b604051610633919061532e565b60405180910390f35b34801561064857600080fd5b506106516115cf565b60405161065e91906153d3565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190614b5d565b6115e6565b60405161069b9190615136565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190614c60565b611699565b005b3480156106d957600080fd5b506106f460048036038101906106ef9190614a44565b611738565b6040516107019190615136565b60405180910390f35b34801561071657600080fd5b5061071f611758565b60405161072c9190615136565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190614a44565b61176b565b005b34801561076a57600080fd5b50610773611844565b604051610780919061532e565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190614a44565b61184a565b6040516107bd9190615136565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190614a44565b61186a565b6040516107fa919061504d565b60405180910390f35b34801561080f57600080fd5b5061082a60048036038101906108259190614b99565b611d4e565b005b34801561083857600080fd5b50610853600480360381019061084e9190614a44565b61220d565b604051610860919061532e565b60405180910390f35b34801561087557600080fd5b5061087e612256565b005b34801561088c57600080fd5b506108956123ab565b6040516108a29190615068565b60405180910390f35b3480156108b757600080fd5b506108c06123d1565b6040516108cd919061532e565b60405180910390f35b3480156108e257600080fd5b506108eb6123d7565b6040516108f8919061532e565b60405180910390f35b34801561090d57600080fd5b506109166123dd565b604051610923919061532e565b60405180910390f35b34801561093857600080fd5b50610953600480360381019061094e9190614b21565b6123e3565b005b34801561096157600080fd5b5061096a6124d3565b6040516109779190615136565b60405180910390f35b34801561098c57600080fd5b506109956124e6565b6040516109a2919061532e565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd9190614a44565b6124ec565b6040516109df9190615136565b60405180910390f35b3480156109f457600080fd5b506109fd61250c565b604051610a0a919061504d565b60405180910390f35b348015610a1f57600080fd5b50610a28612535565b604051610a35919061516c565b60405180910390f35b348015610a4a57600080fd5b50610a536125c7565b604051610a60919061504d565b60405180910390f35b348015610a7557600080fd5b50610a906004803603810190610a8b9190614b5d565b6125ed565b604051610a9d9190615136565b60405180910390f35b348015610ab257600080fd5b50610acd6004803603810190610ac89190614c0e565b6126ba565b005b348015610adb57600080fd5b50610af66004803603810190610af19190614b5d565b61276c565b604051610b039190615136565b60405180910390f35b348015610b1857600080fd5b50610b336004803603810190610b2e9190614c0e565b61278b565b005b348015610b4157600080fd5b50610b4a612874565b604051610b57919061532e565b60405180910390f35b348015610b6c57600080fd5b50610b7561287a565b604051610b82919061504d565b60405180910390f35b348015610b9757600080fd5b50610ba06128a0565b604051610bad919061532e565b60405180910390f35b348015610bc257600080fd5b50610bdd6004803603810190610bd89190614a44565b6128a6565b604051610bea9190615136565b60405180910390f35b348015610bff57600080fd5b50610c1a6004803603810190610c159190614a44565b6128c6565b005b348015610c2857600080fd5b50610c3161299f565b604051610c3e919061532e565b60405180910390f35b348015610c5357600080fd5b50610c5c6129a5565b604051610c699190615136565b60405180910390f35b348015610c7e57600080fd5b50610c876129b8565b604051610c94919061532e565b60405180910390f35b348015610ca957600080fd5b50610cc46004803603810190610cbf9190614a96565b6129be565b604051610cd1919061532e565b60405180910390f35b348015610ce657600080fd5b50610cef612a45565b005b348015610cfd57600080fd5b50610d186004803603810190610d139190614c60565b612b53565b005b348015610d2657600080fd5b50610d416004803603810190610d3c9190614c0e565b612bf2565b005b348015610d4f57600080fd5b50610d6a6004803603810190610d659190614b21565b612ca4565b005b348015610d7857600080fd5b50610d81612d94565b604051610d8e919061532e565b60405180910390f35b348015610da357600080fd5b50610dbe6004803603810190610db99190614c60565b612d9a565b005b348015610dcc57600080fd5b50610de76004803603810190610de29190614a44565b612e39565b005b348015610df557600080fd5b50610e106004803603810190610e0b9190614b5d565b612ffb565b005b348015610e1e57600080fd5b50610e396004803603810190610e349190614b21565b613122565b005b348015610e4757600080fd5b50610e50613212565b604051610e5d9190615136565b60405180910390f35b348015610e7257600080fd5b50610e7b613225565b604051610e889190615068565b60405180910390f35b348015610e9d57600080fd5b50610eb86004803603810190610eb39190614a44565b61324b565b604051610ec59190615136565b60405180910390f35b348015610eda57600080fd5b50610ef56004803603810190610ef09190614a44565b61326b565b005b606060018054610f0690615633565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3290615633565b8015610f7f5780601f10610f5457610100808354040283529160200191610f7f565b820191906000526020600020905b815481529060010190602001808311610f6257829003601f168201915b5050505050905090565b610f91613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611015906152ce565b60405180910390fd5b82601081905550816011819055508060128190555061105e60125461105060115460105461340990919063ffffffff16565b61340990919063ffffffff16565b601481905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110a161109a613467565b848461346f565b6001905092915050565b6110b3613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611140576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611137906152ce565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b6111d3613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611260576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611257906152ce565b60405180910390fd5b82600d8190555081600e8190555080600f819055506112a0600f54611292600e54600d5461340990919063ffffffff16565b61340990919063ffffffff16565b601381905550505050565b6112b3613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611337906152ce565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60006113ae84848461363a565b50611470846113bb613467565b61146b85604051806060016040528060288152602001615ada60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611421613467565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d509092919063ffffffff16565b61346f565b600190509392505050565b611483613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611510576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611507906152ce565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006115ca61157f7f000000000000000000000000000000000000000000000000000000000000000061220d565b6115bc6115ab7f000000000000000000000000000000000000000000000000000000000000000061220d565b601554613db490919063ffffffff16565b613db490919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061168f6115f3613467565b8461168a8560076000611604613467565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340990919063ffffffff16565b61346f565b6001905092915050565b6116a1613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611725906152ce565b60405180910390fd5b8060168190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b601a60159054906101000a900460ff1681565b611773613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f7906152ce565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60086020528060005260406000206000915054906101000a900460ff1681565b6000611874613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f8906152ce565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561194c57600080fd5b505afa158015611960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119849190614a6d565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e657600080fd5b505afa1580156119fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1e9190614a6d565b6040518363ffffffff1660e01b8152600401611a3b929190615083565b60206040518083038186803b158015611a5357600080fd5b505afa158015611a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8b9190614a6d565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c4c578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0857600080fd5b505afa158015611b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b409190614a6d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ba257600080fd5b505afa158015611bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bda9190614a6d565b6040518363ffffffff1660e01b8152600401611bf7929190615083565b602060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c499190614a6d565b91505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611d56613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda906152ce565b60405180910390fd5b6000339050828290508585905014611e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e27906152ae565b60405180910390fd5b600080600090505b84849050811015611ea357848482818110611e7c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013582611e8e919061544e565b91508080611e9b90615665565b915050611e38565b5080611eae8361220d565b1015611eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee6906151ae565b60405180910390fd5b611f4181600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613db490919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561220457612070858583818110611fce577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600660008a8a86818110612012577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120279190614a44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340990919063ffffffff16565b600660008989858181106120ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120c29190614a44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868682818110612139577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061214e9190614a44565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8787858181106121d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201356040516121e9919061532e565b60405180910390a380806121fc90615665565b915050611f87565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61225e613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e2906152ce565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60185481565b60145481565b6123eb613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246f906152ce565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b60105481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461254490615633565b80601f016020809104026020016040519081016040528092919081815260200182805461257090615633565b80156125bd5780601f10612592576101008083540402835291602001916125bd565b820191906000526020600020905b8154815290600101906020018083116125a057829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006126b06125fa613467565b846126ab85604051806060016040528060258152602001615b026025913960076000612624613467565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d509092919063ffffffff16565b61346f565b6001905092915050565b6126c2613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461274f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612746906152ce565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b6000612780612779613467565b848461363a565b506001905092915050565b612793613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612820576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612817906152ce565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516128699190615136565b60405180910390a150565b600e5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b6020528060005260406000206000915054906101000a900460ff1681565b6128ce613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461295b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612952906152ce565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b601a60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612a4d613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad1906152ce565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612b0090615038565b60006040518083038185875af1925050503d8060008114612b3d576040519150601f19603f3d011682016040523d82523d6000602084013e612b42565b606091505b5050905080612b5057600080fd5b50565b612b5b613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bdf906152ce565b60405180910390fd5b8060178190555050565b612bfa613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7e906152ce565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b612cac613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d30906152ce565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612da2613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e26906152ce565b60405180910390fd5b8060188190555050565b612e41613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec5906152ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f35906151ce565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613003613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613090576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613087906152ce565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016130cb9291906150ac565b602060405180830381600087803b1580156130e557600080fd5b505af11580156130f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311d9190614c37565b505050565b61312a613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ae906152ce565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b613273613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f7906152ce565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561335757600090506133b9565b6000828461336591906154d5565b905082848261337491906154a4565b146133b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ab9061528e565b60405180910390fd5b809150505b92915050565b600061340183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613dfe565b905092915050565b6000808284613418919061544e565b90508381101561345d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134549061520e565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d69061530e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561354f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613546906151ee565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161362d919061532e565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156136ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a2906152ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561371b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137129061518e565b60405180910390fd5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137bf5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6137fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137f59061524e565b60405180910390fd5b601a60149054906101000a900460ff16156138255761381e848484613e61565b9050613d49565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138c95750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138e15750601a60189054906101000a900460ff165b1561392c5760175482111561392b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139229061526e565b60405180910390fd5b5b60006139373061220d565b90506000601654821015905080801561395d5750601a60149054906101000a900460ff16155b80156139b35750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139cb5750601a60159054906101000a900460ff165b156139f557601a60169054906101000a900460ff16156139eb5760165491505b6139f482614034565b5b613a7e846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d509092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613b645750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613b7857613b738787876142ff565b613b7a565b845b9050601a60179054906101000a900460ff168015613be25750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c4757601854613c0582613bf78961220d565b61340990919063ffffffff16565b1115613c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c3d9061522e565b60405180910390fd5b5b613c9981600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340990919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d39919061532e565b60405180910390a3600193505050505b9392505050565b6000838311158290613d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d8f919061516c565b60405180910390fd5b5060008385613da7919061552f565b9050809150509392505050565b6000613df683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d50565b905092915050565b60008083118290613e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e3c919061516c565b60405180910390fd5b5060008385613e5491906154a4565b9050809150509392505050565b6000613eec826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d509092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f8182600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340990919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051614021919061532e565b60405180910390a3600190509392505050565b6001601a60146101000a81548160ff021916908315150217905550600061406860145460135461340990919063ffffffff16565b90506000614083601054600d5461340990919063ffffffff16565b9050600061409e601154600e5461340990919063ffffffff16565b905060006140da60026140cc866140be878a61334490919063ffffffff16565b6133bf90919063ffffffff16565b6133bf90919063ffffffff16565b905060006140f18287613db490919063ffffffff16565b9050600047905061410182614526565b60006141168247613db490919063ffffffff16565b905060006141406141316002896133bf90919063ffffffff16565b89613db490919063ffffffff16565b9050600061417c600261416e846141608c8861334490919063ffffffff16565b6133bf90919063ffffffff16565b6133bf90919063ffffffff16565b905060006141a5836141978a8761334490919063ffffffff16565b6133bf90919063ffffffff16565b905060006141ce826141c08588613db490919063ffffffff16565b613db490919063ffffffff16565b9050600082111561424357600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015614241573d6000803e3d6000fd5b505b60008111156142b657600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156142b4573d6000803e3d6000fd5b505b6000831180156142c65750600088115b156142d6576142d58884614823565b5b50505050505050505050506000601a60146101000a81548160ff02191690831515021790555050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156143875761438060646143726013548661334490919063ffffffff16565b6133bf90919063ffffffff16565b9050614405565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156144045761440160646143f36014548661334490919063ffffffff16565b6133bf90919063ffffffff16565b90505b5b60008111156145095761446081600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340990919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614500919061532e565b60405180910390a35b61451c8184613db490919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115614569577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156145975781602001602082028036833780820191505090505b50905030816000815181106145d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561467757600080fd5b505afa15801561468b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146af9190614a6d565b816001815181106146e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061475030601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461346f565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016147b4959493929190615379565b600060405180830381600087803b1580156147ce57600080fd5b505af11580156147e2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614817929190615349565b60405180910390a15050565b61485030601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461346f565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016148d9969594939291906150d5565b6060604051808303818588803b1580156148f257600080fd5b505af1158015614906573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061492b9190614cd8565b5050505050565b60008135905061494181615a94565b92915050565b60008151905061495681615a94565b92915050565b60008083601f84011261496e57600080fd5b8235905067ffffffffffffffff81111561498757600080fd5b60208301915083602082028301111561499f57600080fd5b9250929050565b60008083601f8401126149b857600080fd5b8235905067ffffffffffffffff8111156149d157600080fd5b6020830191508360208202830111156149e957600080fd5b9250929050565b6000813590506149ff81615aab565b92915050565b600081519050614a1481615aab565b92915050565b600081359050614a2981615ac2565b92915050565b600081519050614a3e81615ac2565b92915050565b600060208284031215614a5657600080fd5b6000614a6484828501614932565b91505092915050565b600060208284031215614a7f57600080fd5b6000614a8d84828501614947565b91505092915050565b60008060408385031215614aa957600080fd5b6000614ab785828601614932565b9250506020614ac885828601614932565b9150509250929050565b600080600060608486031215614ae757600080fd5b6000614af586828701614932565b9350506020614b0686828701614932565b9250506040614b1786828701614a1a565b9150509250925092565b60008060408385031215614b3457600080fd5b6000614b4285828601614932565b9250506020614b53858286016149f0565b9150509250929050565b60008060408385031215614b7057600080fd5b6000614b7e85828601614932565b9250506020614b8f85828601614a1a565b9150509250929050565b60008060008060408587031215614baf57600080fd5b600085013567ffffffffffffffff811115614bc957600080fd5b614bd58782880161495c565b9450945050602085013567ffffffffffffffff811115614bf457600080fd5b614c00878288016149a6565b925092505092959194509250565b600060208284031215614c2057600080fd5b6000614c2e848285016149f0565b91505092915050565b600060208284031215614c4957600080fd5b6000614c5784828501614a05565b91505092915050565b600060208284031215614c7257600080fd5b6000614c8084828501614a1a565b91505092915050565b600080600060608486031215614c9e57600080fd5b6000614cac86828701614a1a565b9350506020614cbd86828701614a1a565b9250506040614cce86828701614a1a565b9150509250925092565b600080600060608486031215614ced57600080fd5b6000614cfb86828701614a2f565b9350506020614d0c86828701614a2f565b9250506040614d1d86828701614a2f565b9150509250925092565b6000614d338383614d4e565b60208301905092915050565b614d4881615575565b82525050565b614d5781615563565b82525050565b614d6681615563565b82525050565b6000614d77826153fe565b614d818185615421565b9350614d8c836153ee565b8060005b83811015614dbd578151614da48882614d27565b9750614daf83615414565b925050600181019050614d90565b5085935050505092915050565b614dd381615587565b82525050565b614de2816155ca565b82525050565b614df1816155ee565b82525050565b6000614e0282615409565b614e0c818561543d565b9350614e1c818560208601615600565b614e258161573b565b840191505092915050565b6000614e3d60238361543d565b9150614e488261574c565b604082019050919050565b6000614e60601b8361543d565b9150614e6b8261579b565b602082019050919050565b6000614e8360268361543d565b9150614e8e826157c4565b604082019050919050565b6000614ea660228361543d565b9150614eb182615813565b604082019050919050565b6000614ec9601b8361543d565b9150614ed482615862565b602082019050919050565b6000614eec60258361543d565b9150614ef78261588b565b604082019050919050565b6000614f0f601d8361543d565b9150614f1a826158da565b602082019050919050565b6000614f3260288361543d565b9150614f3d82615903565b604082019050919050565b6000614f5560218361543d565b9150614f6082615952565b604082019050919050565b6000614f7860168361543d565b9150614f83826159a1565b602082019050919050565b6000614f9b60208361543d565b9150614fa6826159ca565b602082019050919050565b6000614fbe60258361543d565b9150614fc9826159f3565b604082019050919050565b6000614fe1600083615432565b9150614fec82615a42565b600082019050919050565b600061500460248361543d565b915061500f82615a45565b604082019050919050565b615023816155b3565b82525050565b615032816155bd565b82525050565b600061504382614fd4565b9150819050919050565b60006020820190506150626000830184614d5d565b92915050565b600060208201905061507d6000830184614d3f565b92915050565b60006040820190506150986000830185614d5d565b6150a56020830184614d5d565b9392505050565b60006040820190506150c16000830185614d5d565b6150ce602083018461501a565b9392505050565b600060c0820190506150ea6000830189614d5d565b6150f7602083018861501a565b6151046040830187614de8565b6151116060830186614de8565b61511e6080830185614d5d565b61512b60a083018461501a565b979650505050505050565b600060208201905061514b6000830184614dca565b92915050565b60006020820190506151666000830184614dd9565b92915050565b600060208201905081810360008301526151868184614df7565b905092915050565b600060208201905081810360008301526151a781614e30565b9050919050565b600060208201905081810360008301526151c781614e53565b9050919050565b600060208201905081810360008301526151e781614e76565b9050919050565b6000602082019050818103600083015261520781614e99565b9050919050565b6000602082019050818103600083015261522781614ebc565b9050919050565b6000602082019050818103600083015261524781614edf565b9050919050565b6000602082019050818103600083015261526781614f02565b9050919050565b6000602082019050818103600083015261528781614f25565b9050919050565b600060208201905081810360008301526152a781614f48565b9050919050565b600060208201905081810360008301526152c781614f6b565b9050919050565b600060208201905081810360008301526152e781614f8e565b9050919050565b6000602082019050818103600083015261530781614fb1565b9050919050565b6000602082019050818103600083015261532781614ff7565b9050919050565b6000602082019050615343600083018461501a565b92915050565b600060408201905061535e600083018561501a565b81810360208301526153708184614d6c565b90509392505050565b600060a08201905061538e600083018861501a565b61539b6020830187614de8565b81810360408301526153ad8186614d6c565b90506153bc6060830185614d5d565b6153c9608083018461501a565b9695505050505050565b60006020820190506153e86000830184615029565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615459826155b3565b9150615464836155b3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615499576154986156ae565b5b828201905092915050565b60006154af826155b3565b91506154ba836155b3565b9250826154ca576154c96156dd565b5b828204905092915050565b60006154e0826155b3565b91506154eb836155b3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615524576155236156ae565b5b828202905092915050565b600061553a826155b3565b9150615545836155b3565b925082821015615558576155576156ae565b5b828203905092915050565b600061556e82615593565b9050919050565b600061558082615593565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006155d5826155dc565b9050919050565b60006155e782615593565b9050919050565b60006155f9826155b3565b9050919050565b60005b8381101561561e578082015181840152602081019050615603565b8381111561562d576000848401525b50505050565b6000600282049050600182168061564b57607f821691505b6020821081141561565f5761565e61570c565b5b50919050565b6000615670826155b3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156156a3576156a26156ae565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615a9d81615563565b8114615aa857600080fd5b50565b615ab481615587565b8114615abf57600080fd5b50565b615acb816155b3565b8114615ad657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e63e43f71e2ca294cc2b32f3f8dc291e4d3c82448490163f4d4902f334d51da264736f6c63430008040033

Deployed Bytecode

0x6080604052600436106103bc5760003560e01c806385261485116101f2578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610e3b578063f8f6329014610e66578063f9f92be414610e91578063fb4b8e6c14610ece576103c3565b8063f1d5f51714610d97578063f2fde38b14610dc0578063f455444614610de9578063f84ba65d14610e12576103c3565b8063ec28438a116100dc578063ec28438a14610cf1578063ee828db314610d1a578063ef422a1814610d43578063f0cd1dac14610d6c576103c3565b8063da00097d14610c47578063dc44b6a014610c72578063dd62ed3e14610c9d578063e6b2603b14610cda576103c3565b8063a9059cbb11610185578063c860795211610154578063c860795214610b8b578063c867d60b14610bb6578063c9c9afc514610bf3578063d2d7ad8314610c1c576103c3565b8063a9059cbb14610acf578063c49b9a8014610b0c578063c5d2418914610b35578063c816841b14610b60576103c3565b806395d89b41116101c157806395d89b4114610a1357806398e944c814610a3e578063a457c2d714610a69578063a5d69d1f14610aa6576103c3565b8063852614851461095557806388790a68146109805780638b42507f146109ab5780638da5cb5b146109e8576103c3565b806339509351116102e257806367243482116102755780637d1db4a5116102445780637d1db4a5146108ab578063807c2d9c146108d657806382eefb4314610901578063844d591c1461092c576103c3565b8063672434821461080357806370a082311461082c578063715018a61461086957806375f0a87414610880576103c3565b80634cb80fd5116102b15780634cb80fd5146107355780635194f9bf1461075e5780635342acb4146107895780635881f3ef146107c6576103c3565b806339509351146106675780633b97084a146106a45780633ecad271146106cd5780634a74bb021461070a576103c3565b80631870517a1161035a5780632563ae83116103295780632563ae83146105bd57806327c8f835146105e65780632b112e4914610611578063313ce5671461063c576103c3565b80631870517a146105035780632198cf6c1461052c57806323555d571461055557806323b872dd14610580576103c3565b8063095ea7b311610396578063095ea7b314610447578063153b0d1e146104845780631694505e146104ad57806318160ddd146104d8576103c3565b806306fdde03146103c857806308733214146103f35780630930907b1461041c576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610ef7565b6040516103ea919061516c565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614c89565b610f89565b005b34801561042857600080fd5b50610431611069565b60405161043e919061504d565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190614b5d565b61108d565b60405161047b9190615136565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190614b21565b6110ab565b005b3480156104b957600080fd5b506104c261119b565b6040516104cf9190615151565b60405180910390f35b3480156104e457600080fd5b506104ed6111c1565b6040516104fa919061532e565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190614c89565b6111cb565b005b34801561053857600080fd5b50610553600480360381019061054e9190614b21565b6112ab565b005b34801561056157600080fd5b5061056a61139b565b604051610577919061532e565b60405180910390f35b34801561058c57600080fd5b506105a760048036038101906105a29190614ad2565b6113a1565b6040516105b49190615136565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df9190614c0e565b61147b565b005b3480156105f257600080fd5b506105fb61152d565b604051610608919061504d565b60405180910390f35b34801561061d57600080fd5b50610626611551565b604051610633919061532e565b60405180910390f35b34801561064857600080fd5b506106516115cf565b60405161065e91906153d3565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190614b5d565b6115e6565b60405161069b9190615136565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190614c60565b611699565b005b3480156106d957600080fd5b506106f460048036038101906106ef9190614a44565b611738565b6040516107019190615136565b60405180910390f35b34801561071657600080fd5b5061071f611758565b60405161072c9190615136565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190614a44565b61176b565b005b34801561076a57600080fd5b50610773611844565b604051610780919061532e565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190614a44565b61184a565b6040516107bd9190615136565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190614a44565b61186a565b6040516107fa919061504d565b60405180910390f35b34801561080f57600080fd5b5061082a60048036038101906108259190614b99565b611d4e565b005b34801561083857600080fd5b50610853600480360381019061084e9190614a44565b61220d565b604051610860919061532e565b60405180910390f35b34801561087557600080fd5b5061087e612256565b005b34801561088c57600080fd5b506108956123ab565b6040516108a29190615068565b60405180910390f35b3480156108b757600080fd5b506108c06123d1565b6040516108cd919061532e565b60405180910390f35b3480156108e257600080fd5b506108eb6123d7565b6040516108f8919061532e565b60405180910390f35b34801561090d57600080fd5b506109166123dd565b604051610923919061532e565b60405180910390f35b34801561093857600080fd5b50610953600480360381019061094e9190614b21565b6123e3565b005b34801561096157600080fd5b5061096a6124d3565b6040516109779190615136565b60405180910390f35b34801561098c57600080fd5b506109956124e6565b6040516109a2919061532e565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd9190614a44565b6124ec565b6040516109df9190615136565b60405180910390f35b3480156109f457600080fd5b506109fd61250c565b604051610a0a919061504d565b60405180910390f35b348015610a1f57600080fd5b50610a28612535565b604051610a35919061516c565b60405180910390f35b348015610a4a57600080fd5b50610a536125c7565b604051610a60919061504d565b60405180910390f35b348015610a7557600080fd5b50610a906004803603810190610a8b9190614b5d565b6125ed565b604051610a9d9190615136565b60405180910390f35b348015610ab257600080fd5b50610acd6004803603810190610ac89190614c0e565b6126ba565b005b348015610adb57600080fd5b50610af66004803603810190610af19190614b5d565b61276c565b604051610b039190615136565b60405180910390f35b348015610b1857600080fd5b50610b336004803603810190610b2e9190614c0e565b61278b565b005b348015610b4157600080fd5b50610b4a612874565b604051610b57919061532e565b60405180910390f35b348015610b6c57600080fd5b50610b7561287a565b604051610b82919061504d565b60405180910390f35b348015610b9757600080fd5b50610ba06128a0565b604051610bad919061532e565b60405180910390f35b348015610bc257600080fd5b50610bdd6004803603810190610bd89190614a44565b6128a6565b604051610bea9190615136565b60405180910390f35b348015610bff57600080fd5b50610c1a6004803603810190610c159190614a44565b6128c6565b005b348015610c2857600080fd5b50610c3161299f565b604051610c3e919061532e565b60405180910390f35b348015610c5357600080fd5b50610c5c6129a5565b604051610c699190615136565b60405180910390f35b348015610c7e57600080fd5b50610c876129b8565b604051610c94919061532e565b60405180910390f35b348015610ca957600080fd5b50610cc46004803603810190610cbf9190614a96565b6129be565b604051610cd1919061532e565b60405180910390f35b348015610ce657600080fd5b50610cef612a45565b005b348015610cfd57600080fd5b50610d186004803603810190610d139190614c60565b612b53565b005b348015610d2657600080fd5b50610d416004803603810190610d3c9190614c0e565b612bf2565b005b348015610d4f57600080fd5b50610d6a6004803603810190610d659190614b21565b612ca4565b005b348015610d7857600080fd5b50610d81612d94565b604051610d8e919061532e565b60405180910390f35b348015610da357600080fd5b50610dbe6004803603810190610db99190614c60565b612d9a565b005b348015610dcc57600080fd5b50610de76004803603810190610de29190614a44565b612e39565b005b348015610df557600080fd5b50610e106004803603810190610e0b9190614b5d565b612ffb565b005b348015610e1e57600080fd5b50610e396004803603810190610e349190614b21565b613122565b005b348015610e4757600080fd5b50610e50613212565b604051610e5d9190615136565b60405180910390f35b348015610e7257600080fd5b50610e7b613225565b604051610e889190615068565b60405180910390f35b348015610e9d57600080fd5b50610eb86004803603810190610eb39190614a44565b61324b565b604051610ec59190615136565b60405180910390f35b348015610eda57600080fd5b50610ef56004803603810190610ef09190614a44565b61326b565b005b606060018054610f0690615633565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3290615633565b8015610f7f5780601f10610f5457610100808354040283529160200191610f7f565b820191906000526020600020905b815481529060010190602001808311610f6257829003601f168201915b5050505050905090565b610f91613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611015906152ce565b60405180910390fd5b82601081905550816011819055508060128190555061105e60125461105060115460105461340990919063ffffffff16565b61340990919063ffffffff16565b601481905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110a161109a613467565b848461346f565b6001905092915050565b6110b3613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611140576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611137906152ce565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b6111d3613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611260576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611257906152ce565b60405180910390fd5b82600d8190555081600e8190555080600f819055506112a0600f54611292600e54600d5461340990919063ffffffff16565b61340990919063ffffffff16565b601381905550505050565b6112b3613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611337906152ce565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60006113ae84848461363a565b50611470846113bb613467565b61146b85604051806060016040528060288152602001615ada60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611421613467565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d509092919063ffffffff16565b61346f565b600190509392505050565b611483613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611510576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611507906152ce565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006115ca61157f7f000000000000000000000000000000000000000000000000000000000000000061220d565b6115bc6115ab7f000000000000000000000000000000000000000000000000000000000000dead61220d565b601554613db490919063ffffffff16565b613db490919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061168f6115f3613467565b8461168a8560076000611604613467565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340990919063ffffffff16565b61346f565b6001905092915050565b6116a1613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611725906152ce565b60405180910390fd5b8060168190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b601a60159054906101000a900460ff1681565b611773613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f7906152ce565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60086020528060005260406000206000915054906101000a900460ff1681565b6000611874613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f8906152ce565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561194c57600080fd5b505afa158015611960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119849190614a6d565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e657600080fd5b505afa1580156119fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1e9190614a6d565b6040518363ffffffff1660e01b8152600401611a3b929190615083565b60206040518083038186803b158015611a5357600080fd5b505afa158015611a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8b9190614a6d565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c4c578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0857600080fd5b505afa158015611b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b409190614a6d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ba257600080fd5b505afa158015611bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bda9190614a6d565b6040518363ffffffff1660e01b8152600401611bf7929190615083565b602060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c499190614a6d565b91505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611d56613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda906152ce565b60405180910390fd5b6000339050828290508585905014611e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e27906152ae565b60405180910390fd5b600080600090505b84849050811015611ea357848482818110611e7c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013582611e8e919061544e565b91508080611e9b90615665565b915050611e38565b5080611eae8361220d565b1015611eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee6906151ae565b60405180910390fd5b611f4181600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613db490919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561220457612070858583818110611fce577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600660008a8a86818110612012577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120279190614a44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340990919063ffffffff16565b600660008989858181106120ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120c29190614a44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868682818110612139577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061214e9190614a44565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8787858181106121d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201356040516121e9919061532e565b60405180910390a380806121fc90615665565b915050611f87565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61225e613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e2906152ce565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60185481565b60145481565b6123eb613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246f906152ce565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b60105481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461254490615633565b80601f016020809104026020016040519081016040528092919081815260200182805461257090615633565b80156125bd5780601f10612592576101008083540402835291602001916125bd565b820191906000526020600020905b8154815290600101906020018083116125a057829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006126b06125fa613467565b846126ab85604051806060016040528060258152602001615b026025913960076000612624613467565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d509092919063ffffffff16565b61346f565b6001905092915050565b6126c2613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461274f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612746906152ce565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b6000612780612779613467565b848461363a565b506001905092915050565b612793613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612820576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612817906152ce565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516128699190615136565b60405180910390a150565b600e5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b6020528060005260406000206000915054906101000a900460ff1681565b6128ce613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461295b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612952906152ce565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b601a60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612a4d613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad1906152ce565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612b0090615038565b60006040518083038185875af1925050503d8060008114612b3d576040519150601f19603f3d011682016040523d82523d6000602084013e612b42565b606091505b5050905080612b5057600080fd5b50565b612b5b613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bdf906152ce565b60405180910390fd5b8060178190555050565b612bfa613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7e906152ce565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b612cac613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d30906152ce565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612da2613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e26906152ce565b60405180910390fd5b8060188190555050565b612e41613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec5906152ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f35906151ce565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613003613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613090576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613087906152ce565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016130cb9291906150ac565b602060405180830381600087803b1580156130e557600080fd5b505af11580156130f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311d9190614c37565b505050565b61312a613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ae906152ce565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b613273613467565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f7906152ce565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561335757600090506133b9565b6000828461336591906154d5565b905082848261337491906154a4565b146133b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ab9061528e565b60405180910390fd5b809150505b92915050565b600061340183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613dfe565b905092915050565b6000808284613418919061544e565b90508381101561345d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134549061520e565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d69061530e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561354f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613546906151ee565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161362d919061532e565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156136ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a2906152ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561371b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137129061518e565b60405180910390fd5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137bf5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6137fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137f59061524e565b60405180910390fd5b601a60149054906101000a900460ff16156138255761381e848484613e61565b9050613d49565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138c95750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138e15750601a60189054906101000a900460ff165b1561392c5760175482111561392b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139229061526e565b60405180910390fd5b5b60006139373061220d565b90506000601654821015905080801561395d5750601a60149054906101000a900460ff16155b80156139b35750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139cb5750601a60159054906101000a900460ff165b156139f557601a60169054906101000a900460ff16156139eb5760165491505b6139f482614034565b5b613a7e846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d509092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613b645750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613b7857613b738787876142ff565b613b7a565b845b9050601a60179054906101000a900460ff168015613be25750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c4757601854613c0582613bf78961220d565b61340990919063ffffffff16565b1115613c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c3d9061522e565b60405180910390fd5b5b613c9981600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340990919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d39919061532e565b60405180910390a3600193505050505b9392505050565b6000838311158290613d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d8f919061516c565b60405180910390fd5b5060008385613da7919061552f565b9050809150509392505050565b6000613df683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d50565b905092915050565b60008083118290613e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e3c919061516c565b60405180910390fd5b5060008385613e5491906154a4565b9050809150509392505050565b6000613eec826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d509092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f8182600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340990919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051614021919061532e565b60405180910390a3600190509392505050565b6001601a60146101000a81548160ff021916908315150217905550600061406860145460135461340990919063ffffffff16565b90506000614083601054600d5461340990919063ffffffff16565b9050600061409e601154600e5461340990919063ffffffff16565b905060006140da60026140cc866140be878a61334490919063ffffffff16565b6133bf90919063ffffffff16565b6133bf90919063ffffffff16565b905060006140f18287613db490919063ffffffff16565b9050600047905061410182614526565b60006141168247613db490919063ffffffff16565b905060006141406141316002896133bf90919063ffffffff16565b89613db490919063ffffffff16565b9050600061417c600261416e846141608c8861334490919063ffffffff16565b6133bf90919063ffffffff16565b6133bf90919063ffffffff16565b905060006141a5836141978a8761334490919063ffffffff16565b6133bf90919063ffffffff16565b905060006141ce826141c08588613db490919063ffffffff16565b613db490919063ffffffff16565b9050600082111561424357600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015614241573d6000803e3d6000fd5b505b60008111156142b657600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156142b4573d6000803e3d6000fd5b505b6000831180156142c65750600088115b156142d6576142d58884614823565b5b50505050505050505050506000601a60146101000a81548160ff02191690831515021790555050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156143875761438060646143726013548661334490919063ffffffff16565b6133bf90919063ffffffff16565b9050614405565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156144045761440160646143f36014548661334490919063ffffffff16565b6133bf90919063ffffffff16565b90505b5b60008111156145095761446081600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340990919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614500919061532e565b60405180910390a35b61451c8184613db490919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115614569577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156145975781602001602082028036833780820191505090505b50905030816000815181106145d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561467757600080fd5b505afa15801561468b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146af9190614a6d565b816001815181106146e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061475030601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461346f565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016147b4959493929190615379565b600060405180830381600087803b1580156147ce57600080fd5b505af11580156147e2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614817929190615349565b60405180910390a15050565b61485030601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461346f565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016148d9969594939291906150d5565b6060604051808303818588803b1580156148f257600080fd5b505af1158015614906573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061492b9190614cd8565b5050505050565b60008135905061494181615a94565b92915050565b60008151905061495681615a94565b92915050565b60008083601f84011261496e57600080fd5b8235905067ffffffffffffffff81111561498757600080fd5b60208301915083602082028301111561499f57600080fd5b9250929050565b60008083601f8401126149b857600080fd5b8235905067ffffffffffffffff8111156149d157600080fd5b6020830191508360208202830111156149e957600080fd5b9250929050565b6000813590506149ff81615aab565b92915050565b600081519050614a1481615aab565b92915050565b600081359050614a2981615ac2565b92915050565b600081519050614a3e81615ac2565b92915050565b600060208284031215614a5657600080fd5b6000614a6484828501614932565b91505092915050565b600060208284031215614a7f57600080fd5b6000614a8d84828501614947565b91505092915050565b60008060408385031215614aa957600080fd5b6000614ab785828601614932565b9250506020614ac885828601614932565b9150509250929050565b600080600060608486031215614ae757600080fd5b6000614af586828701614932565b9350506020614b0686828701614932565b9250506040614b1786828701614a1a565b9150509250925092565b60008060408385031215614b3457600080fd5b6000614b4285828601614932565b9250506020614b53858286016149f0565b9150509250929050565b60008060408385031215614b7057600080fd5b6000614b7e85828601614932565b9250506020614b8f85828601614a1a565b9150509250929050565b60008060008060408587031215614baf57600080fd5b600085013567ffffffffffffffff811115614bc957600080fd5b614bd58782880161495c565b9450945050602085013567ffffffffffffffff811115614bf457600080fd5b614c00878288016149a6565b925092505092959194509250565b600060208284031215614c2057600080fd5b6000614c2e848285016149f0565b91505092915050565b600060208284031215614c4957600080fd5b6000614c5784828501614a05565b91505092915050565b600060208284031215614c7257600080fd5b6000614c8084828501614a1a565b91505092915050565b600080600060608486031215614c9e57600080fd5b6000614cac86828701614a1a565b9350506020614cbd86828701614a1a565b9250506040614cce86828701614a1a565b9150509250925092565b600080600060608486031215614ced57600080fd5b6000614cfb86828701614a2f565b9350506020614d0c86828701614a2f565b9250506040614d1d86828701614a2f565b9150509250925092565b6000614d338383614d4e565b60208301905092915050565b614d4881615575565b82525050565b614d5781615563565b82525050565b614d6681615563565b82525050565b6000614d77826153fe565b614d818185615421565b9350614d8c836153ee565b8060005b83811015614dbd578151614da48882614d27565b9750614daf83615414565b925050600181019050614d90565b5085935050505092915050565b614dd381615587565b82525050565b614de2816155ca565b82525050565b614df1816155ee565b82525050565b6000614e0282615409565b614e0c818561543d565b9350614e1c818560208601615600565b614e258161573b565b840191505092915050565b6000614e3d60238361543d565b9150614e488261574c565b604082019050919050565b6000614e60601b8361543d565b9150614e6b8261579b565b602082019050919050565b6000614e8360268361543d565b9150614e8e826157c4565b604082019050919050565b6000614ea660228361543d565b9150614eb182615813565b604082019050919050565b6000614ec9601b8361543d565b9150614ed482615862565b602082019050919050565b6000614eec60258361543d565b9150614ef78261588b565b604082019050919050565b6000614f0f601d8361543d565b9150614f1a826158da565b602082019050919050565b6000614f3260288361543d565b9150614f3d82615903565b604082019050919050565b6000614f5560218361543d565b9150614f6082615952565b604082019050919050565b6000614f7860168361543d565b9150614f83826159a1565b602082019050919050565b6000614f9b60208361543d565b9150614fa6826159ca565b602082019050919050565b6000614fbe60258361543d565b9150614fc9826159f3565b604082019050919050565b6000614fe1600083615432565b9150614fec82615a42565b600082019050919050565b600061500460248361543d565b915061500f82615a45565b604082019050919050565b615023816155b3565b82525050565b615032816155bd565b82525050565b600061504382614fd4565b9150819050919050565b60006020820190506150626000830184614d5d565b92915050565b600060208201905061507d6000830184614d3f565b92915050565b60006040820190506150986000830185614d5d565b6150a56020830184614d5d565b9392505050565b60006040820190506150c16000830185614d5d565b6150ce602083018461501a565b9392505050565b600060c0820190506150ea6000830189614d5d565b6150f7602083018861501a565b6151046040830187614de8565b6151116060830186614de8565b61511e6080830185614d5d565b61512b60a083018461501a565b979650505050505050565b600060208201905061514b6000830184614dca565b92915050565b60006020820190506151666000830184614dd9565b92915050565b600060208201905081810360008301526151868184614df7565b905092915050565b600060208201905081810360008301526151a781614e30565b9050919050565b600060208201905081810360008301526151c781614e53565b9050919050565b600060208201905081810360008301526151e781614e76565b9050919050565b6000602082019050818103600083015261520781614e99565b9050919050565b6000602082019050818103600083015261522781614ebc565b9050919050565b6000602082019050818103600083015261524781614edf565b9050919050565b6000602082019050818103600083015261526781614f02565b9050919050565b6000602082019050818103600083015261528781614f25565b9050919050565b600060208201905081810360008301526152a781614f48565b9050919050565b600060208201905081810360008301526152c781614f6b565b9050919050565b600060208201905081810360008301526152e781614f8e565b9050919050565b6000602082019050818103600083015261530781614fb1565b9050919050565b6000602082019050818103600083015261532781614ff7565b9050919050565b6000602082019050615343600083018461501a565b92915050565b600060408201905061535e600083018561501a565b81810360208301526153708184614d6c565b90509392505050565b600060a08201905061538e600083018861501a565b61539b6020830187614de8565b81810360408301526153ad8186614d6c565b90506153bc6060830185614d5d565b6153c9608083018461501a565b9695505050505050565b60006020820190506153e86000830184615029565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615459826155b3565b9150615464836155b3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615499576154986156ae565b5b828201905092915050565b60006154af826155b3565b91506154ba836155b3565b9250826154ca576154c96156dd565b5b828204905092915050565b60006154e0826155b3565b91506154eb836155b3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615524576155236156ae565b5b828202905092915050565b600061553a826155b3565b9150615545836155b3565b925082821015615558576155576156ae565b5b828203905092915050565b600061556e82615593565b9050919050565b600061558082615593565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006155d5826155dc565b9050919050565b60006155e782615593565b9050919050565b60006155f9826155b3565b9050919050565b60005b8381101561561e578082015181840152602081019050615603565b8381111561562d576000848401525b50505050565b6000600282049050600182168061564b57607f821691505b6020821081141561565f5761565e61570c565b5b50919050565b6000615670826155b3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156156a3576156a26156ae565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615a9d81615563565b8114615aa857600080fd5b50565b615ab481615587565b8114615abf57600080fd5b50565b615acb816155b3565b8114615ad657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e63e43f71e2ca294cc2b32f3f8dc291e4d3c82448490163f4d4902f334d51da264736f6c63430008040033

Deployed Bytecode Sourcemap

11993:16572:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16003:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21076:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12537:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17169:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19744:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13675:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16280:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20759:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18102:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13113:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21670:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18479:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12449:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19580:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16189:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16666:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18710:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12811:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13790:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18842:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13248:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12754:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20003:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27857:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16388:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3670:230;;;;;;;;;;;;;:::i;:::-;;12206:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13529:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13601:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13332:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17683:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13933:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13161:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12971:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3445:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16094:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12404:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16892:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19443:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21495:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19264:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13070:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13723:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13204:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12912:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18982:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13440:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13837:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13028:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16515:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24032:154;;;;;;;;;;;;;:::i;:::-;;18360:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18245:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17820:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13293:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18600:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3908:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23885:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17963:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13891:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12305:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12863:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19124:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16003:83;16040:13;16073:5;16066:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16003:83;:::o;21076:317::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21198:10:::1;21178:17;:30;;;;21239:10;21219:17;:30;;;;21280:10;21260:17;:30;;;;21322:63;21367:17;;21322:40;21344:17;;21322;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;21301:18;:84;;;;21076:317:::0;;;:::o;12537:81::-;;;:::o;17169:161::-;17244:4;17261:39;17270:12;:10;:12::i;:::-;17284:7;17293:6;17261:8;:39::i;:::-;17318:4;17311:11;;17169:161;;;;:::o;19744:113::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19842:7:::1;19824:9;:15;19834:4;19824:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;19744:113:::0;;:::o;13675:41::-;;;;;;;;;;;;;:::o;16280:100::-;16333:7;16360:12;;16353:19;;16280:100;:::o;20759:309::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20879:10:::1;20860:16;:29;;;;20919:10;20900:16;:29;;;;20959:10;20940:16;:29;;;;21000:60;21043:16;;21000:38;21021:16;;21000;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;20980:17;:80;;;;20759:309:::0;;;:::o;18102:135::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18223:6:::1;18193:19;:27;18213:6;18193:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18102:135:::0;;:::o;13113:35::-;;;;:::o;21670:313::-;21768:4;21785:36;21795:6;21803:9;21814:6;21785:9;:36::i;:::-;;21832:121;21841:6;21849:12;:10;:12::i;:::-;21863:89;21901:6;21863:89;;;;;;;;;;;;;;;;;:11;:19;21875:6;21863:19;;;;;;;;;;;;;;;:33;21883:12;:10;:12::i;:::-;21863:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21832:8;:121::i;:::-;21971:4;21964:11;;21670:313;;;;;:::o;18479:113::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18576:8:::1;18557:16;;:27;;;;;;;;;;;;;;;;;;18479:113:::0;:::o;12449:81::-;;;:::o;19580:156::-;19633:7;19660:68;19705:22;19715:11;19705:9;:22::i;:::-;19660:40;19677:22;19687:11;19677:9;:22::i;:::-;19660:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;19653:75;;19580:156;:::o;16189:83::-;16230:5;16255:9;;;;;;;;;;;16248:16;;16189:83;:::o;16666:218::-;16754:4;16771:83;16780:12;:10;:12::i;:::-;16794:7;16803:50;16842:10;16803:11;:25;16815:12;:10;:12::i;:::-;16803:25;;;;;;;;;;;;;;;:34;16829:7;16803:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;16771:8;:83::i;:::-;16872:4;16865:11;;16666:218;;;;:::o;18710:124::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18818:8:::1;18792:23;:34;;;;18710:124:::0;:::o;12811:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13790:40::-;;;;;;;;;;;;;:::o;18842:132::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18955:10:::1;18929:15;;:37;;;;;;;;;;;;;;;;;;18842:132:::0;:::o;13248:36::-;;;;:::o;12754:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;20003:748::-;20083:22;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20120:35:::1;20177:16;20120:74;;20243:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20225:53;;;20287:4;20294:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20225:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20208:110;;20360:1;20334:28;;:14;:28;;;20331:225;;;20448:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20430:74;;;20513:4;20520:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20430:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20413:131;;20331:225;20582:14;20568:11;;:28;;;;;;;;;;;;;;;;;;20648:16;20630:15;;:34;;;;;;;;;;;;;;;;;;20739:4;20702:12;:34;20723:11;;;;;;;;;;;20702:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;3649:1;20003:748:::0;;;:::o;27857:697::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27957:15:::1;27975:10;27957:28;;28023:7;;:14;;28004:8;;:15;;:33;27996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28074:15;28104:6:::0;28113:1:::1;28104:10;;28100:92;28120:7;;:14;;28116:1;:18;28100:92;;;28170:7;;28178:1;28170:10;;;;;;;;;;;;;;;;;;;;;28156:24;;;;;:::i;:::-;;;28136:3;;;;;:::i;:::-;;;;28100:92;;;;28232:10;28210:18;28220:7;28210:9;:18::i;:::-;:32;;28202:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28305:34;28328:10;28305:9;:18;28315:7;28305:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;28284:9;:18;28294:7;28284:18;;;;;;;;;;;;;;;:55;;;;28355:6;28351:194;28371:8;;:15;;28367:1;:19;28351:194;;;28433:38;28460:7;;28468:1;28460:10;;;;;;;;;;;;;;;;;;;;;28433:9;:22;28443:8;;28452:1;28443:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28433:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;28408:9;:22;28418:8;;28427:1;28418:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28408:22;;;;;;;;;;;;;;;:63;;;;28509:8;;28518:1;28509:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28491:42;;28500:7;28491:42;;;28522:7;;28530:1;28522:10;;;;;;;;;;;;;;;;;;;;;28491:42;;;;;;:::i;:::-;;;;;;;;28388:3;;;;;:::i;:::-;;;;28351:194;;;;3649:1;;27857:697:::0;;;;:::o;16388:119::-;16454:7;16481:9;:18;16491:7;16481:18;;;;;;;;;;;;;;;;16474:25;;16388:119;;;:::o;3670:230::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3777:42:::1;3740:81;;3761:6;::::0;::::1;;;;;;;;3740:81;;;;;;;;;;;;3849:42;3832:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3670:230::o:0;12206:92::-;;;;;;;;;;;;;:::o;13529:59::-;;;;:::o;13601:58::-;;;;:::o;13332:33::-;;;;:::o;17683:129::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17796:8:::1;17772:12;:21;17785:7;17772:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17683:129:::0;;:::o;13933:41::-;;;;;;;;;;;;;:::o;13161:36::-;;;;:::o;12971:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3445:79::-;3483:7;3510:6;;;;;;;;;;;3503:13;;3445:79;:::o;16094:87::-;16133:13;16166:7;16159:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16094:87;:::o;12404:32::-;;;;;;;;;;;;;:::o;16892:269::-;16985:4;17002:129;17011:12;:10;:12::i;:::-;17025:7;17034:96;17073:15;17034:96;;;;;;;;;;;;;;;;;:11;:25;17046:12;:10;:12::i;:::-;17034:25;;;;;;;;;;;;;;;:34;17060:7;17034:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;17002:8;:129::i;:::-;17149:4;17142:11;;16892:269;;;;:::o;19443:125::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19552:8:::1;19524:25;;:36;;;;;;;;;;;;;;;;;;19443:125:::0;:::o;21495:167::-;21573:4;21590:42;21600:12;:10;:12::i;:::-;21614:9;21625:6;21590:9;:42::i;:::-;;21650:4;21643:11;;21495:167;;;;:::o;19264:171::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19365:8:::1;19341:21;;:32;;;;;;;;;;;;;;;;;;19389:38;19418:8;19389:38;;;;;;:::i;:::-;;;;;;;;19264:171:::0;:::o;13070:36::-;;;;:::o;13723:26::-;;;;;;;;;;;;;:::o;13204:37::-;;;;:::o;12912:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;18982:134::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19097:10:::1;19069:17;;:39;;;;;;;;;;;;;;;;;;18982:134:::0;:::o;13440:69::-;;;;:::o;13837:45::-;;;;;;;;;;;;;:::o;13028:35::-;;;;:::o;16515:143::-;16596:7;16623:11;:18;16635:5;16623:18;;;;;;;;;;;;;;;:27;16642:7;16623:27;;;;;;;;;;;;;;;;16616:34;;16515:143;;;;:::o;24032:154::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24086:7:::1;24106:10;24098:24;;24130:21;24098:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24085:71;;;24175:2;24167:11;;;::::0;::::1;;3649:1;24032:154::o:0;18360:111::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18452:11:::1;18437:12;:26;;;;18360:111:::0;:::o;18245:107::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18337:7:::1;18312:22;;:32;;;;;;;;;;;;;;;;;;18245:107:::0;:::o;17820:135::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17939:8:::1;17910:17;:26;17928:7;17910:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;17820:135:::0;;:::o;13293:32::-;;;;:::o;18600:102::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18686:8:::1;18672:10;:22;;;;18600:102:::0;:::o;3908:244::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4017:1:::1;3997:22;;:8;:22;;;;3989:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4107:8;4078:38;;4099:6;::::0;::::1;;;;;;;;4078:38;;;;;;;;;;;;4136:8;4127:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3908:244:::0;:::o;23885:139::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23980:6:::1;23973:23;;;23997:10;24008:7;23973:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23885:139:::0;;:::o;17963:127::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18076:6:::1;18050:15;:23;18066:6;18050:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17963:127:::0;;:::o;13891:35::-;;;;;;;;;;;;;:::o;12305:92::-;;;;;;;;;;;;;:::o;12863:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;19124:132::-;3589:12;:10;:12::i;:::-;3579:22;;:6;;;;;;;;;;:22;;;3571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19237:10:::1;19211:15;;:37;;;;;;;;;;;;;;;;;;19124:132:::0;:::o;2130:250::-;2188:7;2217:1;2212;:6;2208:47;;;2242:1;2235:8;;;;2208:47;2267:9;2283:1;2279;:5;;;;:::i;:::-;2267:17;;2312:1;2307;2303;:5;;;;:::i;:::-;:10;2295:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2371:1;2364:8;;;2130:250;;;;;:::o;2388:132::-;2446:7;2473:39;2477:1;2480;2473:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2466:46;;2388:132;;;;:::o;1597:181::-;1655:7;1675:9;1691:1;1687;:5;;;;:::i;:::-;1675:17;;1716:1;1711;:6;;1703:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1769:1;1762:8;;;1597:181;;;;:::o;655:115::-;708:15;751:10;736:26;;655:115;:::o;17338:337::-;17448:1;17431:19;;:5;:19;;;;17423:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17529:1;17510:21;;:7;:21;;;;17502:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17613:6;17583:11;:18;17595:5;17583:18;;;;;;;;;;;;;;;:27;17602:7;17583:27;;;;;;;;;;;;;;;:36;;;;17651:7;17635:32;;17644:5;17635:32;;;17660:6;17635:32;;;;;;:::i;:::-;;;;;;;;17338:337;;;:::o;21991:1886::-;22078:4;22123:1;22105:20;;:6;:20;;;;22097:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22207:1;22186:23;;:9;:23;;;;22178:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22269:9;:17;22279:6;22269:17;;;;;;;;;;;;;;;;;;;;;;;;;22268:18;:43;;;;;22291:9;:20;22301:9;22291:20;;;;;;;;;;;;;;;;;;;;;;;;;22290:21;22268:43;22260:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;22361:16;;;;;;;;;;;22358:1502;;;22411:41;22426:6;22434:9;22445:6;22411:14;:41::i;:::-;22404:48;;;;22358:1502;22510:15;:23;22526:6;22510:23;;;;;;;;;;;;;;;;;;;;;;;;;22509:24;:55;;;;;22538:15;:26;22554:9;22538:26;;;;;;;;;;;;;;;;;;;;;;;;;22537:27;22509:55;:81;;;;;22568:22;;;;;;;;;;;22509:81;22506:196;;;22629:12;;22619:6;:22;;22611:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;22506:196;22718:28;22749:24;22767:4;22749:9;:24::i;:::-;22718:55;;22788:28;22843:23;;22819:20;:47;;22788:78;;22899:23;:44;;;;;22927:16;;;;;;;;;;;22926:17;22899:44;:69;;;;;22948:12;:20;22961:6;22948:20;;;;;;;;;;;;;;;;;;;;;;;;;22947:21;22899:69;:94;;;;;22972:21;;;;;;;;;;;22899:94;22895:305;;;23031:25;;;;;;;;;;;23028:97;;;23102:23;;23079:46;;23028:97;23144:36;23159:20;23144:14;:36::i;:::-;22895:305;23236:53;23258:6;23236:53;;;;;;;;;;;;;;;;;:9;:17;23246:6;23236:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23216:9;:17;23226:6;23216:17;;;;;;;;;;;;;;;:73;;;;23306:19;23329:17;:25;23347:6;23329:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;23358:17;:28;23376:9;23358:28;;;;;;;;;;;;;;;;;;;;;;;;;23329:57;23328:148;;23442:34;23450:6;23458:9;23469:6;23442:7;:34::i;:::-;23328:148;;;23433:6;23328:148;23306:170;;23496:16;;;;;;;;;;;:51;;;;;23517:19;:30;23537:9;23517:30;;;;;;;;;;;;;;;;;;;;;;;;;23516:31;23496:51;23493:191;;;23617:10;;23576:37;23601:11;23576:20;23586:9;23576;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;23568:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;23493:191;23723:37;23748:11;23723:9;:20;23733:9;23723:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;23700:9;:20;23710:9;23700:20;;;;;;;;;;;;;;;:60;;;;23799:9;23782:40;;23791:6;23782:40;;;23810:11;23782:40;;;;;;:::i;:::-;;;;;;;;23844:4;23837:11;;;;;21991:1886;;;;;;:::o;1930:192::-;2016:7;2049:1;2044;:6;;2052:12;2036:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2076:9;2092:1;2088;:5;;;;:::i;:::-;2076:17;;2113:1;2106:8;;;1930:192;;;;;:::o;1786:136::-;1844:7;1871:43;1875:1;1878;1871:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1864:50;;1786:136;;;;:::o;2528:278::-;2614:7;2646:1;2642;:5;2649:12;2634:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2673:9;2689:1;2685;:5;;;;:::i;:::-;2673:17;;2797:1;2790:8;;;2528:278;;;;;:::o;24194:330::-;24287:4;24324:53;24346:6;24324:53;;;;;;;;;;;;;;;;;:9;:17;24334:6;24324:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24304:9;:17;24314:6;24304:17;;;;;;;;;;;;;;;:73;;;;24411:32;24436:6;24411:9;:20;24421:9;24411:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24388:9;:20;24398:9;24388:20;;;;;;;;;;;;;;;:55;;;;24476:9;24459:35;;24468:6;24459:35;;;24487:6;24459:35;;;;;;:::i;:::-;;;;;;;;24512:4;24505:11;;24194:330;;;;;:::o;24532:1449::-;14418:4;14399:16;;:23;;;;;;;;;;;;;;;;;;24606:19:::1;24628:41;24650:18;;24628:17;;:21;;:41;;;;:::i;:::-;24606:63;;24682:22;24707:39;24728:17;;24707:16;;:20;;:39;;;;:::i;:::-;24682:64;;24757:22;24782:39;24803:17;;24782:16;;:20;;:39;;;;:::i;:::-;24757:64;;24920:18;24941:51;24990:1;24941:44;24973:11;24941:27;24953:14;24941:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;24920:72;;25003:20;25026:23;25038:10;25026:7;:11;;:23;;;;:::i;:::-;25003:46;;25062:22;25088:21;25062:47;;25120:30;25137:12;25120:16;:30::i;:::-;25161:23;25188:41;25214:14;25188:21;:25;;:41;;;;:::i;:::-;25161:68;;25242:19;25264:38;25280:21;25299:1;25280:14;:18;;:21;;;;:::i;:::-;25264:11;:15;;:38;;;;:::i;:::-;25242:60;;25315:26;25344:59;25401:1;25344:52;25384:11;25344:35;25364:14;25344:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;25315:88;;25414:26;25443:52;25483:11;25443:35;25463:14;25443:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;25414:81;;25506:26;25535:63;25579:18;25535:39;25555:18;25535:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;25506:92;;25635:1;25614:18;:22;25611:107;;;25661:15;;;;;;;;;;;25653:33;;:53;25687:18;25653:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25611:107;25754:1;25733:18;:22;25730:107;;;25780:15;;;;;;;;;;;25772:33;;:53;25806:18;25772:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25730:107;25882:1;25861:18;:22;:40;;;;;25900:1;25887:10;:14;25861:40;25858:116;;;25918:44;25931:10;25943:18;25918:12;:44::i;:::-;25858:116;14433:1;;;;;;;;;;;14464:5:::0;14445:16;;:24;;;;;;;;;;;;;;;;;;24532:1449;:::o;27198:622::-;27284:7;27314:17;27334:1;27314:21;;27359:12;:20;27372:6;27359:20;;;;;;;;;;;;;;;;;;;;;;;;;27356:223;;;27408:38;27442:3;27408:29;27419:17;;27408:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;27396:50;;27356:223;;;27476:12;:23;27489:9;27476:23;;;;;;;;;;;;;;;;;;;;;;;;;27473:106;;;27528:39;27563:3;27528:30;27539:18;;27528:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;27516:51;;27473:106;27356:223;27614:1;27602:9;:13;27599:173;;;27659:39;27688:9;27659;:24;27677:4;27659:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27632:9;:24;27650:4;27632:24;;;;;;;;;;;;;;;:66;;;;27743:4;27718:42;;27727:6;27718:42;;;27750:9;27718:42;;;;;;:::i;:::-;;;;;;;;27599:173;27791:21;27802:9;27791:6;:10;;:21;;;;:::i;:::-;27784:28;;;27198:622;;;;;:::o;25993:666::-;26119:21;26157:1;26143:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26119:40;;26188:4;26170;26175:1;26170:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;26214:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26204:4;26209:1;26204:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;26249:62;26266:4;26281:15;;;;;;;;;;;26299:11;26249:8;:62::i;:::-;26350:15;;;;;;;;;;;:66;;;26431:11;26457:1;26501:4;26528;26564:15;26350:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26616:35;26633:11;26646:4;26616:35;;;;;;;:::i;:::-;;;;;;;;25993:666;;:::o;26667:523::-;26815:62;26832:4;26847:15;;;;;;;;;;;26865:11;26815:8;:62::i;:::-;26920:15;;;;;;;;;;;:31;;;26959:9;26992:4;27012:11;27038:1;27081;27124:17;;;;;;;;;;;27156:15;26920:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26667:523;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;318:367::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:2;;469:1;466;459:12;418:2;505:6;492:20;482:30;;535:18;527:6;524:30;521:2;;;567:1;564;557:12;521:2;604:4;596:6;592:17;580:29;;658:3;650:4;642:6;638:17;628:8;624:32;621:41;618:2;;;675:1;672;665:12;618:2;408:277;;;;;:::o;708:367::-;781:8;791:6;841:3;834:4;826:6;822:17;818:27;808:2;;859:1;856;849:12;808:2;895:6;882:20;872:30;;925:18;917:6;914:30;911:2;;;957:1;954;947:12;911:2;994:4;986:6;982:17;970:29;;1048:3;1040:4;1032:6;1028:17;1018:8;1014:32;1011:41;1008:2;;;1065:1;1062;1055:12;1008:2;798:277;;;;;:::o;1081:133::-;1124:5;1162:6;1149:20;1140:29;;1178:30;1202:5;1178:30;:::i;:::-;1130:84;;;;:::o;1220:137::-;1274:5;1305:6;1299:13;1290:22;;1321:30;1345:5;1321:30;:::i;:::-;1280:77;;;;:::o;1363:139::-;1409:5;1447:6;1434:20;1425:29;;1463:33;1490:5;1463:33;:::i;:::-;1415:87;;;;:::o;1508:143::-;1565:5;1596:6;1590:13;1581:22;;1612:33;1639:5;1612:33;:::i;:::-;1571:80;;;;:::o;1657:262::-;1716:6;1765:2;1753:9;1744:7;1740:23;1736:32;1733:2;;;1781:1;1778;1771:12;1733:2;1824:1;1849:53;1894:7;1885:6;1874:9;1870:22;1849:53;:::i;:::-;1839:63;;1795:117;1723:196;;;;:::o;1925:284::-;1995:6;2044:2;2032:9;2023:7;2019:23;2015:32;2012:2;;;2060:1;2057;2050:12;2012:2;2103:1;2128:64;2184:7;2175:6;2164:9;2160:22;2128:64;:::i;:::-;2118:74;;2074:128;2002:207;;;;:::o;2215:407::-;2283:6;2291;2340:2;2328:9;2319:7;2315:23;2311:32;2308:2;;;2356:1;2353;2346:12;2308:2;2399:1;2424:53;2469:7;2460:6;2449:9;2445:22;2424:53;:::i;:::-;2414:63;;2370:117;2526:2;2552:53;2597:7;2588:6;2577:9;2573:22;2552:53;:::i;:::-;2542:63;;2497:118;2298:324;;;;;:::o;2628:552::-;2705:6;2713;2721;2770:2;2758:9;2749:7;2745:23;2741:32;2738:2;;;2786:1;2783;2776:12;2738:2;2829:1;2854:53;2899:7;2890:6;2879:9;2875:22;2854:53;:::i;:::-;2844:63;;2800:117;2956:2;2982:53;3027:7;3018:6;3007:9;3003:22;2982:53;:::i;:::-;2972:63;;2927:118;3084:2;3110:53;3155:7;3146:6;3135:9;3131:22;3110:53;:::i;:::-;3100:63;;3055:118;2728:452;;;;;:::o;3186:401::-;3251:6;3259;3308:2;3296:9;3287:7;3283:23;3279:32;3276:2;;;3324:1;3321;3314:12;3276:2;3367:1;3392:53;3437:7;3428:6;3417:9;3413:22;3392:53;:::i;:::-;3382:63;;3338:117;3494:2;3520:50;3562:7;3553:6;3542:9;3538:22;3520:50;:::i;:::-;3510:60;;3465:115;3266:321;;;;;:::o;3593:407::-;3661:6;3669;3718:2;3706:9;3697:7;3693:23;3689:32;3686:2;;;3734:1;3731;3724:12;3686:2;3777:1;3802:53;3847:7;3838:6;3827:9;3823:22;3802:53;:::i;:::-;3792:63;;3748:117;3904:2;3930:53;3975:7;3966:6;3955:9;3951:22;3930:53;:::i;:::-;3920:63;;3875:118;3676:324;;;;;:::o;4006:733::-;4128:6;4136;4144;4152;4201:2;4189:9;4180:7;4176:23;4172:32;4169:2;;;4217:1;4214;4207:12;4169:2;4288:1;4277:9;4273:17;4260:31;4318:18;4310:6;4307:30;4304:2;;;4350:1;4347;4340:12;4304:2;4386:80;4458:7;4449:6;4438:9;4434:22;4386:80;:::i;:::-;4368:98;;;;4231:245;4543:2;4532:9;4528:18;4515:32;4574:18;4566:6;4563:30;4560:2;;;4606:1;4603;4596:12;4560:2;4642:80;4714:7;4705:6;4694:9;4690:22;4642:80;:::i;:::-;4624:98;;;;4486:246;4159:580;;;;;;;:::o;4745:256::-;4801:6;4850:2;4838:9;4829:7;4825:23;4821:32;4818:2;;;4866:1;4863;4856:12;4818:2;4909:1;4934:50;4976:7;4967:6;4956:9;4952:22;4934:50;:::i;:::-;4924:60;;4880:114;4808:193;;;;:::o;5007:278::-;5074:6;5123:2;5111:9;5102:7;5098:23;5094:32;5091:2;;;5139:1;5136;5129:12;5091:2;5182:1;5207:61;5260:7;5251:6;5240:9;5236:22;5207:61;:::i;:::-;5197:71;;5153:125;5081:204;;;;:::o;5291:262::-;5350:6;5399:2;5387:9;5378:7;5374:23;5370:32;5367:2;;;5415:1;5412;5405:12;5367:2;5458:1;5483:53;5528:7;5519:6;5508:9;5504:22;5483:53;:::i;:::-;5473:63;;5429:117;5357:196;;;;:::o;5559:552::-;5636:6;5644;5652;5701:2;5689:9;5680:7;5676:23;5672:32;5669:2;;;5717:1;5714;5707:12;5669:2;5760:1;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5731:117;5887:2;5913:53;5958:7;5949:6;5938:9;5934:22;5913:53;:::i;:::-;5903:63;;5858:118;6015:2;6041:53;6086:7;6077:6;6066:9;6062:22;6041:53;:::i;:::-;6031:63;;5986:118;5659:452;;;;;:::o;6117:596::-;6205:6;6213;6221;6270:2;6258:9;6249:7;6245:23;6241:32;6238:2;;;6286:1;6283;6276:12;6238:2;6329:1;6354:64;6410:7;6401:6;6390:9;6386:22;6354:64;:::i;:::-;6344:74;;6300:128;6467:2;6493:64;6549:7;6540:6;6529:9;6525:22;6493:64;:::i;:::-;6483:74;;6438:129;6606:2;6632:64;6688:7;6679:6;6668:9;6664:22;6632:64;:::i;:::-;6622:74;;6577:129;6228:485;;;;;:::o;6719:179::-;6788:10;6809:46;6851:3;6843:6;6809:46;:::i;:::-;6887:4;6882:3;6878:14;6864:28;;6799:99;;;;:::o;6904:142::-;7007:32;7033:5;7007:32;:::i;:::-;7002:3;6995:45;6985:61;;:::o;7052:108::-;7129:24;7147:5;7129:24;:::i;:::-;7124:3;7117:37;7107:53;;:::o;7166:118::-;7253:24;7271:5;7253:24;:::i;:::-;7248:3;7241:37;7231:53;;:::o;7320:732::-;7439:3;7468:54;7516:5;7468:54;:::i;:::-;7538:86;7617:6;7612:3;7538:86;:::i;:::-;7531:93;;7648:56;7698:5;7648:56;:::i;:::-;7727:7;7758:1;7743:284;7768:6;7765:1;7762:13;7743:284;;;7844:6;7838:13;7871:63;7930:3;7915:13;7871:63;:::i;:::-;7864:70;;7957:60;8010:6;7957:60;:::i;:::-;7947:70;;7803:224;7790:1;7787;7783:9;7778:14;;7743:284;;;7747:14;8043:3;8036:10;;7444:608;;;;;;;:::o;8058:109::-;8139:21;8154:5;8139:21;:::i;:::-;8134:3;8127:34;8117:50;;:::o;8173:185::-;8287:64;8345:5;8287:64;:::i;:::-;8282:3;8275:77;8265:93;;:::o;8364:147::-;8459:45;8498:5;8459:45;:::i;:::-;8454:3;8447:58;8437:74;;:::o;8517:364::-;8605:3;8633:39;8666:5;8633:39;:::i;:::-;8688:71;8752:6;8747:3;8688:71;:::i;:::-;8681:78;;8768:52;8813:6;8808:3;8801:4;8794:5;8790:16;8768:52;:::i;:::-;8845:29;8867:6;8845:29;:::i;:::-;8840:3;8836:39;8829:46;;8609:272;;;;;:::o;8887:366::-;9029:3;9050:67;9114:2;9109:3;9050:67;:::i;:::-;9043:74;;9126:93;9215:3;9126:93;:::i;:::-;9244:2;9239:3;9235:12;9228:19;;9033:220;;;:::o;9259:366::-;9401:3;9422:67;9486:2;9481:3;9422:67;:::i;:::-;9415:74;;9498:93;9587:3;9498:93;:::i;:::-;9616:2;9611:3;9607:12;9600:19;;9405:220;;;:::o;9631:366::-;9773:3;9794:67;9858:2;9853:3;9794:67;:::i;:::-;9787:74;;9870:93;9959:3;9870:93;:::i;:::-;9988:2;9983:3;9979:12;9972:19;;9777:220;;;:::o;10003:366::-;10145:3;10166:67;10230:2;10225:3;10166:67;:::i;:::-;10159:74;;10242:93;10331:3;10242:93;:::i;:::-;10360:2;10355:3;10351:12;10344:19;;10149:220;;;:::o;10375:366::-;10517:3;10538:67;10602:2;10597:3;10538:67;:::i;:::-;10531:74;;10614:93;10703:3;10614:93;:::i;:::-;10732:2;10727:3;10723:12;10716:19;;10521:220;;;:::o;10747:366::-;10889:3;10910:67;10974:2;10969:3;10910:67;:::i;:::-;10903:74;;10986:93;11075:3;10986:93;:::i;:::-;11104:2;11099:3;11095:12;11088:19;;10893:220;;;:::o;11119:366::-;11261:3;11282:67;11346:2;11341:3;11282:67;:::i;:::-;11275:74;;11358:93;11447:3;11358:93;:::i;:::-;11476:2;11471:3;11467:12;11460:19;;11265:220;;;:::o;11491:366::-;11633:3;11654:67;11718:2;11713:3;11654:67;:::i;:::-;11647:74;;11730:93;11819:3;11730:93;:::i;:::-;11848:2;11843:3;11839:12;11832:19;;11637:220;;;:::o;11863:366::-;12005:3;12026:67;12090:2;12085:3;12026:67;:::i;:::-;12019:74;;12102:93;12191:3;12102:93;:::i;:::-;12220:2;12215:3;12211:12;12204:19;;12009:220;;;:::o;12235:366::-;12377:3;12398:67;12462:2;12457:3;12398:67;:::i;:::-;12391:74;;12474:93;12563:3;12474:93;:::i;:::-;12592:2;12587:3;12583:12;12576:19;;12381:220;;;:::o;12607:366::-;12749:3;12770:67;12834:2;12829:3;12770:67;:::i;:::-;12763:74;;12846:93;12935:3;12846:93;:::i;:::-;12964:2;12959:3;12955:12;12948:19;;12753:220;;;:::o;12979:366::-;13121:3;13142:67;13206:2;13201:3;13142:67;:::i;:::-;13135:74;;13218:93;13307:3;13218:93;:::i;:::-;13336:2;13331:3;13327:12;13320:19;;13125:220;;;:::o;13351:398::-;13510:3;13531:83;13612:1;13607:3;13531:83;:::i;:::-;13524:90;;13623:93;13712:3;13623:93;:::i;:::-;13741:1;13736:3;13732:11;13725:18;;13514:235;;;:::o;13755:366::-;13897:3;13918:67;13982:2;13977:3;13918:67;:::i;:::-;13911:74;;13994:93;14083:3;13994:93;:::i;:::-;14112:2;14107:3;14103:12;14096:19;;13901:220;;;:::o;14127:118::-;14214:24;14232:5;14214:24;:::i;:::-;14209:3;14202:37;14192:53;;:::o;14251:112::-;14334:22;14350:5;14334:22;:::i;:::-;14329:3;14322:35;14312:51;;:::o;14369:379::-;14553:3;14575:147;14718:3;14575:147;:::i;:::-;14568:154;;14739:3;14732:10;;14557:191;;;:::o;14754:222::-;14847:4;14885:2;14874:9;14870:18;14862:26;;14898:71;14966:1;14955:9;14951:17;14942:6;14898:71;:::i;:::-;14852:124;;;;:::o;14982:254::-;15091:4;15129:2;15118:9;15114:18;15106:26;;15142:87;15226:1;15215:9;15211:17;15202:6;15142:87;:::i;:::-;15096:140;;;;:::o;15242:332::-;15363:4;15401:2;15390:9;15386:18;15378:26;;15414:71;15482:1;15471:9;15467:17;15458:6;15414:71;:::i;:::-;15495:72;15563:2;15552:9;15548:18;15539:6;15495:72;:::i;:::-;15368:206;;;;;:::o;15580:332::-;15701:4;15739:2;15728:9;15724:18;15716:26;;15752:71;15820:1;15809:9;15805:17;15796:6;15752:71;:::i;:::-;15833:72;15901:2;15890:9;15886:18;15877:6;15833:72;:::i;:::-;15706:206;;;;;:::o;15918:807::-;16167:4;16205:3;16194:9;16190:19;16182:27;;16219:71;16287:1;16276:9;16272:17;16263:6;16219:71;:::i;:::-;16300:72;16368:2;16357:9;16353:18;16344:6;16300:72;:::i;:::-;16382:80;16458:2;16447:9;16443:18;16434:6;16382:80;:::i;:::-;16472;16548:2;16537:9;16533:18;16524:6;16472:80;:::i;:::-;16562:73;16630:3;16619:9;16615:19;16606:6;16562:73;:::i;:::-;16645;16713:3;16702:9;16698:19;16689:6;16645:73;:::i;:::-;16172:553;;;;;;;;;:::o;16731:210::-;16818:4;16856:2;16845:9;16841:18;16833:26;;16869:65;16931:1;16920:9;16916:17;16907:6;16869:65;:::i;:::-;16823:118;;;;:::o;16947:276::-;17067:4;17105:2;17094:9;17090:18;17082:26;;17118:98;17213:1;17202:9;17198:17;17189:6;17118:98;:::i;:::-;17072:151;;;;:::o;17229:313::-;17342:4;17380:2;17369:9;17365:18;17357:26;;17429:9;17423:4;17419:20;17415:1;17404:9;17400:17;17393:47;17457:78;17530:4;17521:6;17457:78;:::i;:::-;17449:86;;17347:195;;;;:::o;17548:419::-;17714:4;17752:2;17741:9;17737:18;17729:26;;17801:9;17795:4;17791:20;17787:1;17776:9;17772:17;17765:47;17829:131;17955:4;17829:131;:::i;:::-;17821:139;;17719:248;;;:::o;17973:419::-;18139:4;18177:2;18166:9;18162:18;18154:26;;18226:9;18220:4;18216:20;18212:1;18201:9;18197:17;18190:47;18254:131;18380:4;18254:131;:::i;:::-;18246:139;;18144:248;;;:::o;18398:419::-;18564:4;18602:2;18591:9;18587:18;18579:26;;18651:9;18645:4;18641:20;18637:1;18626:9;18622:17;18615:47;18679:131;18805:4;18679:131;:::i;:::-;18671:139;;18569:248;;;:::o;18823:419::-;18989:4;19027:2;19016:9;19012:18;19004:26;;19076:9;19070:4;19066:20;19062:1;19051:9;19047:17;19040:47;19104:131;19230:4;19104:131;:::i;:::-;19096:139;;18994:248;;;:::o;19248:419::-;19414:4;19452:2;19441:9;19437:18;19429:26;;19501:9;19495:4;19491:20;19487:1;19476:9;19472:17;19465:47;19529:131;19655:4;19529:131;:::i;:::-;19521:139;;19419:248;;;:::o;19673:419::-;19839:4;19877:2;19866:9;19862:18;19854:26;;19926:9;19920:4;19916:20;19912:1;19901:9;19897:17;19890:47;19954:131;20080:4;19954:131;:::i;:::-;19946:139;;19844:248;;;:::o;20098:419::-;20264:4;20302:2;20291:9;20287:18;20279:26;;20351:9;20345:4;20341:20;20337:1;20326:9;20322:17;20315:47;20379:131;20505:4;20379:131;:::i;:::-;20371:139;;20269:248;;;:::o;20523:419::-;20689:4;20727:2;20716:9;20712:18;20704:26;;20776:9;20770:4;20766:20;20762:1;20751:9;20747:17;20740:47;20804:131;20930:4;20804:131;:::i;:::-;20796:139;;20694:248;;;:::o;20948:419::-;21114:4;21152:2;21141:9;21137:18;21129:26;;21201:9;21195:4;21191:20;21187:1;21176:9;21172:17;21165:47;21229:131;21355:4;21229:131;:::i;:::-;21221:139;;21119:248;;;:::o;21373:419::-;21539:4;21577:2;21566:9;21562:18;21554:26;;21626:9;21620:4;21616:20;21612:1;21601:9;21597:17;21590:47;21654:131;21780:4;21654:131;:::i;:::-;21646:139;;21544:248;;;:::o;21798:419::-;21964:4;22002:2;21991:9;21987:18;21979:26;;22051:9;22045:4;22041:20;22037:1;22026:9;22022:17;22015:47;22079:131;22205:4;22079:131;:::i;:::-;22071:139;;21969:248;;;:::o;22223:419::-;22389:4;22427:2;22416:9;22412:18;22404:26;;22476:9;22470:4;22466:20;22462:1;22451:9;22447:17;22440:47;22504:131;22630:4;22504:131;:::i;:::-;22496:139;;22394:248;;;:::o;22648:419::-;22814:4;22852:2;22841:9;22837:18;22829:26;;22901:9;22895:4;22891:20;22887:1;22876:9;22872:17;22865:47;22929:131;23055:4;22929:131;:::i;:::-;22921:139;;22819:248;;;:::o;23073:222::-;23166:4;23204:2;23193:9;23189:18;23181:26;;23217:71;23285:1;23274:9;23270:17;23261:6;23217:71;:::i;:::-;23171:124;;;;:::o;23301:483::-;23472:4;23510:2;23499:9;23495:18;23487:26;;23523:71;23591:1;23580:9;23576:17;23567:6;23523:71;:::i;:::-;23641:9;23635:4;23631:20;23626:2;23615:9;23611:18;23604:48;23669:108;23772:4;23763:6;23669:108;:::i;:::-;23661:116;;23477:307;;;;;:::o;23790:831::-;24053:4;24091:3;24080:9;24076:19;24068:27;;24105:71;24173:1;24162:9;24158:17;24149:6;24105:71;:::i;:::-;24186:80;24262:2;24251:9;24247:18;24238:6;24186:80;:::i;:::-;24313:9;24307:4;24303:20;24298:2;24287:9;24283:18;24276:48;24341:108;24444:4;24435:6;24341:108;:::i;:::-;24333:116;;24459:72;24527:2;24516:9;24512:18;24503:6;24459:72;:::i;:::-;24541:73;24609:3;24598:9;24594:19;24585:6;24541:73;:::i;:::-;24058:563;;;;;;;;:::o;24627:214::-;24716:4;24754:2;24743:9;24739:18;24731:26;;24767:67;24831:1;24820:9;24816:17;24807:6;24767:67;:::i;:::-;24721:120;;;;:::o;24847:132::-;24914:4;24937:3;24929:11;;24967:4;24962:3;24958:14;24950:22;;24919:60;;;:::o;24985:114::-;25052:6;25086:5;25080:12;25070:22;;25059:40;;;:::o;25105:99::-;25157:6;25191:5;25185:12;25175:22;;25164:40;;;:::o;25210:113::-;25280:4;25312;25307:3;25303:14;25295:22;;25285:38;;;:::o;25329:184::-;25428:11;25462:6;25457:3;25450:19;25502:4;25497:3;25493:14;25478:29;;25440:73;;;;:::o;25519:147::-;25620:11;25657:3;25642:18;;25632:34;;;;:::o;25672:169::-;25756:11;25790:6;25785:3;25778:19;25830:4;25825:3;25821:14;25806:29;;25768:73;;;;:::o;25847:305::-;25887:3;25906:20;25924:1;25906:20;:::i;:::-;25901:25;;25940:20;25958:1;25940:20;:::i;:::-;25935:25;;26094:1;26026:66;26022:74;26019:1;26016:81;26013:2;;;26100:18;;:::i;:::-;26013:2;26144:1;26141;26137:9;26130:16;;25891:261;;;;:::o;26158:185::-;26198:1;26215:20;26233:1;26215:20;:::i;:::-;26210:25;;26249:20;26267:1;26249:20;:::i;:::-;26244:25;;26288:1;26278:2;;26293:18;;:::i;:::-;26278:2;26335:1;26332;26328:9;26323:14;;26200:143;;;;:::o;26349:348::-;26389:7;26412:20;26430:1;26412:20;:::i;:::-;26407:25;;26446:20;26464:1;26446:20;:::i;:::-;26441:25;;26634:1;26566:66;26562:74;26559:1;26556:81;26551:1;26544:9;26537:17;26533:105;26530:2;;;26641:18;;:::i;:::-;26530:2;26689:1;26686;26682:9;26671:20;;26397:300;;;;:::o;26703:191::-;26743:4;26763:20;26781:1;26763:20;:::i;:::-;26758:25;;26797:20;26815:1;26797:20;:::i;:::-;26792:25;;26836:1;26833;26830:8;26827:2;;;26841:18;;:::i;:::-;26827:2;26886:1;26883;26879:9;26871:17;;26748:146;;;;:::o;26900:96::-;26937:7;26966:24;26984:5;26966:24;:::i;:::-;26955:35;;26945:51;;;:::o;27002:104::-;27047:7;27076:24;27094:5;27076:24;:::i;:::-;27065:35;;27055:51;;;:::o;27112:90::-;27146:7;27189:5;27182:13;27175:21;27164:32;;27154:48;;;:::o;27208:126::-;27245:7;27285:42;27278:5;27274:54;27263:65;;27253:81;;;:::o;27340:77::-;27377:7;27406:5;27395:16;;27385:32;;;:::o;27423:86::-;27458:7;27498:4;27491:5;27487:16;27476:27;;27466:43;;;:::o;27515:180::-;27592:9;27625:64;27683:5;27625:64;:::i;:::-;27612:77;;27602:93;;;:::o;27701:140::-;27778:9;27811:24;27829:5;27811:24;:::i;:::-;27798:37;;27788:53;;;:::o;27847:121::-;27905:9;27938:24;27956:5;27938:24;:::i;:::-;27925:37;;27915:53;;;:::o;27974:307::-;28042:1;28052:113;28066:6;28063:1;28060:13;28052:113;;;28151:1;28146:3;28142:11;28136:18;28132:1;28127:3;28123:11;28116:39;28088:2;28085:1;28081:10;28076:15;;28052:113;;;28183:6;28180:1;28177:13;28174:2;;;28263:1;28254:6;28249:3;28245:16;28238:27;28174:2;28023:258;;;;:::o;28287:320::-;28331:6;28368:1;28362:4;28358:12;28348:22;;28415:1;28409:4;28405:12;28436:18;28426:2;;28492:4;28484:6;28480:17;28470:27;;28426:2;28554;28546:6;28543:14;28523:18;28520:38;28517:2;;;28573:18;;:::i;:::-;28517:2;28338:269;;;;:::o;28613:233::-;28652:3;28675:24;28693:5;28675:24;:::i;:::-;28666:33;;28721:66;28714:5;28711:77;28708:2;;;28791:18;;:::i;:::-;28708:2;28838:1;28831:5;28827:13;28820:20;;28656:190;;;:::o;28852:180::-;28900:77;28897:1;28890:88;28997:4;28994:1;28987:15;29021:4;29018:1;29011:15;29038:180;29086:77;29083:1;29076:88;29183:4;29180:1;29173:15;29207:4;29204:1;29197:15;29224:180;29272:77;29269:1;29262:88;29369:4;29366:1;29359:15;29393:4;29390:1;29383:15;29410:102;29451:6;29502:2;29498:7;29493:2;29486:5;29482:14;29478:28;29468:38;;29458:54;;;:::o;29518:222::-;29658:34;29654:1;29646:6;29642:14;29635:58;29727:5;29722:2;29714:6;29710:15;29703:30;29624:116;:::o;29746:177::-;29886:29;29882:1;29874:6;29870:14;29863:53;29852:71;:::o;29929:225::-;30069:34;30065:1;30057:6;30053:14;30046:58;30138:8;30133:2;30125:6;30121:15;30114:33;30035:119;:::o;30160:221::-;30300:34;30296:1;30288:6;30284:14;30277:58;30369:4;30364:2;30356:6;30352:15;30345:29;30266:115;:::o;30387:177::-;30527:29;30523:1;30515:6;30511:14;30504:53;30493:71;:::o;30570:224::-;30710:34;30706:1;30698:6;30694:14;30687:58;30779:7;30774:2;30766:6;30762:15;30755:32;30676:118;:::o;30800:179::-;30940:31;30936:1;30928:6;30924:14;30917:55;30906:73;:::o;30985:227::-;31125:34;31121:1;31113:6;31109:14;31102:58;31194:10;31189:2;31181:6;31177:15;31170:35;31091:121;:::o;31218:220::-;31358:34;31354:1;31346:6;31342:14;31335:58;31427:3;31422:2;31414:6;31410:15;31403:28;31324:114;:::o;31444:172::-;31584:24;31580:1;31572:6;31568:14;31561:48;31550:66;:::o;31622:182::-;31762:34;31758:1;31750:6;31746:14;31739:58;31728:76;:::o;31810:224::-;31950:34;31946:1;31938:6;31934:14;31927:58;32019:7;32014:2;32006:6;32002:15;31995:32;31916:118;:::o;32040:114::-;32146:8;:::o;32160:223::-;32300:34;32296:1;32288:6;32284:14;32277:58;32369:6;32364:2;32356:6;32352:15;32345:31;32266:117;:::o;32389:122::-;32462:24;32480:5;32462:24;:::i;:::-;32455:5;32452:35;32442:2;;32501:1;32498;32491:12;32442:2;32432:79;:::o;32517:116::-;32587:21;32602:5;32587:21;:::i;:::-;32580:5;32577:32;32567:2;;32623:1;32620;32613:12;32567:2;32557:76;:::o;32639:122::-;32712:24;32730:5;32712:24;:::i;:::-;32705:5;32702:35;32692:2;;32751:1;32748;32741:12;32692:2;32682:79;:::o

Swarm Source

ipfs://e63e43f71e2ca294cc2b32f3f8dc291e4d3c82448490163f4d4902f334d51da2

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.