BNB Price: $715.65 (-2.10%)
Gas: 1 GWei
 

Overview

BNB Balance

BNB Smart Chain LogoBNB Smart Chain LogoBNB Smart Chain Logo0 BNB

BNB Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deposit420764262024-09-08 14:32:2197 days ago1725805941IN
ACryptoS : Strategy
0 BNB0.000021291
Deposit342462572023-12-11 0:18:48370 days ago1702253928IN
ACryptoS : Strategy
0 BNB0.000063893
Deposit342461372023-12-11 0:12:48370 days ago1702253568IN
ACryptoS : Strategy
0 BNB0.000063893
Harvest326180572023-10-15 6:50:46426 days ago1697352646IN
ACryptoS : Strategy
0 BNB0.002591411
Harvest326180572023-10-15 6:50:46426 days ago1697352646IN
ACryptoS : Strategy
0 BNB0.002591411
Harvest326180492023-10-15 6:50:22426 days ago1697352622IN
ACryptoS : Strategy
0 BNB0.002591411
Harvest326180492023-10-15 6:50:22426 days ago1697352622IN
ACryptoS : Strategy
0 BNB0.008178491.001
Harvest298593652023-07-11 4:05:42522 days ago1689048342IN
ACryptoS : Strategy
0 BNB0.008650383
Harvest297266462023-07-06 13:08:44527 days ago1688648924IN
ACryptoS : Strategy
0 BNB0.010464033
Harvest292251942023-06-19 1:57:42545 days ago1687139862IN
ACryptoS : Strategy
0 BNB0.017966353
Harvest282383132023-05-15 17:52:32579 days ago1684173152IN
ACryptoS : Strategy
0 BNB0.019153893
Harvest277421652023-04-28 11:47:05596 days ago1682682425IN
ACryptoS : Strategy
0 BNB0.003932711.02499999
Harvest276628002023-04-25 17:32:21599 days ago1682443941IN
ACryptoS : Strategy
0 BNB0.010402841.02499999
Harvest276625402023-04-25 17:19:18599 days ago1682443158IN
ACryptoS : Strategy
0 BNB0.00093
Harvest268318482023-03-27 15:39:07628 days ago1679931547IN
ACryptoS : Strategy
0 BNB0.00171081
Harvest268318482023-03-27 15:39:07628 days ago1679931547IN
ACryptoS : Strategy
0 BNB0.005181761.02499999
Harvest265577432023-03-18 0:56:36638 days ago1679100996IN
ACryptoS : Strategy
0 BNB0.02791886
Harvest263748132023-03-11 14:33:10644 days ago1678545190IN
ACryptoS : Strategy
0 BNB0.029241195
Harvest261008672023-03-02 0:02:25654 days ago1677715345IN
ACryptoS : Strategy
0 BNB0.005012041.000001
Harvest257586122023-02-17 23:31:28666 days ago1676676688IN
ACryptoS : Strategy
0 BNB0.011133915
Harvest257282422023-02-16 21:54:49667 days ago1676584489IN
ACryptoS : Strategy
0 BNB0.018366155
Harvest256919982023-02-15 15:21:09668 days ago1676474469IN
ACryptoS : Strategy
0 BNB0.003575791.1
Harvest255201472023-02-09 14:44:53674 days ago1675953893IN
ACryptoS : Strategy
0 BNB0.010036421.101
Harvest247129512023-01-12 4:52:20702 days ago1673499140IN
ACryptoS : Strategy
0 BNB0.018442865
Harvest245697292023-01-07 4:30:19707 days ago1673065819IN
ACryptoS : Strategy
0 BNB0.005335621
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
StrategyACryptoS0V6_ACS

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-07-12
*/

// File: openzeppelin-contracts-2.5.1/contracts/token/ERC20/IERC20.sol

pragma solidity ^0.5.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

// File: openzeppelin-contracts-2.5.1/contracts/math/SafeMath.sol

pragma solidity ^0.5.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     *
     * _Available since v2.4.0._
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        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;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// File: openzeppelin-contracts-2.5.1/contracts/math/Math.sol

pragma solidity ^0.5.0;

/**
 * @dev Standard math utilities missing in the Solidity language.
 */
library Math {
    /**
     * @dev Returns the largest of two numbers.
     */
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    /**
     * @dev Returns the smallest of two numbers.
     */
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    /**
     * @dev Returns the average of two numbers. The result is rounded towards
     * zero.
     */
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b) / 2 can overflow, so we distribute
        return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
    }
}

// File: openzeppelin-contracts-2.5.1/contracts/utils/Address.sol

pragma solidity ^0.5.5;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following 
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Converts an `address` into `address payable`. Note that this is
     * simply a type cast: the actual underlying value is not changed.
     *
     * _Available since v2.4.0._
     */
    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     *
     * _Available since v2.4.0._
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-call-value
        (bool success, ) = recipient.call.value(amount)("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

// File: openzeppelin-contracts-2.5.1/contracts/token/ERC20/SafeERC20.sol

pragma solidity ^0.5.0;




/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves.

        // A Solidity high level call has three parts:
        //  1. The target address is checked to verify it contains contract code
        //  2. The call itself is made, and success asserted
        //  3. The return value is decoded, which in turn checks the size of the returned data.
        // solhint-disable-next-line max-line-length
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

// File: interfaces/yearn/IController.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.5.17;

interface IController {
    function withdraw(address, uint256) external;

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

    function earn(address, uint256) external;

    function want(address) external view returns (address);

    function rewards() external view returns (address);

    function vaults(address) external view returns (address);

    function strategies(address) external view returns (address);
}

// File: contracts/strategies/StrategyACryptoS0V6_ACS.sol

pragma solidity ^0.5.17;
pragma experimental ABIEncoderV2;







contract StrategyACryptoS0V6_ACS {
    using SafeERC20 for IERC20;
    using Address for address;
    using SafeMath for uint256;
    using Math for uint256;

    address public constant want = address(0x4197C6EF3879a08cD51e5560da5064B773aa1d29); //ACS

    struct BlpToLiquidate {
        address pool;
        address tokenOut; //token to get
    }
    struct PairToLiquidate {
        address pair;
        address tokenA;
        address tokenB;
        address router;
    }
    struct SsToLiquidate {
        address pool;
        address lpToken;
        int128 i; //token to get
    }
    struct TokenToSwap {
        address tokenIn;
        address tokenOut;
        address router;
    }
    struct SsTokenToSwap {
        address tokenIn;
        address pool;
        bool underlying;
        int128 i;
        int128 j;
    }
    struct BlpTokenToSwap {
        address pool;
        address tokenIn;
        address tokenOut;
    }
    address public blpFeesCollector;
    address[] public blpFeesTokensToCollect;
    address[] public ssToWithdraw; //StableSwap pools to withdraw admin fees from
    BlpToLiquidate[] public blpsToLiquidate;
    SsToLiquidate[] public ssToLiquidate;
    PairToLiquidate[] public pairsToLiquidate;
    SsTokenToSwap[] public ssTokensToSwap;
    TokenToSwap[] public tokensToSwap0;
    TokenToSwap[] public tokensToSwap1;
    BlpTokenToSwap[] public blpTokensToSwap0;
    BlpTokenToSwap[] public blpTokensToSwap1;

    address public governance;
    address public controller;
    address public strategist;

    uint256 public withdrawalFee = 1000; //10%
    uint256 public harvesterReward = 30;
    uint256 public constant FEE_DENOMINATOR = 10000;

    constructor(address _controller, address _governance) public {
      strategist = msg.sender;
      governance = _governance;
      controller = _controller;

      ssTokensToSwap.push(SsTokenToSwap({
        tokenIn: address(0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3), //dai
        pool: address(0xb3F0C9ea1F05e312093Fdb031E789A756659B0AC), //ACS4 StableSwap
        underlying: false,
        i: 2,
        j: 0
      }));

      ssTokensToSwap.push(SsTokenToSwap({
        tokenIn: address(0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d), //usdc
        pool: address(0xb3F0C9ea1F05e312093Fdb031E789A756659B0AC), //ACS4 StableSwap
        underlying: false,
        i: 3,
        j: 0
      }));

      ssTokensToSwap.push(SsTokenToSwap({
        tokenIn: address(0x4BD17003473389A42DAF6a0a729f6Fdb328BbBd7), //vai
        pool: address(0x191409D5A4EfFe25b0f4240557BA2192D18a191e), //ACS4VAI StableSwap
        underlying: true,
        i: 0,
        j: 1
      }));

      ssTokensToSwap.push(SsTokenToSwap({
        tokenIn: address(0x23396cF899Ca06c4472205fC903bDB4de249D6fC), //ust
        pool: address(0x99c92765EfC472a9709Ced86310D64C4573c4b77), //ACS4UST StableSwap
        underlying: true,
        i: 0,
        j: 1
      }));



      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x1B96B92314C44b159149f7E0303511fB2Fc4774f),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x610e7a287c27dfFcaC0F0a94f547Cc1B770cF483),
        tokenA: address(0x4B0F1812e5Df2A09796481Ff14017e6005508003), // twt
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xA527a61703D82139F8a06Bc30097cC9CAA2df5A6),
        tokenA: address(0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82), // cake
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x41182c32F854dd97bA0e0B1816022e0aCB2fc0bb),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xcF6BB5389c92Bdda8a3747Ddb454cB7a64626C63), // xvs
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x70D8929d04b60Af4fb9B58713eBcf18765aDE422),
        tokenA: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), // eth
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x7561EEe90e24F3b348E1087A005F78B4c8453524),
        tokenA: address(0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c), // btcb
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x752E713fB70E3FA1Ac08bCF34485F14A986956c4),
        tokenA: address(0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A), // sxp
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xfF17ff314925Dff772b71AbdFF2782bC913B3575),
        tokenA: address(0x4BD17003473389A42DAF6a0a729f6Fdb328BbBd7), // vai
        tokenB: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x680Dd100E4b394Bda26A59dD5c119A391e747d18),
        tokenA: address(0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d), // usdc
        tokenB: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xc15fa3E22c912A276550F3E5FE3b0Deb87B55aCd),
        tokenA: address(0x55d398326f99059fF775485246999027B3197955), // usdt
        tokenB: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x3aB77e40340AB084c3e23Be8e5A6f7afed9D41DC),
        tokenA: address(0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3), // dai
        tokenB: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x91589786D36fEe5B27A5539CfE638a5fc9834665),
        tokenA: address(0x78650B139471520656b9E7aA7A5e9276814a38e9), // btcst
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xBc765Fd113c5bDB2ebc25F711191B56bB8690aec),
        tokenA: address(0x4338665CBB7B2485A8855A139b75D5e34AB0DB94), // ltc
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xbEA35584b9a88107102ABEf0BDeE2c4FaE5D8c31),
        tokenA: address(0x728C5baC3C3e370E372Fc4671f9ef6916b814d8B), // unfi
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xBA51D1AB95756ca4eaB8737eCD450cd8F05384cF),
        tokenA: address(0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47), // ada
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x68Ff2ca47D27db5Ac0b5c46587645835dD51D3C1),
        tokenA: address(0x88f1A5ae2A3BF98AEAF342D26B30a79438c9142e), // yfi
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x99d865Ed50D2C32c1493896810FA386c1Ce81D91),
        tokenA: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), // eth
        tokenB: address(0x250632378E573c6Be1AC2f97Fcdf00515d0Aa91B), // beth
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x0392957571F28037607C14832D16f8B653eDd472),
        tokenA: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), // eth
        tokenB: address(0x52CE071Bd9b1C4B00A0b92D298c512478CaD67e8), // comp
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x17580340F3dAEDAE871a8C21D15911742ec79e0F),
        tokenA: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), // eth
        tokenB: address(0x947950BcC74888a40Ffa2593C5798F11Fc9124C4), // sushi
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xcBe2cF3bd012e9C1ADE2Ee4d41DB3DaC763e78F3),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xD41FDb03Ba84762dD66a0af1a6C8540FF1ba5dfb), // sfp
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x4269e7F43A63CEA1aD7707Be565a94a9189967E9),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xBf5140A22578168FD562DCcF235E5D43A02ce9B1), // uni
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x36b7D2e5C7877392Fb17f9219efaD56F3D794700),
        tokenA: address(0x928e55daB735aa8260AF3cEDadA18B5f70C72f1b), // front
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xbCD62661A6b1DEd703585d3aF7d7649Ef4dcDB5c),
        tokenA: address(0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402), // dot
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xaeBE45E3a03B734c68e5557AE04BFC76917B4686),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD), // link
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xc639187ef82271D8f517de6FEAE4FaF5b517533c),
        tokenA: address(0xAD6cAEb32CD2c308980a548bD0Bc5AA4306c6c18), // band
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x20bCC3b8a0091dDac2d0BC30F68E6CBb97de59Cd),
        tokenA: address(0x55d398326f99059fF775485246999027B3197955), // usdt
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x4576C456AF93a37a096235e5d83f812AC9aeD027),
        tokenA: address(0x71DE20e0C4616E7fcBfDD3f875d568492cBE4739), // swingby
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x4db28767D1527bA545CA5bbdA1C96a94ED6ff242),
        tokenA: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        tokenB: address(0xECa41281c24451168a37211F0bc2b8645AF45092), // tpt
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xC7b4B32A3be2cB6572a1c9959401F832Ce47a6d2),
        tokenA: address(0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE), // xrp
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xfEc200A5E3adDD4a7915a556DDe3F5850e644020),
        tokenA: address(0x658A109C5900BC6d2357c87549B651670E5b0539), // fort
        tokenB: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xe022baa3E5E87658f789c9132B10d7425Fd3a389),
        tokenA: address(0xAC51066d7bEC65Dc4589368da368b212745d63E8), // alice
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xdC6C130299E53ACD2CC2D291fa10552CA2198a6b),
        tokenA: address(0x7A9f28EB62C791422Aa23CeAE1dA9C847cBeC9b0), // watch
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xc746337b5F800a0e19eD4eB3bda03FF1401B8167),
        tokenA: address(0xb86AbCb37C3A4B64f74f59301AFF131a1BEcC787), // zil
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x496a8b716A3A3410B16e71E3c906968CE4488e52),
        tokenA: address(0x9f589e3eabe42ebC94A44727b3f3531C0c877809), // tko
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xb5F6f7dAD23132d40d778085D795BD0FD4B859CD),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xeD28A457A5A76596ac48d87C0f577020F6Ea1c4C), // pbtc
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xf64a269F0A06dA07D23F43c1Deb217101ee6Bee7),
        tokenA: address(0x23396cF899Ca06c4472205fC903bDB4de249D6fC), // ust
        tokenB: address(0x5B6DcF557E2aBE2323c48445E8CC948910d8c2c9), // mir
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x34e821e785A93261B697eBD2797988B3AA78ca33),
        tokenA: address(0x2222227E22102Fe3322098e4CBfE18cFebD57c95), // tlm
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F) // pancakeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xF570d6e751976D0d10aa64ACfa829A5ea4a51727),
        tokenA: address(0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A), // sxp
        tokenB: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        router: address(0x816278BbBCc529f8cdEE8CC72C226fb01def6E6C) // swipeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xB450606703743D557a1c8384Fffe6b941F8f60F4),
        tokenA: address(0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A), // sxp
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x816278BbBCc529f8cdEE8CC72C226fb01def6E6C) // swipeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x70b31Abf9Be826eDc188A15fC35cc6037103a58F),
        tokenA: address(0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A), // sxp
        tokenB: address(0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c), // btcb
        router: address(0x816278BbBCc529f8cdEE8CC72C226fb01def6E6C) // swipeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xC61FB584DAf69Bedf912768AEdc0658B11A1A75C),
        tokenA: address(0x4BD17003473389A42DAF6a0a729f6Fdb328BbBd7), // vai
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x816278BbBCc529f8cdEE8CC72C226fb01def6E6C) // swipeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xef82bD8287dA9700b004657170746968CF5cA04a),
        tokenA: address(0x4197C6EF3879a08cD51e5560da5064B773aa1d29), // acs
        tokenB: address(0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A), // sxp
        router: address(0x816278BbBCc529f8cdEE8CC72C226fb01def6E6C) // swipeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x16b9a82891338f9bA80E2D6970FddA79D1eb0daE),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x55d398326f99059fF775485246999027B3197955), // usdt
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x74E4716E431f45807DCF19f284c7aA99F18a4fbc),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), // eth
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x61EB789d75A95CAa3fF50ed7E47b96c132fEc082),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c), // btcb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x0362ba706DFE8ED12Ec1470aB171d8Dcb1C72B8D),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xeD28A457A5A76596ac48d87C0f577020F6Ea1c4C), // pbtc
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x71b01eBdDD797c8E9E0b003ea2f4FD207fBF46cC),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x4338665CBB7B2485A8855A139b75D5e34AB0DB94), // ltc
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xCE383277847f8217392eeA98C5a8B4a7D27811b0),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x88f1A5ae2A3BF98AEAF342D26B30a79438c9142e), // yfi
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x28415ff2C35b65B9E5c7de82126b4015ab9d031F),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47), // ada
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x014608E87AF97a054C9a49f81E1473076D51d9a3),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xBf5140A22578168FD562DCcF235E5D43A02ce9B1), // uni
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xDd5bAd8f8b360d76d12FdA230F8BAF42fe0022CF),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402), // dot
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x03F18135c44C64ebFdCBad8297fe5bDafdBbdd86),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE), // xrp
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x824eb9faDFb377394430d2744fa7C42916DE3eCe),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD), // link
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x168B273278F3A8d302De5E879aA30690B7E6c28f),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xAD6cAEb32CD2c308980a548bD0Bc5AA4306c6c18), // band
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x6A97867a4b7Eb7646ffB1F359ad582e9903aa1C2),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xb86AbCb37C3A4B64f74f59301AFF131a1BEcC787), // zil
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x3DcB1787a95D2ea0Eb7d00887704EeBF0D79bb13),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x4B0F1812e5Df2A09796481Ff14017e6005508003), // twt
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x44EA47F2765fd5D26b7eF0222736AD6FD6f61950),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x728C5baC3C3e370E372Fc4671f9ef6916b814d8B), // unfi
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xB2678C414ebC63c9CC6d1a0fC45f43E249B50fdE),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x78650B139471520656b9E7aA7A5e9276814a38e9), // btcst
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x942b294e59a8c47a0F7F20DF105B082710F7C305),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xD41FDb03Ba84762dD66a0af1a6C8540FF1ba5dfb), // sfp
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xFFd4B200d3C77A0B691B5562D804b3bd54294e6e),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x9f589e3eabe42ebC94A44727b3f3531C0c877809), // tko
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xE6b421a4408c82381b226Ab5B6F8C4b639044359),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x2222227E22102Fe3322098e4CBfE18cFebD57c95), // tlm
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xcAD7019D6d84a3294b0494aEF02e73BD0f2572Eb),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xAC51066d7bEC65Dc4589368da368b212745d63E8), // alice
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xC6b668548aA4A56792e8002A920d3159728121D5),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x928e55daB735aa8260AF3cEDadA18B5f70C72f1b), // front
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x13321AcfF4A27f3d2bcA64b8bEaC6e5FdAAAf12C),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x7A9f28EB62C791422Aa23CeAE1dA9C847cBeC9b0), // watch
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x4Fd6D315bEf387fAD2322fbc64368fC443F0886D),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x71DE20e0C4616E7fcBfDD3f875d568492cBE4739), // swingby
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x7EFaEf62fDdCCa950418312c6C91Aef321375A00),
        tokenA: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        tokenB: address(0x55d398326f99059fF775485246999027B3197955), // usdt
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xE60B4e87645093A42fa9dcC5d0C8Df6E67f1f9d2),
        tokenA: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        tokenB: address(0x658A109C5900BC6d2357c87549B651670E5b0539), // fort
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x6D0c831254221ba121fB53fb44Df289A6558867d),
        tokenA: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        tokenB: address(0xECa41281c24451168a37211F0bc2b8645AF45092), // tpt
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x89666d026696660e93Bf6edf57B71A68615768B7),
        tokenA: address(0x23396cF899Ca06c4472205fC903bDB4de249D6fC), // ust
        tokenB: address(0x5B6DcF557E2aBE2323c48445E8CC948910d8c2c9), // mir
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x37908620dEf1491Dd591b5a2d16022A33cDDA415),
        tokenA: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), // eth
        tokenB: address(0x52CE071Bd9b1C4B00A0b92D298c512478CaD67e8), // comp
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x16aFc4F2Ad82986bbE2a4525601F8199AB9c832D),
        tokenA: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), // eth
        tokenB: address(0x947950BcC74888a40Ffa2593C5798F11Fc9124C4), // sushi
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xACF47CBEaab5c8A6Ee99263cfE43995f89fB3206),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xa1faa113cbE53436Df28FF0aEe54275c13B40975), // alpha
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xd63b5CecB1f40d626307B92706Df357709D05827),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xF21768cCBC73Ea5B6fd3C687208a7c2def2d966e), // reef
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x460b4193Ec4C1a17372Aa5FDcd44c520ba658646),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xA8c2B8eec3d368C0253ad3dae65a5F2BBB89c929), // ctk
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xF45cd219aEF8618A92BAa7aD848364a158a24F33),
        tokenA: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        tokenB: address(0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c), // btcb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x0eD7e52944161450477ee417DE9Cd3a859b14fD0),
        tokenA: address(0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82), // cake
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x7EB5D86FD78f3852a3e0e064f2842d45a3dB6EA2),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xcF6BB5389c92Bdda8a3747Ddb454cB7a64626C63), // xvs
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xD8E2F8b6Db204c405543953Ef6359912FE3A88d6),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A), // sxp
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x58F876857a02D6762E0101bb5C46A8c1ED44Dc16),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x478d6c9FFa3609Faa1bfc4afc2770447CA327705),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x4197C6EF3879a08cD51e5560da5064B773aa1d29), // acs
        router: address(0x7DAe51BD3E3376B8c7c4900E9107f12Be3AF1bA8) // mdexRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xAf9Aa53146C5752BF6068A84B970E9fBB22a87bc),
        tokenA: address(0x9C65AB58d8d978DB963e63f2bfB7121627e3a739), // mdx
        tokenB: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x7DAe51BD3E3376B8c7c4900E9107f12Be3AF1bA8) // mdexRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xa12128Bbb1C24Fb851d8BA6EC6836f00916712c2),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c), // btcb
        router: address(0x816278BbBCc529f8cdEE8CC72C226fb01def6E6C) // swipeSwapRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x804678fa97d91B974ec2af3c843270886528a9E6),
        tokenA: address(0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82), // cake
        tokenB: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xEf5212aDa83EC2cc105C409DF10b8806D20E3b35),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x5F84ce30DC3cF7909101C69086c50De191895883), // vrt
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xBA68d6beE4f433630DeE22C248A236c8f6EAe246),
        tokenA: address(0x9C65AB58d8d978DB963e63f2bfB7121627e3a739), // mdx
        tokenB: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), // eth
        router: address(0x7DAe51BD3E3376B8c7c4900E9107f12Be3AF1bA8) // mdexRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x1c0276642f2A7cbcf6624d511F34811cDC65212C),
        tokenA: address(0x9C65AB58d8d978DB963e63f2bfB7121627e3a739), // mdx
        tokenB: address(0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c), // btcb
        router: address(0x7DAe51BD3E3376B8c7c4900E9107f12Be3AF1bA8) // mdexRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x223740a259E461aBeE12D84A9FFF5Da69Ff071dD),
        tokenA: address(0x9C65AB58d8d978DB963e63f2bfB7121627e3a739), // mdx
        tokenB: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        router: address(0x7DAe51BD3E3376B8c7c4900E9107f12Be3AF1bA8) // mdexRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x2E28b9B74D6d99D4697e913b82B41ef1CAC51c6C),
        tokenA: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        tokenB: address(0x14016E85a25aeb13065688cAFB43044C2ef86784), // tusd
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xEa26B78255Df2bBC31C1eBf60010D78670185bD0),
        tokenA: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), // eth
        tokenB: address(0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d), // usdc
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x82E8F9e7624fA038DfF4a39960F5197A43fa76aa),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), // eth
        router: address(0x7DAe51BD3E3376B8c7c4900E9107f12Be3AF1bA8) // mdexRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x969f2556F786a576F32AeF6c1D6618f0221Ec70e),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c), // btcb
        router: address(0x7DAe51BD3E3376B8c7c4900E9107f12Be3AF1bA8) // mdexRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xda28Eb7ABa389C1Ea226A420bCE04Cb565Aafb85),
        tokenA: address(0x55d398326f99059fF775485246999027B3197955), // usdt
        tokenB: address(0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c), // btcb
        router: address(0x7DAe51BD3E3376B8c7c4900E9107f12Be3AF1bA8) // mdexRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x0FB881c078434b1C0E4d0B64d8c64d12078b7Ce2),
        tokenA: address(0x55d398326f99059fF775485246999027B3197955), // usdt
        tokenB: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), // eth
        router: address(0x7DAe51BD3E3376B8c7c4900E9107f12Be3AF1bA8) // mdexRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x577d005912C49B1679B4c21E334FdB650E92C077),
        tokenA: address(0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c), // btcb
        tokenB: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), // eth
        router: address(0x7DAe51BD3E3376B8c7c4900E9107f12Be3AF1bA8) // mdexRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0xA39Af17CE4a8eb807E076805Da1e2B8EA7D0755b),
        tokenA: address(0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82), // cake
        tokenB: address(0x55d398326f99059fF775485246999027B3197955), // usdt
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x76AE2c33bcce5A45128eF2060C6280a452568396),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x728C5baC3C3e370E372Fc4671f9ef6916b814d8B), // unfi
        router: address(0xBE930734eDAfc41676A76d2240f206Ed36dafbA2) // unifiRouter
      }));

      pairsToLiquidate.push(PairToLiquidate({
        pair: address(0x2bCc1FeF8F31A1E4cf8C85f96F00C543b98dA74e),
        tokenA: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        tokenB: address(0x4197C6EF3879a08cD51e5560da5064B773aa1d29), // acs
        router: address(0xBE930734eDAfc41676A76d2240f206Ed36dafbA2) // unifiRouter
      }));





      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x88f1A5ae2A3BF98AEAF342D26B30a79438c9142e), // yfi
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x55d398326f99059fF775485246999027B3197955), // usdt
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x4B0F1812e5Df2A09796481Ff14017e6005508003), // twt
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x78650B139471520656b9E7aA7A5e9276814a38e9), // btcst
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x4338665CBB7B2485A8855A139b75D5e34AB0DB94), // ltc
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47), // ada
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0xD41FDb03Ba84762dD66a0af1a6C8540FF1ba5dfb), // sfp
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0xBf5140A22578168FD562DCcF235E5D43A02ce9B1), // uni
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD), // link
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0xeD28A457A5A76596ac48d87C0f577020F6Ea1c4C), // pbtc
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x928e55daB735aa8260AF3cEDadA18B5f70C72f1b), // front
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402), // dot
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0xAD6cAEb32CD2c308980a548bD0Bc5AA4306c6c18), // band
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x71DE20e0C4616E7fcBfDD3f875d568492cBE4739), // swingby
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE), // xrp
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0xAC51066d7bEC65Dc4589368da368b212745d63E8), // alice
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x7A9f28EB62C791422Aa23CeAE1dA9C847cBeC9b0), // watch
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0xb86AbCb37C3A4B64f74f59301AFF131a1BEcC787), // zil
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x9f589e3eabe42ebC94A44727b3f3531C0c877809), // tko
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x2222227E22102Fe3322098e4CBfE18cFebD57c95), // tlm
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x658A109C5900BC6d2357c87549B651670E5b0539), // for
        tokenOut: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0xECa41281c24451168a37211F0bc2b8645AF45092), // tpt
        tokenOut: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x52CE071Bd9b1C4B00A0b92D298c512478CaD67e8), // comp
        tokenOut: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), // eth
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x947950BcC74888a40Ffa2593C5798F11Fc9124C4), // sushi
        tokenOut: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), // eth
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x5B6DcF557E2aBE2323c48445E8CC948910d8c2c9), // mir
        tokenOut: address(0x23396cF899Ca06c4472205fC903bDB4de249D6fC), // ust
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0xa1faa113cbE53436Df28FF0aEe54275c13B40975), // alpha
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0xF21768cCBC73Ea5B6fd3C687208a7c2def2d966e), // reef
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0xA8c2B8eec3d368C0253ad3dae65a5F2BBB89c929), // ctk
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x8fF795a6F4D97E7887C79beA79aba5cc76444aDf), // bch
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x7DAe51BD3E3376B8c7c4900E9107f12Be3AF1bA8) // mdexRouter
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x14016E85a25aeb13065688cAFB43044C2ef86784), // tusd
        tokenOut: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), // busd
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x0D8Ce2A99Bb6e3B7Db580eD848240e4a0F9aE153), // fil
        tokenOut: address(0x55d398326f99059fF775485246999027B3197955), // usdt
        router: address(0x7DAe51BD3E3376B8c7c4900E9107f12Be3AF1bA8) // mdexRouter
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0xbA2aE424d960c26247Dd6c32edC70B295c744C43), // doge
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0x10ED43C718714eb63d5aA57B78B54704E256024E) // pancakeSwapV2Router
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0xb4E8D978bFf48c2D8FA241C0F323F71C1457CA81), // up
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0xBE930734eDAfc41676A76d2240f206Ed36dafbA2) // unifiRouter
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x728C5baC3C3e370E372Fc4671f9ef6916b814d8B), // unfi
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), // wbnb
        router: address(0xBE930734eDAfc41676A76d2240f206Ed36dafbA2) // unifiRouter
      }));

      tokensToSwap0.push(TokenToSwap({
        tokenIn: address(0x250632378E573c6Be1AC2f97Fcdf00515d0Aa91B), // beth
        tokenOut: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), // eth
        router: address(0xCDe540d7eAFE93aC5fE6233Bee57E1270D3E330F) // bakerySwapRouter
      }));


      blpTokensToSwap0.push(BlpTokenToSwap({
        pool: address(0xDfd7684dbd0C31a302aBaC3a4b62caAdD1235E7F), //acsiXvsSxpVrtVaiBnb
        tokenIn: address(0xcF6BB5389c92Bdda8a3747Ddb454cB7a64626C63), // xvs
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c) // wbnb
      }));
      blpTokensToSwap0.push(BlpTokenToSwap({
        pool: address(0xDfd7684dbd0C31a302aBaC3a4b62caAdD1235E7F), //acsiXvsSxpVrtVaiBnb
        tokenIn: address(0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A), // sxp
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c) // wbnb
      }));
      blpTokensToSwap0.push(BlpTokenToSwap({
        pool: address(0xDfd7684dbd0C31a302aBaC3a4b62caAdD1235E7F), //acsiXvsSxpVrtVaiBnb
        tokenIn: address(0x5F84ce30DC3cF7909101C69086c50De191895883), // vrt
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c) // wbnb
      }));

      blpTokensToSwap0.push(BlpTokenToSwap({
        pool: address(0x56C4F0984Ce2c82e340E697210984Fc9b1532eE6), //acsiCakeMdxHmdxBakeAcsiBnb
        tokenIn: address(0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82), // cake
        tokenOut: address(0x5b17b4d5e4009B5C43e3e3d63A5229F794cBA389) //acsi
      }));
      blpTokensToSwap0.push(BlpTokenToSwap({
        pool: address(0x56C4F0984Ce2c82e340E697210984Fc9b1532eE6), //acsiCakeMdxHmdxBakeAcsiBnb
        tokenIn: address(0x9C65AB58d8d978DB963e63f2bfB7121627e3a739), // mdx
        tokenOut: address(0x5b17b4d5e4009B5C43e3e3d63A5229F794cBA389) //acsi
      }));

      blpTokensToSwap0.push(BlpTokenToSwap({
        pool: address(0x7ea9F435c7CcB2eEF266F5366fe13ea6C9F3e245), //acs3
        tokenIn: address(0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c), //btcb
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c) //wbnb
      }));
      blpTokensToSwap0.push(BlpTokenToSwap({
        pool: address(0x7ea9F435c7CcB2eEF266F5366fe13ea6C9F3e245), //acs3
        tokenIn: address(0x2170Ed0880ac9A755fd29B2688956BD959F933F8), //eth
        tokenOut: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c) //wbnb
      }));


      blpTokensToSwap1.push(BlpTokenToSwap({
        pool: address(0x894eD9026De37AfD9CCe1E6C0BE7d6b510e3FfE5), //a2b2
        tokenIn: address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), //wbnb
        tokenOut: address(0x4197C6EF3879a08cD51e5560da5064B773aa1d29) //acs
      }));
      blpTokensToSwap1.push(BlpTokenToSwap({
        pool: address(0x894eD9026De37AfD9CCe1E6C0BE7d6b510e3FfE5), //a2b2
        tokenIn: address(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56), //busd
        tokenOut: address(0x4197C6EF3879a08cD51e5560da5064B773aa1d29) //acs
      }));
      blpTokensToSwap1.push(BlpTokenToSwap({
        pool: address(0x894eD9026De37AfD9CCe1E6C0BE7d6b510e3FfE5), //a2b2
        tokenIn: address(0x5b17b4d5e4009B5C43e3e3d63A5229F794cBA389), //acsi
        tokenOut: address(0x4197C6EF3879a08cD51e5560da5064B773aa1d29) //acs
      }));

    }

    function getName() external pure returns (string memory) {
        return "StrategyACryptoS0V6_ACS";
    }

    function deposit() public {
    }

    // Controller only function for creating additional rewards from dust
    function withdraw(IERC20 _asset) external returns (uint256 balance) {
        require(msg.sender == controller, "!controller");
        require(want != address(_asset), "want");
        balance = _asset.balanceOf(address(this));
        _asset.safeTransfer(controller, balance);
    }

    // Withdraw partial funds, normally used with a vault withdrawal
    function withdraw(uint256 _amount) external {
      require(msg.sender == controller, "!controller");
      uint256 _balance = IERC20(want).balanceOf(address(this));
      if (_balance < _amount) {
          _amount = _balance;
      }

      uint256 _fee = _amount.mul(withdrawalFee).div(FEE_DENOMINATOR);

      address _vault = IController(controller).vaults(address(want));
      require(_vault != address(0), "!vault"); // additional protection so we don't burn the funds
      IERC20(want).safeTransfer(_vault, _amount.sub(_fee));
    }

    // Withdraw all funds, normally used when migrating strategies
    function withdrawAll() external returns (uint256 balance) {
      require(msg.sender == controller || msg.sender == strategist || msg.sender == governance, "!authorized");

      balance = IERC20(want).balanceOf(address(this));

      address _vault = IController(controller).vaults(address(want));
      require(_vault != address(0), "!vault"); // additional protection so we don't burn the funds
      IERC20(want).safeTransfer(_vault, balance);
    }

    function balanceOfWant() public view returns (uint256) {
        return IERC20(want).balanceOf(address(this));
    }

    function harvest() public returns (uint harvesterRewarded) {
      require(msg.sender == tx.origin, "not eoa");

      uint _before = IERC20(want).balanceOf(address(this));
      _convertAllToWant();
      uint _harvested = IERC20(want).balanceOf(address(this)).sub(_before);

      if (_harvested > 0) {
        uint256 _harvesterReward = _harvested.mul(harvesterReward).div(FEE_DENOMINATOR);
        IERC20(want).safeTransfer(msg.sender, _harvesterReward);
        return _harvesterReward;
      }
    }


    function _convertAllToWant() internal {
      if(blpFeesTokensToCollect.length > 0) _collectBlpFees();

      for (uint i=ssToWithdraw.length; i>0; i--) {
        IStableSwap(ssToWithdraw[i-1]).withdraw_admin_fees();
      }

      for (uint i=blpsToLiquidate.length; i>0; i--) {
        _liquidateBlp(blpsToLiquidate[i-1]);
      }

      for (uint i=ssToLiquidate.length; i>0; i--) {
        _liquidateSs(ssToLiquidate[i-1]);
      }

      for (uint i=pairsToLiquidate.length; i>0; i--) {
        _liquidatePair(pairsToLiquidate[i-1].pair, pairsToLiquidate[i-1].tokenA, pairsToLiquidate[i-1].tokenB, pairsToLiquidate[i-1].router);
      }

      for (uint i=ssTokensToSwap.length; i>0; i--) {
        _swapSs(ssTokensToSwap[i-1]);
      }

      for (uint i=tokensToSwap0.length; i>0; i--) {
        _convertToken(tokensToSwap0[i-1].tokenIn, tokensToSwap0[i-1].tokenOut, tokensToSwap0[i-1].router);
      }

      for (uint i=blpTokensToSwap0.length; i>0; i--) {
        _swapBlpToken(blpTokensToSwap0[i-1]);
      }

      for (uint i=tokensToSwap1.length; i>0; i--) {
        _convertToken(tokensToSwap1[i-1].tokenIn, tokensToSwap1[i-1].tokenOut, tokensToSwap1[i-1].router);
      }

      for (uint i=blpTokensToSwap1.length; i>0; i--) {
        _swapBlpToken(blpTokensToSwap1[i-1]);
      }

    }

    function _swapBlpToken(BlpTokenToSwap memory _blpTokenToSwap) internal {
      uint256 _amount = IERC20(_blpTokenToSwap.tokenIn).balanceOf(address(this));
      if(_amount > 0) {
        address _vault = IBlpPool(_blpTokenToSwap.pool).getVault();
        IERC20(_blpTokenToSwap.tokenIn).safeApprove(_vault, 0);
        IERC20(_blpTokenToSwap.tokenIn).safeApprove(_vault, _amount);
        IBlpVault(_vault).swap(
          IBlpVault.SingleSwap({
            poolId: IBlpPool(_blpTokenToSwap.pool).getPoolId(),
            kind: IBlpVault.SwapKind.GIVEN_IN,
            assetIn: _blpTokenToSwap.tokenIn,
            assetOut: _blpTokenToSwap.tokenOut,
            amount: _amount,
            userData: ''
          }),
          IBlpVault.FundManagement({
            sender: address(this),
            fromInternalBalance: false,
            recipient: address(this),
            toInternalBalance: false
          }),
          0,                //limit
          now.add(1800)     // deadline
        );
      }      
    }

    function _liquidateBlp(BlpToLiquidate memory _blpToLiquidate) internal {
      uint256 _amount = IERC20(_blpToLiquidate.pool).balanceOf(address(this));
      if(_amount > 0) {
        address _vault = IBlpPool(_blpToLiquidate.pool).getVault();
        IERC20(_blpToLiquidate.pool).safeApprove(_vault, 0);
        IERC20(_blpToLiquidate.pool).safeApprove(_vault, _amount);

        bytes32 poolId = IBlpPool(_blpToLiquidate.pool).getPoolId();
        (address[] memory assets,,) = IBlpVault(_vault).getPoolTokens(poolId);

        uint256[] memory minAmountsOut = new uint256[](assets.length);

        uint256 tokenIndex;
        for(uint i = 0; i < assets.length; i++) {
          if(assets[i] == _blpToLiquidate.tokenOut) {
            tokenIndex = i;
            break;
          }
        }

        IBlpVault(_vault).exitPool(
          poolId,
          address(this), //sender
          address(this), //recipient
          IBlpVault.ExitPoolRequest({
            assets: assets,  
            minAmountsOut: minAmountsOut,
            userData: abi.encode(IBlpPool.ExitKind.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT, _amount, tokenIndex),
            toInternalBalance: false
          })
        );
      }
    }

    function _collectBlpFees() internal {
      IBlpFeesCollector(blpFeesCollector).withdrawCollectedFees(
        blpFeesTokensToCollect,
        IBlpFeesCollector(blpFeesCollector).getCollectedFeeAmounts(blpFeesTokensToCollect),
        address(this)
      );
    }

    function _liquidateSs(SsToLiquidate memory _ssToLiquidate) internal {
      uint256 _amount = IERC20(_ssToLiquidate.lpToken).balanceOf(address(this));
      if(_amount > 0) {
        IERC20(_ssToLiquidate.lpToken).safeApprove(_ssToLiquidate.pool, 0);
        IERC20(_ssToLiquidate.lpToken).safeApprove(_ssToLiquidate.pool, _amount);
        IStableSwap(_ssToLiquidate.pool).remove_liquidity_one_coin(_amount, _ssToLiquidate.i, 0);
      }
    }

    function _swapSs(SsTokenToSwap memory _ssTokenToSwap) internal {
      uint256 _amount = IERC20(_ssTokenToSwap.tokenIn).balanceOf(address(this));
      if(_amount > 0) {
        IERC20(_ssTokenToSwap.tokenIn).safeApprove(_ssTokenToSwap.pool, 0);
        IERC20(_ssTokenToSwap.tokenIn).safeApprove(_ssTokenToSwap.pool, _amount);
        if(_ssTokenToSwap.underlying) {
          IStableSwap(_ssTokenToSwap.pool).exchange_underlying(_ssTokenToSwap.i, _ssTokenToSwap.j, _amount, 0);            
        } else {
          IStableSwap(_ssTokenToSwap.pool).exchange(_ssTokenToSwap.i, _ssTokenToSwap.j, _amount, 0);            
        }
      }      
    }

    function _liquidatePair(address _pair, address _tokenA, address _tokenB, address _router) internal {
      uint256 _amount = IERC20(_pair).balanceOf(address(this));
      if(_amount > 0 ) {
        IERC20(_pair).safeApprove(_router, 0);
        IERC20(_pair).safeApprove(_router, _amount);

        IUniswapRouter(_router).removeLiquidity(
            _tokenA, // address tokenA,
            _tokenB, // address tokenB,
            _amount, // uint liquidity,
            0, // uint amountAMin,
            0, // uint amountBMin,
            address(this), // address to,
            now.add(1800) // uint deadline
          );
      }
    }

    function _convertToken(address _tokenIn, address _tokenOut, address _router) internal {
      uint256 _amount = IERC20(_tokenIn).balanceOf(address(this));
      if(_amount > 0 ) {
        IERC20(_tokenIn).safeApprove(_router, 0);
        IERC20(_tokenIn).safeApprove(_router, _amount);

        address[] memory path = new address[](2);
        path[0] = _tokenIn;
        path[1] = _tokenOut;

        IUniswapRouter(_router).swapExactTokensForTokens(_amount, uint256(0), path, address(this), now.add(1800));
      }
    }

    function balanceOf() public view returns (uint256) {
      return balanceOfWant();
    }

    function setGovernance(address _governance) external {
        require(msg.sender == governance, "!governance");
        governance = _governance;
    }

    function setController(address _controller) external {
        require(msg.sender == governance, "!governance");
        controller = _controller;
    }

    function setStrategist(address _strategist) external {
        require(msg.sender == governance, "!governance");
        strategist = _strategist;
    }

    function setBlpFeesCollector(address _blpFeesCollector) external {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      blpFeesCollector = _blpFeesCollector;
    }

    function addBlpFeesTokensToCollect(address[] calldata _blpFeesTokensToCollect) external {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      for (uint i=0; i < _blpFeesTokensToCollect.length; i++) {
        blpFeesTokensToCollect.push(_blpFeesTokensToCollect[i]);
      }
    }

    function addSsToWithdraw(address[] calldata _ssToWithdraw) external {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      for (uint i=0; i < _ssToWithdraw.length; i++) {
        ssToWithdraw.push(_ssToWithdraw[i]);
      }
    }

    function addBlpsToLiquidate(BlpToLiquidate[] memory _blpsToLiquidate) public {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      for (uint i=0; i < _blpsToLiquidate.length; i++) {
        blpsToLiquidate.push(_blpsToLiquidate[i]);
      }
    }

    function addSsToLiquidate(SsToLiquidate[] memory _ssToLiquidate) public {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      for (uint i=0; i < _ssToLiquidate.length; i++) {
        ssToLiquidate.push(_ssToLiquidate[i]);
      }
    }

    function addPairsToLiquidate(PairToLiquidate[] memory _pairsToLiquidate) public {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      for (uint i=0; i < _pairsToLiquidate.length; i++) {
        pairsToLiquidate.push(_pairsToLiquidate[i]);
      }
    }

    function addSsTokensToSwap(SsTokenToSwap[] memory _ssTokensToSwap) public {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      for (uint i=0; i < _ssTokensToSwap.length; i++) {
        ssTokensToSwap.push(_ssTokensToSwap[i]);
      }
    }

    function addTokensToSwap0(TokenToSwap[] memory _tokensToSwap) public {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      for (uint i=0; i < _tokensToSwap.length; i++) {
        tokensToSwap0.push(_tokensToSwap[i]);
      }
    }

    function addTokensToSwap1(TokenToSwap[] memory _tokensToSwap) public {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      for (uint i=0; i < _tokensToSwap.length; i++) {
        tokensToSwap1.push(_tokensToSwap[i]);
      }
    }

    function addBlpTokensToSwap0(BlpTokenToSwap[] memory _blpTokensToSwap) public {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      for (uint i=0; i < _blpTokensToSwap.length; i++) {
        blpTokensToSwap0.push(_blpTokensToSwap[i]);
      }
    }

    function addBlpTokensToSwap1(BlpTokenToSwap[] memory _blpTokensToSwap) public {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      for (uint i=0; i < _blpTokensToSwap.length; i++) {
        blpTokensToSwap1.push(_blpTokensToSwap[i]);
      }
    }

    function deleteBlpFeesTokensToCollect() external {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      delete blpFeesTokensToCollect;
    }

    function deleteSsToWithdraw() external {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      delete ssToWithdraw;
    }

    function deleteBlpsToLiquidate() external {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      delete blpsToLiquidate;
    }

    function deleteSsToLiquidate() external {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      delete ssToLiquidate;
    }

    function deletePairsToLiquidate() external {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      delete pairsToLiquidate;
    }

    function deleteSsTokensToSwap() external {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      delete ssTokensToSwap;
    }

    function deleteTokensToSwap0() external {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      delete tokensToSwap0;
    }

    function deleteTokensToSwap1() external {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      delete tokensToSwap1;
    }

    function deleteBlpTokensToSwap0() external {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      delete blpTokensToSwap0;
    }

    function deleteBlpTokensToSwap1() external {
      require(msg.sender == strategist || msg.sender == governance, "!authorized");
      delete blpTokensToSwap1;
    }

    function setWithdrawalFee(uint256 _withdrawalFee) external {
        require(msg.sender == governance, "!governance");
        withdrawalFee = _withdrawalFee;
    }

    function setHarvesterReward(uint256 _harvesterReward) external {
        require(msg.sender == strategist || msg.sender == governance, "!authorized");
        harvesterReward = _harvesterReward;
    }

    //In case anything goes wrong.
    //This does not increase user risk. Governance already controls funds via strategy upgrade, and is behind timelock and/or multisig.
    function executeTransaction(address target, uint value, string memory signature, bytes memory data) public payable returns (bytes memory) {
        require(msg.sender == governance, "!governance");

        bytes memory callData;

        if (bytes(signature).length == 0) {
            callData = data;
        } else {
            callData = abi.encodePacked(bytes4(keccak256(bytes(signature))), data);
        }

        // solium-disable-next-line security/no-call-value
        (bool success, bytes memory returnData) = target.call.value(value)(callData);
        require(success, "Timelock::executeTransaction: Transaction execution reverted.");

        return returnData;
    }
}



interface IUniswapRouter {
  function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
  function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
  function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IStableSwap {
  function withdraw_admin_fees() external;
  function remove_liquidity_one_coin(uint256 _token_amount, int128 i, uint256 _min_amount) external;
  function exchange(int128 i, int128 j, uint256 dx, uint256 min_dy) external returns (uint256 dy);
  function exchange_underlying(int128 i, int128 j, uint256 dx, uint256 min_dy) external returns (uint256 dy);
}

interface IBlpVault {
  function getPoolTokens(bytes32 poolId)
      external
      view
      returns (
          address[] memory tokens,
          uint256[] memory balances,
          uint256 lastChangeBlock
      );

  function exitPool(
      bytes32 poolId,
      address sender,
      address recipient,
      ExitPoolRequest calldata request
  ) external;

  struct ExitPoolRequest {
      address[] assets;
      uint256[] minAmountsOut;
      bytes userData;
      bool toInternalBalance;
  }

  function swap(
      SingleSwap calldata singleSwap,
      FundManagement calldata funds,
      uint256 limit,
      uint256 deadline
  ) external payable returns (uint256);

  struct SingleSwap {
      bytes32 poolId;
      SwapKind kind;
      address assetIn;
      address assetOut;
      uint256 amount;
      bytes userData;
  }

  enum SwapKind { GIVEN_IN, GIVEN_OUT }

  struct FundManagement {
      address sender;
      bool fromInternalBalance;
      address recipient;
      bool toInternalBalance;
  }
}

interface IBlpPool {
  enum ExitKind { EXACT_BPT_IN_FOR_ONE_TOKEN_OUT, EXACT_BPT_IN_FOR_TOKENS_OUT, BPT_IN_FOR_EXACT_TOKENS_OUT }

  function getVault() external view returns (address);
  function getPoolId() external view returns (bytes32);
}

interface IBlpFeesCollector {
  function withdrawCollectedFees(
      address[] calldata tokens,
      uint256[] calldata amounts,
      address recipient
  ) external;

  function getCollectedFeeAmounts(address[] calldata tokens) external view returns (uint256[] memory feeAmounts);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_controller","type":"address"},{"internalType":"address","name":"_governance","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[],"name":"FEE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"_blpFeesTokensToCollect","type":"address[]"}],"name":"addBlpFeesTokensToCollect","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"internalType":"struct StrategyACryptoS0V6_ACS.BlpTokenToSwap[]","name":"_blpTokensToSwap","type":"tuple[]"}],"name":"addBlpTokensToSwap0","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"internalType":"struct StrategyACryptoS0V6_ACS.BlpTokenToSwap[]","name":"_blpTokensToSwap","type":"tuple[]"}],"name":"addBlpTokensToSwap1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"internalType":"struct StrategyACryptoS0V6_ACS.BlpToLiquidate[]","name":"_blpsToLiquidate","type":"tuple[]"}],"name":"addBlpsToLiquidate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"components":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address","name":"router","type":"address"}],"internalType":"struct StrategyACryptoS0V6_ACS.PairToLiquidate[]","name":"_pairsToLiquidate","type":"tuple[]"}],"name":"addPairsToLiquidate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"lpToken","type":"address"},{"internalType":"int128","name":"i","type":"int128"}],"internalType":"struct StrategyACryptoS0V6_ACS.SsToLiquidate[]","name":"_ssToLiquidate","type":"tuple[]"}],"name":"addSsToLiquidate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"_ssToWithdraw","type":"address[]"}],"name":"addSsToWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"underlying","type":"bool"},{"internalType":"int128","name":"i","type":"int128"},{"internalType":"int128","name":"j","type":"int128"}],"internalType":"struct StrategyACryptoS0V6_ACS.SsTokenToSwap[]","name":"_ssTokensToSwap","type":"tuple[]"}],"name":"addSsTokensToSwap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"address","name":"router","type":"address"}],"internalType":"struct StrategyACryptoS0V6_ACS.TokenToSwap[]","name":"_tokensToSwap","type":"tuple[]"}],"name":"addTokensToSwap0","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"address","name":"router","type":"address"}],"internalType":"struct StrategyACryptoS0V6_ACS.TokenToSwap[]","name":"_tokensToSwap","type":"tuple[]"}],"name":"addTokensToSwap1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceOfWant","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blpFeesCollector","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"blpFeesTokensToCollect","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"blpTokensToSwap0","outputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"blpTokensToSwap1","outputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"blpsToLiquidate","outputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deleteBlpFeesTokensToCollect","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deleteBlpTokensToSwap0","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deleteBlpTokensToSwap1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deleteBlpsToLiquidate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deletePairsToLiquidate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deleteSsToLiquidate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deleteSsToWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deleteSsTokensToSwap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deleteTokensToSwap0","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deleteTokensToSwap1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"executeTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getName","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"harvest","outputs":[{"internalType":"uint256","name":"harvesterRewarded","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"harvesterReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pairsToLiquidate","outputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address","name":"router","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_blpFeesCollector","type":"address"}],"name":"setBlpFeesCollector","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"setController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_harvesterReward","type":"uint256"}],"name":"setHarvesterReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_strategist","type":"address"}],"name":"setStrategist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_withdrawalFee","type":"uint256"}],"name":"setWithdrawalFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ssToLiquidate","outputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"lpToken","type":"address"},{"internalType":"int128","name":"i","type":"int128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ssToWithdraw","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ssTokensToSwap","outputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"underlying","type":"bool"},{"internalType":"int128","name":"i","type":"int128"},{"internalType":"int128","name":"j","type":"int128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"strategist","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokensToSwap0","outputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"address","name":"router","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokensToSwap1","outputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"address","name":"router","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"want","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_asset","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAll","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"withdrawalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]

60806040526103e8600e55601e600f553480156200001c57600080fd5b5060405162011495380380620114958339810160408190526200003f916200c3c0565b33600d60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600b60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600c60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060066040518060a00160405280731af3f329e8be154074d8769d1ffa4ee058b1dbc36001600160a01b0316815260200173b3f0c9ea1f05e312093fdb031e789a756659b0ac6001600160a01b031681526020016000151581526020016002600f0b81526020016000600f0b8152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548160ff02191690831515021790555060608201518160020160006101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555060808201518160020160106101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555050505060066040518060a00160405280738ac76a51cc950d9822d68b83fe1ad97b32cd580d6001600160a01b0316815260200173b3f0c9ea1f05e312093fdb031e789a756659b0ac6001600160a01b031681526020016000151581526020016003600f0b81526020016000600f0b8152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548160ff02191690831515021790555060608201518160020160006101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555060808201518160020160106101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555050505060066040518060a00160405280734bd17003473389a42daf6a0a729f6fdb328bbbd76001600160a01b0316815260200173191409d5a4effe25b0f4240557ba2192d18a191e6001600160a01b031681526020016001151581526020016000600f0b81526020016001600f0b8152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548160ff02191690831515021790555060608201518160020160006101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555060808201518160020160106101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555050505060066040518060a001604052807323396cf899ca06c4472205fc903bdb4de249d6fc6001600160a01b031681526020017399c92765efc472a9709ced86310d64c4573c4b776001600160a01b031681526020016001151581526020016000600f0b81526020016001600f0b8152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548160ff02191690831515021790555060608201518160020160006101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555060808201518160020160106101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555050505060056040518060800160405280731b96b92314c44b159149f7e0303511fb2fc4774f6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073610e7a287c27dffcac0f0a94f547cc1b770cf4836001600160a01b03168152602001734b0f1812e5df2a09796481ff14017e60055080036001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073a527a61703d82139f8a06bc30097cc9caa2df5a66001600160a01b03168152602001600080516020620113158339815191526001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807341182c32f854dd97ba0e0b1816022e0acb2fc0bb6001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173cf6bb5389c92bdda8a3747ddb454cb7a64626c636001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807370d8929d04b60af4fb9b58713ebcf18765ade4226001600160a01b03168152602001600080516020620113f58339815191526001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280737561eee90e24f3b348e1087a005f78b4c84535246001600160a01b03168152602001600080516020620114558339815191526001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073752e713fb70e3fa1ac08bcf34485f14a986956c46001600160a01b03168152602001600080516020620113758339815191526001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073ff17ff314925dff772b71abdff2782bc913b35756001600160a01b03168152602001734bd17003473389a42daf6a0a729f6fdb328bbbd76001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073680dd100e4b394bda26a59dd5c119a391e747d186001600160a01b03168152602001738ac76a51cc950d9822d68b83fe1ad97b32cd580d6001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073c15fa3e22c912a276550f3e5fe3b0deb87b55acd6001600160a01b03168152602001600080516020620114158339815191526001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280733ab77e40340ab084c3e23be8e5a6f7afed9d41dc6001600160a01b03168152602001731af3f329e8be154074d8769d1ffa4ee058b1dbc36001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807391589786d36fee5b27a5539cfe638a5fc98346656001600160a01b031681526020017378650b139471520656b9e7aa7a5e9276814a38e96001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073bc765fd113c5bdb2ebc25f711191b56bb8690aec6001600160a01b03168152602001734338665cbb7b2485a8855a139b75d5e34ab0db946001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073bea35584b9a88107102abef0bdee2c4fae5d8c316001600160a01b0316815260200173728c5bac3c3e370e372fc4671f9ef6916b814d8b6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073ba51d1ab95756ca4eab8737ecd450cd8f05384cf6001600160a01b03168152602001733ee2200efb3400fabb9aacf31297cbdd1d435d476001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807368ff2ca47d27db5ac0b5c46587645835dd51d3c16001600160a01b031681526020017388f1a5ae2a3bf98aeaf342d26b30a79438c9142e6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807399d865ed50d2c32c1493896810fa386c1ce81d916001600160a01b03168152602001600080516020620113f58339815191526001600160a01b0316815260200173250632378e573c6be1ac2f97fcdf00515d0aa91b6001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280730392957571f28037607c14832d16f8b653edd4726001600160a01b03168152602001600080516020620113f58339815191526001600160a01b031681526020017352ce071bd9b1c4b00a0b92d298c512478cad67e86001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807317580340f3daedae871a8c21d15911742ec79e0f6001600160a01b03168152602001600080516020620113f58339815191526001600160a01b0316815260200173947950bcc74888a40ffa2593c5798f11fc9124c46001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073cbe2cf3bd012e9c1ade2ee4d41db3dac763e78f36001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173d41fdb03ba84762dd66a0af1a6c8540ff1ba5dfb6001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280734269e7f43a63cea1ad7707be565a94a9189967e96001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173bf5140a22578168fd562dccf235e5d43a02ce9b16001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807336b7d2e5c7877392fb17f9219efad56f3d7947006001600160a01b0316815260200173928e55dab735aa8260af3cedada18b5f70c72f1b6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073bcd62661a6b1ded703585d3af7d7649ef4dcdb5c6001600160a01b03168152602001737083609fce4d1d8dc0c979aab8c869ea2c8734026001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073aebe45e3a03b734c68e5557ae04bfc76917b46866001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173f8a0bf9cf54bb92f17374d9e9a321e6a111a51bd6001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073c639187ef82271d8f517de6feae4faf5b517533c6001600160a01b0316815260200173ad6caeb32cd2c308980a548bd0bc5aa4306c6c186001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807320bcc3b8a0091ddac2d0bc30f68e6cbb97de59cd6001600160a01b03168152602001600080516020620114158339815191526001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280734576c456af93a37a096235e5d83f812ac9aed0276001600160a01b031681526020017371de20e0c4616e7fcbfdd3f875d568492cbe47396001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280734db28767d1527ba545ca5bbda1c96a94ed6ff2426001600160a01b03168152602001600080516020620113558339815191526001600160a01b0316815260200173eca41281c24451168a37211f0bc2b8645af450926001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073c7b4b32a3be2cb6572a1c9959401f832ce47a6d26001600160a01b03168152602001731d2f0da169ceb9fc7b3144628db156f3f6c60dbe6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073fec200a5e3addd4a7915a556dde3f5850e6440206001600160a01b0316815260200173658a109c5900bc6d2357c87549b651670e5b05396001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073e022baa3e5e87658f789c9132b10d7425fd3a3896001600160a01b0316815260200173ac51066d7bec65dc4589368da368b212745d63e86001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073dc6c130299e53acd2cc2d291fa10552ca2198a6b6001600160a01b03168152602001737a9f28eb62c791422aa23ceae1da9c847cbec9b06001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073c746337b5f800a0e19ed4eb3bda03ff1401b81676001600160a01b0316815260200173b86abcb37c3a4b64f74f59301aff131a1becc7876001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073496a8b716a3a3410b16e71e3c906968ce4488e526001600160a01b03168152602001739f589e3eabe42ebc94a44727b3f3531c0c8778096001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073b5f6f7dad23132d40d778085d795bd0fd4b859cd6001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173ed28a457a5a76596ac48d87c0f577020f6ea1c4c6001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073f64a269f0a06da07d23f43c1deb217101ee6bee76001600160a01b031681526020017323396cf899ca06c4472205fc903bdb4de249d6fc6001600160a01b03168152602001735b6dcf557e2abe2323c48445e8cc948910d8c2c96001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807334e821e785a93261b697ebd2797988b3aa78ca336001600160a01b03168152602001732222227e22102fe3322098e4cbfe18cfebd57c956001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114758339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073f570d6e751976d0d10aa64acfa829a5ea4a517276001600160a01b03168152602001600080516020620113758339815191526001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620112f58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073b450606703743d557a1c8384fffe6b941f8f60f46001600160a01b03168152602001600080516020620113758339815191526001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620112f58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807370b31abf9be826edc188a15fc35cc6037103a58f6001600160a01b03168152602001600080516020620113758339815191526001600160a01b03168152602001600080516020620114558339815191526001600160a01b03168152602001600080516020620112f58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073c61fb584daf69bedf912768aedc0658b11a1a75c6001600160a01b03168152602001734bd17003473389a42daf6a0a729f6fdb328bbbd76001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620112f58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073ef82bd8287da9700b004657170746968cf5ca04a6001600160a01b03168152602001600080516020620113958339815191526001600160a01b03168152602001600080516020620113758339815191526001600160a01b03168152602001600080516020620112f58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807316b9a82891338f9ba80e2d6970fdda79d1eb0dae6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114158339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807374e4716e431f45807dcf19f284c7aa99f18a4fbc6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113f58339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807361eb789d75a95caa3ff50ed7e47b96c132fec0826001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114558339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280730362ba706dfe8ed12ec1470ab171d8dcb1c72b8d6001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173ed28a457a5a76596ac48d87c0f577020f6ea1c4c6001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807371b01ebddd797c8e9e0b003ea2f4fd207fbf46cc6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001734338665cbb7b2485a8855a139b75d5e34ab0db946001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073ce383277847f8217392eea98c5a8b4a7d27811b06001600160a01b03168152602001600080516020620113358339815191526001600160a01b031681526020017388f1a5ae2a3bf98aeaf342d26b30a79438c9142e6001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807328415ff2c35b65b9e5c7de82126b4015ab9d031f6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001733ee2200efb3400fabb9aacf31297cbdd1d435d476001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073014608e87af97a054c9a49f81e1473076d51d9a36001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173bf5140a22578168fd562dccf235e5d43a02ce9b16001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073dd5bad8f8b360d76d12fda230f8baf42fe0022cf6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001737083609fce4d1d8dc0c979aab8c869ea2c8734026001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807303f18135c44c64ebfdcbad8297fe5bdafdbbdd866001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001731d2f0da169ceb9fc7b3144628db156f3f6c60dbe6001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073824eb9fadfb377394430d2744fa7c42916de3ece6001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173f8a0bf9cf54bb92f17374d9e9a321e6a111a51bd6001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073168b273278f3a8d302de5e879aa30690b7e6c28f6001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173ad6caeb32cd2c308980a548bd0bc5aa4306c6c186001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280736a97867a4b7eb7646ffb1f359ad582e9903aa1c26001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173b86abcb37c3a4b64f74f59301aff131a1becc7876001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280733dcb1787a95d2ea0eb7d00887704eebf0d79bb136001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001734b0f1812e5df2a09796481ff14017e60055080036001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807344ea47f2765fd5d26b7ef0222736ad6fd6f619506001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173728c5bac3c3e370e372fc4671f9ef6916b814d8b6001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073b2678c414ebc63c9cc6d1a0fc45f43e249b50fde6001600160a01b03168152602001600080516020620113358339815191526001600160a01b031681526020017378650b139471520656b9e7aa7a5e9276814a38e96001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073942b294e59a8c47a0f7f20df105b082710f7c3056001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173d41fdb03ba84762dd66a0af1a6c8540ff1ba5dfb6001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073ffd4b200d3c77a0b691b5562d804b3bd54294e6e6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001739f589e3eabe42ebc94a44727b3f3531c0c8778096001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073e6b421a4408c82381b226ab5b6f8c4b6390443596001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001732222227e22102fe3322098e4cbfe18cfebd57c956001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073cad7019d6d84a3294b0494aef02e73bd0f2572eb6001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173ac51066d7bec65dc4589368da368b212745d63e86001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073c6b668548aa4a56792e8002a920d3159728121d56001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173928e55dab735aa8260af3cedada18b5f70c72f1b6001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807313321acff4a27f3d2bca64b8beac6e5fdaaaf12c6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001737a9f28eb62c791422aa23ceae1da9c847cbec9b06001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280734fd6d315bef387fad2322fbc64368fc443f0886d6001600160a01b03168152602001600080516020620113358339815191526001600160a01b031681526020017371de20e0c4616e7fcbfdd3f875d568492cbe47396001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280737efaef62fddcca950418312c6c91aef321375a006001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620114158339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073e60b4e87645093a42fa9dcc5d0c8df6e67f1f9d26001600160a01b03168152602001600080516020620113558339815191526001600160a01b0316815260200173658a109c5900bc6d2357c87549b651670e5b05396001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280736d0c831254221ba121fb53fb44df289a6558867d6001600160a01b03168152602001600080516020620113558339815191526001600160a01b0316815260200173eca41281c24451168a37211f0bc2b8645af450926001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807389666d026696660e93bf6edf57b71a68615768b76001600160a01b031681526020017323396cf899ca06c4472205fc903bdb4de249d6fc6001600160a01b03168152602001735b6dcf557e2abe2323c48445e8cc948910d8c2c96001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807337908620def1491dd591b5a2d16022a33cdda4156001600160a01b03168152602001600080516020620113f58339815191526001600160a01b031681526020017352ce071bd9b1c4b00a0b92d298c512478cad67e86001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807316afc4f2ad82986bbe2a4525601f8199ab9c832d6001600160a01b03168152602001600080516020620113f58339815191526001600160a01b0316815260200173947950bcc74888a40ffa2593c5798f11fc9124c46001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073acf47cbeaab5c8a6ee99263cfe43995f89fb32066001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173a1faa113cbe53436df28ff0aee54275c13b409756001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073d63b5cecb1f40d626307b92706df357709d058276001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173f21768ccbc73ea5b6fd3c687208a7c2def2d966e6001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073460b4193ec4c1a17372aa5fdcd44c520ba6586466001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173a8c2b8eec3d368c0253ad3dae65a5f2bbb89c9296001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073f45cd219aef8618a92baa7ad848364a158a24f336001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620114558339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280730ed7e52944161450477ee417de9cd3a859b14fd06001600160a01b03168152602001600080516020620113158339815191526001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280737eb5d86fd78f3852a3e0e064f2842d45a3db6ea26001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173cf6bb5389c92bdda8a3747ddb454cb7a64626c636001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073d8e2f8b6db204c405543953ef6359912fe3a88d66001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113758339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807358f876857a02d6762e0101bb5c46a8c1ed44dc166001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073478d6c9ffa3609faa1bfc4afc2770447ca3277056001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113958339815191526001600160a01b03168152602001600080516020620114358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073af9aa53146c5752bf6068a84b970e9fbb22a87bc6001600160a01b03168152602001600080516020620113d58339815191526001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073a12128bbb1c24fb851d8ba6ec6836f00916712c26001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114558339815191526001600160a01b03168152602001600080516020620112f58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073804678fa97d91b974ec2af3c843270886528a9e66001600160a01b03168152602001600080516020620113158339815191526001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073ef5212ada83ec2cc105c409df10b8806d20e3b356001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001735f84ce30dc3cf7909101c69086c50de1918958836001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073ba68d6bee4f433630dee22c248a236c8f6eae2466001600160a01b03168152602001600080516020620113d58339815191526001600160a01b03168152602001600080516020620113f58339815191526001600160a01b03168152602001600080516020620114358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280731c0276642f2a7cbcf6624d511f34811cdc65212c6001600160a01b03168152602001600080516020620113d58339815191526001600160a01b03168152602001600080516020620114558339815191526001600160a01b03168152602001600080516020620114358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073223740a259e461abee12d84a9fff5da69ff071dd6001600160a01b03168152602001600080516020620113d58339815191526001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620114358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280732e28b9b74d6d99d4697e913b82b41ef1cac51c6c6001600160a01b03168152602001600080516020620113558339815191526001600160a01b031681526020017314016e85a25aeb13065688cafb43044c2ef867846001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073ea26b78255df2bbc31c1ebf60010d78670185bd06001600160a01b03168152602001600080516020620113f58339815191526001600160a01b03168152602001738ac76a51cc950d9822d68b83fe1ad97b32cd580d6001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807382e8f9e7624fa038dff4a39960f5197a43fa76aa6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113f58339815191526001600160a01b03168152602001600080516020620114358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073969f2556f786a576f32aef6c1d6618f0221ec70e6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114558339815191526001600160a01b03168152602001600080516020620114358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073da28eb7aba389c1ea226a420bce04cb565aafb856001600160a01b03168152602001600080516020620114158339815191526001600160a01b03168152602001600080516020620114558339815191526001600160a01b03168152602001600080516020620114358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280730fb881c078434b1c0e4d0b64d8c64d12078b7ce26001600160a01b03168152602001600080516020620114158339815191526001600160a01b03168152602001600080516020620113f58339815191526001600160a01b03168152602001600080516020620114358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073577d005912c49b1679b4c21e334fdb650e92c0776001600160a01b03168152602001600080516020620114558339815191526001600160a01b03168152602001600080516020620113f58339815191526001600160a01b03168152602001600080516020620114358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506005604051806080016040528073a39af17ce4a8eb807e076805da1e2b8ea7d0755b6001600160a01b03168152602001600080516020620113158339815191526001600160a01b03168152602001600080516020620114158339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600560405180608001604052807376ae2c33bcce5a45128ef2060c6280a4525683966001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173728c5bac3c3e370e372fc4671f9ef6916b814d8b6001600160a01b0316815260200173be930734edafc41676a76d2240f206ed36dafba26001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060056040518060800160405280732bcc1fef8f31a1e4cf8c85f96f00c543b98da74e6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113958339815191526001600160a01b0316815260200173be930734edafc41676a76d2240f206ed36dafba26001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600760405180606001604052807388f1a5ae2a3bf98aeaf342d26b30a79438c9142e6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060076040518060600160405280600080516020620114158339815191526001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060076040518060600160405280734b0f1812e5df2a09796481ff14017e60055080036001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600760405180606001604052807378650b139471520656b9e7aa7a5e9276814a38e96001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060076040518060600160405280734338665cbb7b2485a8855a139b75d5e34ab0db946001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060076040518060600160405280733ee2200efb3400fabb9aacf31297cbdd1d435d476001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073d41fdb03ba84762dd66a0af1a6c8540ff1ba5dfb6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073bf5140a22578168fd562dccf235e5d43a02ce9b16001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073f8a0bf9cf54bb92f17374d9e9a321e6a111a51bd6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073ed28a457a5a76596ac48d87c0f577020f6ea1c4c6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073928e55dab735aa8260af3cedada18b5f70c72f1b6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060076040518060600160405280737083609fce4d1d8dc0c979aab8c869ea2c8734026001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073ad6caeb32cd2c308980a548bd0bc5aa4306c6c186001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600760405180606001604052807371de20e0c4616e7fcbfdd3f875d568492cbe47396001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060076040518060600160405280731d2f0da169ceb9fc7b3144628db156f3f6c60dbe6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073ac51066d7bec65dc4589368da368b212745d63e86001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060076040518060600160405280737a9f28eb62c791422aa23ceae1da9c847cbec9b06001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073b86abcb37c3a4b64f74f59301aff131a1becc7876001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060076040518060600160405280739f589e3eabe42ebc94a44727b3f3531c0c8778096001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060076040518060600160405280732222227e22102fe3322098e4cbfe18cfebd57c956001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073658a109c5900bc6d2357c87549b651670e5b05396001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073eca41281c24451168a37211f0bc2b8645af450926001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600760405180606001604052807352ce071bd9b1c4b00a0b92d298c512478cad67e86001600160a01b03168152602001600080516020620113f58339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073947950bcc74888a40ffa2593c5798f11fc9124c46001600160a01b03168152602001600080516020620113f58339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060076040518060600160405280735b6dcf557e2abe2323c48445e8cc948910d8c2c96001600160a01b031681526020017323396cf899ca06c4472205fc903bdb4de249d6fc6001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073a1faa113cbe53436df28ff0aee54275c13b409756001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073f21768ccbc73ea5b6fd3c687208a7c2def2d966e6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073a8c2b8eec3d368c0253ad3dae65a5f2bbb89c9296001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060076040518060600160405280738ff795a6f4d97e7887c79bea79aba5cc76444adf6001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620114358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600760405180606001604052807314016e85a25aeb13065688cafb43044c2ef867846001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060076040518060600160405280730d8ce2a99bb6e3b7db580ed848240e4a0f9ae1536001600160a01b03168152602001600080516020620114158339815191526001600160a01b03168152602001600080516020620114358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073ba2ae424d960c26247dd6c32edc70b295c744c436001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113b58339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073b4e8d978bff48c2d8fa241c0f323f71c1457ca816001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173be930734edafc41676a76d2240f206ed36dafba26001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073728c5bac3c3e370e372fc4671f9ef6916b814d8b6001600160a01b03168152602001600080516020620113358339815191526001600160a01b0316815260200173be930734edafc41676a76d2240f206ed36dafba26001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506007604051806060016040528073250632378e573c6be1ac2f97fcdf00515d0aa91b6001600160a01b03168152602001600080516020620113f58339815191526001600160a01b0316815260200173cde540d7eafe93ac5fe6233bee57e1270d3e330f6001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506009604051806060016040528073dfd7684dbd0c31a302abac3a4b62caadd1235e7f6001600160a01b0316815260200173cf6bb5389c92bdda8a3747ddb454cb7a64626c636001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506009604051806060016040528073dfd7684dbd0c31a302abac3a4b62caadd1235e7f6001600160a01b03168152602001600080516020620113758339815191526001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050506009604051806060016040528073dfd7684dbd0c31a302abac3a4b62caadd1235e7f6001600160a01b03168152602001735f84ce30dc3cf7909101c69086c50de1918958836001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600960405180606001604052807356c4f0984ce2c82e340e697210984fc9b1532ee66001600160a01b03168152602001600080516020620113158339815191526001600160a01b03168152602001735b17b4d5e4009b5c43e3e3d63a5229f794cba3896001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600960405180606001604052807356c4f0984ce2c82e340e697210984fc9b1532ee66001600160a01b03168152602001600080516020620113d58339815191526001600160a01b03168152602001735b17b4d5e4009b5c43e3e3d63a5229f794cba3896001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060096040518060600160405280737ea9f435c7ccb2eef266f5366fe13ea6c9f3e2456001600160a01b03168152602001600080516020620114558339815191526001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505060096040518060600160405280737ea9f435c7ccb2eef266f5366fe13ea6c9f3e2456001600160a01b03168152602001600080516020620113f58339815191526001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600a604051806060016040528073894ed9026de37afd9cce1e6c0be7d6b510e3ffe56001600160a01b03168152602001600080516020620113358339815191526001600160a01b03168152602001600080516020620113958339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600a604051806060016040528073894ed9026de37afd9cce1e6c0be7d6b510e3ffe56001600160a01b03168152602001600080516020620113558339815191526001600160a01b03168152602001600080516020620113958339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050600a604051806060016040528073894ed9026de37afd9cce1e6c0be7d6b510e3ffe56001600160a01b03168152602001735b17b4d5e4009b5c43e3e3d63a5229f794cba3896001600160a01b03168152602001600080516020620113958339815191526001600160a01b03168152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050506200c42b565b80516200c3ba816200c411565b92915050565b600080604083850312156200c3d457600080fd5b60006200c3e285856200c3ad565b92505060206200c3f5858286016200c3ad565b9150509250929050565b60006001600160a01b0382166200c3ba565b6200c41c816200c3ff565b81146200c42857600080fd5b50565b614eba806200c43b6000396000f3fe60806040526004361061031a5760003560e01c8063853828b6116101ab578063c7ad7ac0116100f7578063dfa62c4e11610095578063f0aae1141161006f578063f0aae114146108a5578063f341a0d6146108d4578063f77c4791146108f4578063fd6dbe2f146109095761031a565b8063dfa62c4e14610837578063e18f57c614610857578063e39c8b0a146108775761031a565b8063cccd8960116100d1578063cccd8960146107d8578063d0e30db0146107ed578063d376043614610802578063d73792a9146108225761031a565b8063c7ad7ac01461078e578063c7b9d530146107a3578063cc10b18a146107c35761031a565b8063a300e64411610164578063b80b39861161013e578063b80b398614610713578063bdf52ca614610728578063c190927c14610759578063c1a3d44c146107795761031a565b8063a300e644146106b3578063ab033ea9146106d3578063ac1e5025146106f35761031a565b8063853828b61461061f5780638a2a5c2f146106345780638bc7e8c41461064957806392eefe9b1461065e578063968e74ee1461067e578063a26b398e1461069e5761031a565b80632e1a7d4d1161026a5780635aa6e67511610223578063722713f7116101fd578063722713f7146105a65780637787f6c3146105bb578063778fe9d8146105d05780638155601d146105ff5761031a565b80635aa6e675146105515780635b7e0292146105665780636985c833146105865761031a565b80632e1a7d4d146104a55780633087b124146104c557806331e778b0146104da5780633b468a11146104ef5780634641257d1461050f57806351cff8d9146105315761031a565b80631e752fcf116102d7578063204653a4116102b1578063204653a4146104485780632224fa251461045d578063234a25fb14610470578063258b7035146104905761031a565b80631e752fcf146103fc5780631f1fcd51146104115780631fe4a686146104335761031a565b8063015d04c91461031f57806305560cf4146103415780630811d3c3146103615780630de0e9801461039a57806313852f3c146103ba57806317d7de7c146103da575b600080fd5b34801561032b57600080fd5b5061033f61033a3660046140e8565b610929565b005b34801561034d57600080fd5b5061033f61035c36600461404c565b610a4c565b34801561036d57600080fd5b5061038161037c3660046141de565b610b16565b6040516103919493929190614923565b60405180910390f35b3480156103a657600080fd5b5061033f6103b5366004613f5d565b610b5d565b3480156103c657600080fd5b5061033f6103d53660046141de565b610c07565b3480156103e657600080fd5b506103ef610c4b565b6040516103919190614adc565b34801561040857600080fd5b5061033f610c83565b34801561041d57600080fd5b50610426610cd0565b60405161039191906148d2565b34801561043f57600080fd5b50610426610ce8565b34801561045457600080fd5b5061033f610cf7565b6103ef61046b366004613ece565b610d42565b34801561047c57600080fd5b5061033f61048b366004613e92565b610e3c565b34801561049c57600080fd5b5061033f610e9d565b3480156104b157600080fd5b5061033f6104c03660046141de565b610ee8565b3480156104d157600080fd5b5061033f6110d1565b3480156104e657600080fd5b5061033f61111c565b3480156104fb57600080fd5b5061033f61050a366004614018565b611167565b34801561051b57600080fd5b5061052461121d565b6040516103919190614a94565b34801561053d57600080fd5b5061052461054c3660046141c0565b6113c9565b34801561055d57600080fd5b506104266114d7565b34801561057257600080fd5b5061033f61058136600461411c565b6114e6565b34801561059257600080fd5b5061033f6105a136600461404c565b6115b0565b3480156105b257600080fd5b5061052461167a565b3480156105c757600080fd5b5061033f611689565b3480156105dc57600080fd5b506105f06105eb3660046141de565b6116d4565b604051610391939291906148fb565b34801561060b57600080fd5b5061033f61061a3660046140b4565b611713565b34801561062b57600080fd5b506105246117f5565b34801561064057600080fd5b506104266119be565b34801561065557600080fd5b506105246119cd565b34801561066a57600080fd5b5061033f610679366004613e92565b6119d3565b34801561068a57600080fd5b506104266106993660046141de565b611a1f565b3480156106aa57600080fd5b5061033f611a46565b3480156106bf57600080fd5b5061033f6106ce366004614080565b611a91565b3480156106df57600080fd5b5061033f6106ee366004613e92565b611b71565b3480156106ff57600080fd5b5061033f61070e3660046141de565b611bbd565b34801561071f57600080fd5b5061033f611bec565b34801561073457600080fd5b506107486107433660046141de565b611c37565b604051610391959493929190614958565b34801561076557600080fd5b506105f06107743660046141de565b611c8f565b34801561078557600080fd5b50610524611c9c565b34801561079a57600080fd5b5061033f611d26565b3480156107af57600080fd5b5061033f6107be366004613e92565b611d71565b3480156107cf57600080fd5b5061033f611dbd565b3480156107e457600080fd5b50610524611e08565b3480156107f957600080fd5b5061033f610cce565b34801561080e57600080fd5b506105f061081d3660046141de565b611e0e565b34801561082e57600080fd5b50610524611e1b565b34801561084357600080fd5b506104266108523660046141de565b611e21565b34801561086357600080fd5b5061033f610872366004613f5d565b611e2e565b34801561088357600080fd5b506108976108923660046141de565b611ed3565b6040516103919291906148e0565b3480156108b157600080fd5b506108c56108c03660046141de565b611f09565b604051610391939291906149a4565b3480156108e057600080fd5b506105f06108ef3660046141de565b611f49565b34801561090057600080fd5b50610426611f56565b34801561091557600080fd5b5061033f61092436600461411c565b611f65565b600d546001600160a01b031633148061094c5750600b546001600160a01b031633145b6109715760405162461bcd60e51b815260040161096890614bda565b60405180910390fd5b60005b8151811015610a4857600682828151811061098b57fe5b602090810291909101810151825460018181018555600094855293839020825160039092020180546001600160a01b039283166001600160a01b031991821617825593830151818601805460408601511515600160a01b0260ff60a01b19939095169616959095171691909117909255606081015160029092018054608090920151600f90810b6001600160801b03908116600160801b029490910b81166001600160801b03199093169290921790911691909117905501610974565b5050565b600d546001600160a01b0316331480610a6f5750600b546001600160a01b031633145b610a8b5760405162461bcd60e51b815260040161096890614bda565b60005b8151811015610a48576009828281518110610aa557fe5b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b03938416178255938301518186018054861691841691909117905560409092015160029092018054909316911617905501610a8e565b60058181548110610b2357fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039283169450908216928216911684565b600d546001600160a01b0316331480610b805750600b546001600160a01b031633145b610b9c5760405162461bcd60e51b815260040161096890614bda565b60005b81811015610c02576002838383818110610bb557fe5b9050602002016020610bca9190810190613e92565b815460018082018455600093845260209093200180546001600160a01b0319166001600160a01b039290921691909117905501610b9f565b505050565b600d546001600160a01b0316331480610c2a5750600b546001600160a01b031633145b610c465760405162461bcd60e51b815260040161096890614bda565b600f55565b60408051808201909152601781527f53747261746567794143727970746f533056365f41435300000000000000000060208201525b90565b600d546001600160a01b0316331480610ca65750600b546001600160a01b031633145b610cc25760405162461bcd60e51b815260040161096890614bda565b610cce60096000613617565b565b734197c6ef3879a08cd51e5560da5064b773aa1d2981565b600d546001600160a01b031681565b600d546001600160a01b0316331480610d1a5750600b546001600160a01b031633145b610d365760405162461bcd60e51b815260040161096890614bda565b610cce600a6000613617565b600b546060906001600160a01b03163314610d6f5760405162461bcd60e51b815260040161096890614b4a565b6060835160001415610d82575081610dae565b838051906020012083604051602001610d9c9291906148aa565b60405160208183030381529060405290505b60006060876001600160a01b03168784604051610dcb91906148c6565b60006040518083038185875af1925050503d8060008114610e08576040519150601f19603f3d011682016040523d82523d6000602084013e610e0d565b606091505b509150915081610e2f5760405162461bcd60e51b815260040161096890614bba565b925050505b949350505050565b600d546001600160a01b0316331480610e5f5750600b546001600160a01b031633145b610e7b5760405162461bcd60e51b815260040161096890614bda565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b0316331480610ec05750600b546001600160a01b031633145b610edc5760405162461bcd60e51b815260040161096890614bda565b610cce60036000613638565b600c546001600160a01b03163314610f125760405162461bcd60e51b815260040161096890614b5a565b6040516370a0823160e01b8152600090734197c6ef3879a08cd51e5560da5064b773aa1d29906370a0823190610f4c9030906004016148d2565b60206040518083038186803b158015610f6457600080fd5b505afa158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f9c91908101906141a2565b905081811015610faa578091505b6000610fd3612710610fc7600e548661202f90919063ffffffff16565b9063ffffffff61207216565b600c54604051632988bb9f60e21b81529192506000916001600160a01b039091169063a622ee7c9061101d90734197c6ef3879a08cd51e5560da5064b773aa1d29906004016148d2565b60206040518083038186803b15801561103557600080fd5b505afa158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061106d9190810190613eb0565b90506001600160a01b0381166110955760405162461bcd60e51b815260040161096890614baa565b6110cb816110a9868563ffffffff6120b416565b734197c6ef3879a08cd51e5560da5064b773aa1d29919063ffffffff6120f616565b50505050565b600d546001600160a01b03163314806110f45750600b546001600160a01b031633145b6111105760405162461bcd60e51b815260040161096890614bda565b610cce60026000613659565b600d546001600160a01b031633148061113f5750600b546001600160a01b031633145b61115b5760405162461bcd60e51b815260040161096890614bda565b610cce60016000613659565b600d546001600160a01b031633148061118a5750600b546001600160a01b031633145b6111a65760405162461bcd60e51b815260040161096890614bda565b60005b8151811015610a485760038282815181106111c057fe5b602090810291909101810151825460018082018555600094855293839020825160029092020180546001600160a01b03199081166001600160a01b03938416178255929093015192840180549092169216919091179055016111a9565b600033321461123e5760405162461bcd60e51b815260040161096890614bca565b6040516370a0823160e01b8152600090734197c6ef3879a08cd51e5560da5064b773aa1d29906370a08231906112789030906004016148d2565b60206040518083038186803b15801561129057600080fd5b505afa1580156112a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112c891908101906141a2565b90506112d261214f565b6040516370a0823160e01b815260009061136e908390734197c6ef3879a08cd51e5560da5064b773aa1d29906370a08231906113129030906004016148d2565b60206040518083038186803b15801561132a57600080fd5b505afa15801561133e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061136291908101906141a2565b9063ffffffff6120b416565b905080156113c4576000611393612710610fc7600f548561202f90919063ffffffff16565b90506113ba734197c6ef3879a08cd51e5560da5064b773aa1d29338363ffffffff6120f616565b9250610c80915050565b505090565b600c546000906001600160a01b031633146113f65760405162461bcd60e51b815260040161096890614b5a565b734197c6ef3879a08cd51e5560da5064b773aa1d296001600160a01b03831614156114335760405162461bcd60e51b815260040161096890614b8a565b6040516370a0823160e01b81526001600160a01b038316906370a082319061145f9030906004016148d2565b60206040518083038186803b15801561147757600080fd5b505afa15801561148b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114af91908101906141a2565b600c549091506114d2906001600160a01b0384811691168363ffffffff6120f616565b919050565b600b546001600160a01b031681565b600d546001600160a01b03163314806115095750600b546001600160a01b031633145b6115255760405162461bcd60e51b815260040161096890614bda565b60005b8151811015610a4857600882828151811061153f57fe5b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b03938416178255938301518186018054861691841691909117905560409092015160029092018054909316911617905501611528565b600d546001600160a01b03163314806115d35750600b546001600160a01b031633145b6115ef5760405162461bcd60e51b815260040161096890614bda565b60005b8151811015610a4857600a82828151811061160957fe5b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b039384161782559383015181860180548616918416919091179055604090920151600290920180549093169116179055016115f2565b6000611684611c9c565b905090565b600d546001600160a01b03163314806116ac5750600b546001600160a01b031633145b6116c85760405162461bcd60e51b815260040161096890614bda565b610cce60066000613677565b600781815481106116e157fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b039182169350918116911683565b600d546001600160a01b03163314806117365750600b546001600160a01b031633145b6117525760405162461bcd60e51b815260040161096890614bda565b60005b8151811015610a4857600482828151811061176c57fe5b602090810291909101810151825460018181018555600094855293839020825160039092020180546001600160a01b039283166001600160a01b03199182161782559383015181860180549190931694169390931790556040015160029091018054600f9290920b6001600160801b03166001600160801b031990921691909117905501611755565b600c546000906001600160a01b031633148061181b5750600d546001600160a01b031633145b806118305750600b546001600160a01b031633145b61184c5760405162461bcd60e51b815260040161096890614bda565b6040516370a0823160e01b8152734197c6ef3879a08cd51e5560da5064b773aa1d29906370a08231906118839030906004016148d2565b60206040518083038186803b15801561189b57600080fd5b505afa1580156118af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118d391908101906141a2565b600c54604051632988bb9f60e21b81529192506000916001600160a01b039091169063a622ee7c9061191d90734197c6ef3879a08cd51e5560da5064b773aa1d29906004016148d2565b60206040518083038186803b15801561193557600080fd5b505afa158015611949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061196d9190810190613eb0565b90506001600160a01b0381166119955760405162461bcd60e51b815260040161096890614baa565b6119ba734197c6ef3879a08cd51e5560da5064b773aa1d29828463ffffffff6120f616565b5090565b6000546001600160a01b031681565b600e5481565b600b546001600160a01b031633146119fd5760405162461bcd60e51b815260040161096890614b4a565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60018181548110611a2c57fe5b6000918252602090912001546001600160a01b0316905081565b600d546001600160a01b0316331480611a695750600b546001600160a01b031633145b611a855760405162461bcd60e51b815260040161096890614bda565b610cce60056000613698565b600d546001600160a01b0316331480611ab45750600b546001600160a01b031633145b611ad05760405162461bcd60e51b815260040161096890614bda565b60005b8151811015610a48576005828281518110611aea57fe5b602090810291909101810151825460018082018555600094855293839020825160049092020180546001600160a01b03199081166001600160a01b0393841617825593830151818601805486169184169190911790556040830151600282018054861691841691909117905560609092015160039092018054909316911617905501611ad3565b600b546001600160a01b03163314611b9b5760405162461bcd60e51b815260040161096890614b4a565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b03163314611be75760405162461bcd60e51b815260040161096890614b4a565b600e55565b600d546001600160a01b0316331480611c0f5750600b546001600160a01b031633145b611c2b5760405162461bcd60e51b815260040161096890614bda565b610cce60076000613617565b60068181548110611c4457fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b03918216935090821691600160a01b900460ff1690600f81810b91600160801b9004900b85565b600981815481106116e157fe5b6040516370a0823160e01b8152600090734197c6ef3879a08cd51e5560da5064b773aa1d29906370a0823190611cd69030906004016148d2565b60206040518083038186803b158015611cee57600080fd5b505afa158015611d02573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061168491908101906141a2565b600d546001600160a01b0316331480611d495750600b546001600160a01b031633145b611d655760405162461bcd60e51b815260040161096890614bda565b610cce600460006136b9565b600b546001600160a01b03163314611d9b5760405162461bcd60e51b815260040161096890614b4a565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b0316331480611de05750600b546001600160a01b031633145b611dfc5760405162461bcd60e51b815260040161096890614bda565b610cce60086000613617565b600f5481565b600881815481106116e157fe5b61271081565b60028181548110611a2c57fe5b600d546001600160a01b0316331480611e515750600b546001600160a01b031633145b611e6d5760405162461bcd60e51b815260040161096890614bda565b60005b81811015610c02576001838383818110611e8657fe5b9050602002016020611e9b9190810190613e92565b815460018082018455600093845260209093200180546001600160a01b0319166001600160a01b039290921691909117905501611e70565b60038181548110611ee057fe5b6000918252602090912060029091020180546001909101546001600160a01b0391821692501682565b60048181548110611f1657fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b039182169350911690600f0b83565b600a81815481106116e157fe5b600c546001600160a01b031681565b600d546001600160a01b0316331480611f885750600b546001600160a01b031633145b611fa45760405162461bcd60e51b815260040161096890614bda565b60005b8151811015610a48576007828281518110611fbe57fe5b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b03938416178255938301518186018054861691841691909117905560409092015160029092018054909316911617905501611fa7565b60008261203e5750600061206c565b8282028284828161204b57fe5b04146120695760405162461bcd60e51b815260040161096890614b9a565b90505b92915050565b600061206983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061261d565b600061206983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612656565b604051610c0290849063a9059cbb60e01b906121189086908690602401614a34565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612682565b6001541561215f5761215f612767565b6002545b80156121e6576002600182038154811061217957fe5b6000918252602082200154604080516330c5408560e01b815290516001600160a01b03909216926330c540859260048084019382900301818387803b1580156121c157600080fd5b505af11580156121d5573d6000803e3d6000fd5b505060001990920191506121639050565b506003545b801561224a576122416003600183038154811061220457fe5b60009182526020918290206040805180820190915260029092020180546001600160a01b0390811683526001909101541691810191909152612843565b600019016121eb565b506004545b80156122c5576122bc6004600183038154811061226857fe5b600091825260209182902060408051606081018252600390930290910180546001600160a01b03908116845260018201541693830193909352600290920154600f90810b810b900b91810191909152612bb0565b6000190161224f565b506005545b80156123a75761239e600560018303815481106122e357fe5b6000918252602090912060049091020154600580546001600160a01b0390921691600019850190811061231257fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b03166005600185038154811061234757fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b03166005600186038154811061237c57fe5b60009182526020909120600360049092020101546001600160a01b0316612cf0565b600019016122ca565b506006545b80156124475761243e600660018303815481106123c557fe5b60009182526020918290206040805160a08101825260039390930290910180546001600160a01b039081168452600182015490811694840194909452600160a01b90930460ff16151590820152600290910154600f81810b810b810b6060840152600160801b909104810b810b900b6080820152612e51565b600019016123ac565b506007545b80156124f4576124eb6007600183038154811061246557fe5b6000918252602090912060039091020154600780546001600160a01b0390921691600019850190811061249457fe5b906000526020600020906003020160010160009054906101000a90046001600160a01b0316600760018503815481106124c957fe5b60009182526020909120600260039092020101546001600160a01b0316613052565b6000190161244c565b506009545b80156125685761255f6009600183038154811061251257fe5b600091825260209182902060408051606081018252600390930290910180546001600160a01b03908116845260018201548116948401949094526002015490921691810191909152613214565b600019016124f9565b506008545b80156125f3576125ea6008600183038154811061258657fe5b6000918252602090912060039091020154600880546001600160a01b039092169160001985019081106125b557fe5b906000526020600020906003020160010160009054906101000a90046001600160a01b0316600860018503815481106124c957fe5b6000190161256d565b50600a545b801561261a57612611600a600183038154811061251257fe5b600019016125f8565b50565b6000818361263e5760405162461bcd60e51b81526004016109689190614adc565b50600083858161264a57fe5b049150505b9392505050565b6000818484111561267a5760405162461bcd60e51b81526004016109689190614adc565b505050900390565b612694826001600160a01b03166134f3565b6126b05760405162461bcd60e51b815260040161096890614c0a565b60006060836001600160a01b0316836040516126cc91906148c6565b6000604051808303816000865af19150503d8060008114612709576040519150601f19603f3d011682016040523d82523d6000602084013e61270e565b606091505b5091509150816127305760405162461bcd60e51b815260040161096890614b7a565b8051156110cb578080602001905161274b9190810190614184565b6110cb5760405162461bcd60e51b815260040161096890614bea565b60005460405163e42abf3560e01b81526001600160a01b0390911690636daefab690600190839063e42abf35906127a2908490600401614a4f565b60006040518083038186803b1580156127ba57600080fd5b505afa1580156127ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127f69190810190614150565b306040518463ffffffff1660e01b815260040161281593929190614a60565b600060405180830381600087803b15801561282f57600080fd5b505af11580156110cb573d6000803e3d6000fd5b80516040516370a0823160e01b81526000916001600160a01b0316906370a08231906128739030906004016148d2565b60206040518083038186803b15801561288b57600080fd5b505afa15801561289f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128c391908101906141a2565b90508015610a4857600082600001516001600160a01b0316638d928af86040518163ffffffff1660e01b815260040160206040518083038186803b15801561290a57600080fd5b505afa15801561291e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129429190810190613eb0565b8351909150612962906001600160a01b031682600063ffffffff61352c16565b825161297e906001600160a01b0316828463ffffffff61352c16565b600083600001516001600160a01b03166338fff2d06040518163ffffffff1660e01b815260040160206040518083038186803b1580156129bd57600080fd5b505afa1580156129d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129f591908101906141a2565b90506060826001600160a01b031663f94d4668836040518263ffffffff1660e01b8152600401612a259190614a94565b60006040518083038186803b158015612a3d57600080fd5b505afa158015612a51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a799190810190613f9e565b5050905060608151604051908082528060200260200182016040528015612aaa578160200160208202803883390190505b5090506000805b8351811015612afb5787602001516001600160a01b0316848281518110612ad457fe5b60200260200101516001600160a01b03161415612af357809150612afb565b600101612ab1565b50846001600160a01b0316638bdb3913853030604051806080016040528089815260200188815260200160008d89604051602001612b3b93929190614aed565b6040516020818303038152906040528152602001600015158152506040518563ffffffff1660e01b8152600401612b759493929190614aa2565b600060405180830381600087803b158015612b8f57600080fd5b505af1158015612ba3573d6000803e3d6000fd5b5050505050505050505050565b60208101516040516370a0823160e01b81526000916001600160a01b0316906370a0823190612be39030906004016148d2565b60206040518083038186803b158015612bfb57600080fd5b505afa158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c3391908101906141a2565b90508015610a485781516020830151612c5f916001600160a01b0390911690600063ffffffff61352c16565b81516020830151612c82916001600160a01b03909116908363ffffffff61352c16565b81516040808401519051630d2680e960e11b81526001600160a01b0390921691631a4d01d291612cba91859190600090600401614c54565b600060405180830381600087803b158015612cd457600080fd5b505af1158015612ce8573d6000803e3d6000fd5b505050505050565b6040516370a0823160e01b81526000906001600160a01b038616906370a0823190612d1f9030906004016148d2565b60206040518083038186803b158015612d3757600080fd5b505afa158015612d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d6f91908101906141a2565b90508015612e4a57612d926001600160a01b03861683600063ffffffff61352c16565b612dac6001600160a01b038616838363ffffffff61352c16565b6001600160a01b03821663baa2abde85858460008030612dd44261070863ffffffff6135f216565b6040518863ffffffff1660e01b8152600401612df697969594939291906149cc565b6040805180830381600087803b158015612e0f57600080fd5b505af1158015612e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e4791908101906141fc565b50505b5050505050565b80516040516370a0823160e01b81526000916001600160a01b0316906370a0823190612e819030906004016148d2565b60206040518083038186803b158015612e9957600080fd5b505afa158015612ead573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ed191908101906141a2565b90508015610a485760208201518251612efd916001600160a01b0390911690600063ffffffff61352c16565b60208201518251612f20916001600160a01b03909116908363ffffffff61352c16565b816040015115612fc15781602001516001600160a01b031663a6417ed6836060015184608001518460006040518563ffffffff1660e01b8152600401612f699493929190614b15565b602060405180830381600087803b158015612f8357600080fd5b505af1158015612f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612fbb91908101906141a2565b50610a48565b81602001516001600160a01b0316633df02124836060015184608001518460006040518563ffffffff1660e01b81526004016130009493929190614b15565b602060405180830381600087803b15801561301a57600080fd5b505af115801561302e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c0291908101906141a2565b6040516370a0823160e01b81526000906001600160a01b038516906370a08231906130819030906004016148d2565b60206040518083038186803b15801561309957600080fd5b505afa1580156130ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506130d191908101906141a2565b905080156110cb576130f46001600160a01b03851683600063ffffffff61352c16565b61310e6001600160a01b038516838363ffffffff61352c16565b6040805160028082526060808301845292602083019080388339019050509050848160008151811061313c57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050838160018151811061316a57fe5b6001600160a01b03928316602091820292909201015283166338ed1739836000843061319e4261070863ffffffff6135f216565b6040518663ffffffff1660e01b81526004016131be959493929190614c7c565b600060405180830381600087803b1580156131d857600080fd5b505af11580156131ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ce89190810190614150565b60208101516040516370a0823160e01b81526000916001600160a01b0316906370a08231906132479030906004016148d2565b60206040518083038186803b15801561325f57600080fd5b505afa158015613273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061329791908101906141a2565b90508015610a4857600082600001516001600160a01b0316638d928af86040518163ffffffff1660e01b815260040160206040518083038186803b1580156132de57600080fd5b505afa1580156132f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133169190810190613eb0565b6020840151909150613339906001600160a01b031682600063ffffffff61352c16565b6020830151613358906001600160a01b0316828463ffffffff61352c16565b806001600160a01b03166352bbbe296040518060c0016040528086600001516001600160a01b03166338fff2d06040518163ffffffff1660e01b815260040160206040518083038186803b1580156133af57600080fd5b505afa1580156133c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133e791908101906141a2565b81526020016000815260200186602001516001600160a01b0316815260200186604001516001600160a01b03168152602001858152602001604051806020016040528060008152508152506040518060800160405280306001600160a01b03168152602001600015158152602001306001600160a01b03168152602001600015158152506000613482610708426135f290919063ffffffff16565b6040518563ffffffff1660e01b81526004016134a19493929190614c1a565b602060405180830381600087803b1580156134bb57600080fd5b505af11580156134cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110cb91908101906141a2565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610e34575050151592915050565b8015806135b45750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e9061356290309086906004016148e0565b60206040518083038186803b15801561357a57600080fd5b505afa15801561358e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506135b291908101906141a2565b155b6135d05760405162461bcd60e51b815260040161096890614bfa565b604051610c0290849063095ea7b360e01b906121189086908690602401614a34565b6000828201838110156120695760405162461bcd60e51b815260040161096890614b6a565b508054600082556003029060005260206000209081019061261a91906136da565b508054600082556002029060005260206000209081019061261a9190613715565b508054600082559060005260206000209081019061261a9190613746565b508054600082556003029060005260206000209081019061261a9190613760565b508054600082556004029060005260206000209081019061261a919061379d565b508054600082556003029060005260206000209081019061261a91906137e2565b610c8091905b808211156119ba5780546001600160a01b031990811682556001820180548216905560028201805490911690556003016136e0565b610c8091905b808211156119ba5780546001600160a01b03199081168255600182018054909116905560020161371b565b610c8091905b808211156119ba576000815560010161374c565b610c8091905b808211156119ba5780546001600160a01b03191681556001810180546001600160a81b031916905560006002820155600301613766565b610c8091905b808211156119ba5780546001600160a01b03199081168255600182018054821690556002820180548216905560038201805490911690556004016137a3565b610c8091905b808211156119ba5780546001600160a01b0319908116825560018201805490911690556002810180546001600160801b03191690556003016137e8565b803561206c81614e3f565b805161206c81614e3f565b60008083601f84011261384d57600080fd5b5081356001600160401b0381111561386457600080fd5b60208301915083602082028301111561387c57600080fd5b9250929050565b600082601f83011261389457600080fd5b81516138a76138a282614ceb565b614cc5565b915081818352602084019350602081019050838560208402820111156138cc57600080fd5b60005b838110156138f857816138e28882613830565b84525060209283019291909101906001016138cf565b5050505092915050565b600082601f83011261391357600080fd5b81356139216138a282614ceb565b9150818183526020840193506020810190508385604084028201111561394657600080fd5b60005b838110156138f8578161395c8882613ca4565b84525060209092019160409190910190600101613949565b600082601f83011261398557600080fd5b81356139936138a282614ceb565b915081818352602084019350602081019050838560608402820111156139b857600080fd5b60005b838110156138f857816139ce8882613ceb565b845250602090920191606091909101906001016139bb565b600082601f8301126139f757600080fd5b8135613a056138a282614ceb565b91508181835260208401935060208101905083856080840282011115613a2a57600080fd5b60005b838110156138f85781613a408882613d46565b84525060209092019160809190910190600101613a2d565b600082601f830112613a6957600080fd5b8135613a776138a282614ceb565b91508181835260208401935060208101905083856060840282011115613a9c57600080fd5b60005b838110156138f85781613ab28882613db5565b84525060209092019160609190910190600101613a9f565b600082601f830112613adb57600080fd5b8135613ae96138a282614ceb565b915081818352602084019350602081019050838560a0840282011115613b0e57600080fd5b60005b838110156138f85781613b248882613e04565b84525060209092019160a09190910190600101613b11565b600082601f830112613b4d57600080fd5b8135613b5b6138a282614ceb565b91508181835260208401935060208101905083856060840282011115613b8057600080fd5b60005b838110156138f85781613b968882613ceb565b84525060209092019160609190910190600101613b83565b600082601f830112613bbf57600080fd5b8151613bcd6138a282614ceb565b91508181835260208401935060208101905083856020840282011115613bf257600080fd5b60005b838110156138f85781613c088882613c34565b8452506020928301929190910190600101613bf5565b803561206c81614e53565b805161206c81614e53565b805161206c81614e5c565b600082601f830112613c5057600080fd5b8135613c5e6138a282614d0b565b91508082526020830160208301858383011115613c7a57600080fd5b613c85838284614dca565b50505092915050565b803561206c81614e65565b803561206c81614e6e565b600060408284031215613cb657600080fd5b613cc06040614cc5565b90506000613cce8484613825565b8252506020613cdf84848301613825565b60208301525092915050565b600060608284031215613cfd57600080fd5b613d076060614cc5565b90506000613d158484613825565b8252506020613d2684848301613825565b6020830152506040613d3a84828501613825565b60408301525092915050565b600060808284031215613d5857600080fd5b613d626080614cc5565b90506000613d708484613825565b8252506020613d8184848301613825565b6020830152506040613d9584828501613825565b6040830152506060613da984828501613825565b60608301525092915050565b600060608284031215613dc757600080fd5b613dd16060614cc5565b90506000613ddf8484613825565b8252506020613df084848301613825565b6020830152506040613d3a84828501613c99565b600060a08284031215613e1657600080fd5b613e2060a0614cc5565b90506000613e2e8484613825565b8252506020613e3f84848301613825565b6020830152506040613e5384828501613c1e565b6040830152506060613e6784828501613c99565b6060830152506080613e7b84828501613c99565b60808301525092915050565b803561206c81614e5c565b600060208284031215613ea457600080fd5b6000610e348484613825565b600060208284031215613ec257600080fd5b6000610e348484613830565b60008060008060808587031215613ee457600080fd5b6000613ef08787613825565b9450506020613f0187828801613e87565b93505060408501356001600160401b03811115613f1d57600080fd5b613f2987828801613c3f565b92505060608501356001600160401b03811115613f4557600080fd5b613f5187828801613c3f565b91505092959194509250565b60008060208385031215613f7057600080fd5b82356001600160401b03811115613f8657600080fd5b613f928582860161383b565b92509250509250929050565b600080600060608486031215613fb357600080fd5b83516001600160401b03811115613fc957600080fd5b613fd586828701613883565b93505060208401516001600160401b03811115613ff157600080fd5b613ffd86828701613bae565b925050604061400e86828701613c34565b9150509250925092565b60006020828403121561402a57600080fd5b81356001600160401b0381111561404057600080fd5b610e3484828501613902565b60006020828403121561405e57600080fd5b81356001600160401b0381111561407457600080fd5b610e3484828501613974565b60006020828403121561409257600080fd5b81356001600160401b038111156140a857600080fd5b610e34848285016139e6565b6000602082840312156140c657600080fd5b81356001600160401b038111156140dc57600080fd5b610e3484828501613a58565b6000602082840312156140fa57600080fd5b81356001600160401b0381111561411057600080fd5b610e3484828501613aca565b60006020828403121561412e57600080fd5b81356001600160401b0381111561414457600080fd5b610e3484828501613b3c565b60006020828403121561416257600080fd5b81516001600160401b0381111561417857600080fd5b610e3484828501613bae565b60006020828403121561419657600080fd5b6000610e348484613c29565b6000602082840312156141b457600080fd5b6000610e348484613c34565b6000602082840312156141d257600080fd5b6000610e348484613c8e565b6000602082840312156141f057600080fd5b6000610e348484613e87565b6000806040838503121561420f57600080fd5b600061421b8585613c34565b925050602061422c85828601613c34565b9150509250929050565b60006142428383614256565b505060200190565b60006142428383614406565b61425f81614d67565b82525050565b600061427082614d44565b61427a8185614d52565b935061428583614d32565b8060005b838110156142b357815161429d8882614236565b97506142a883614d32565b925050600101614289565b509495945050505050565b60006142c982614d44565b6142d38185614d52565b93506142de83614d32565b8060005b838110156142b35781516142f68882614236565b975061430183614d32565b9250506001016142e2565b600061431782614d48565b6143218185614d52565b935061432c83614d38565b8060005b838110156142b35761434182614e15565b61434b8882614236565b975061435683614d4c565b925050600101614330565b600061436c82614d44565b6143768185614d52565b935061438183614d32565b8060005b838110156142b3578151614399888261424a565b97506143a483614d32565b925050600101614385565b60006143ba82614d44565b6143c48185614d52565b93506143cf83614d32565b8060005b838110156142b35781516143e7888261424a565b97506143f283614d32565b9250506001016143d3565b61425f81614d72565b61425f81610c80565b61425f61441b82614d77565b610c80565b600061442b82614d44565b6144358185614d52565b9350614445818560208601614dd6565b61444e81614e21565b9093019392505050565b600061446382614d44565b61446d81856114d2565b935061447d818560208601614dd6565b9290920192915050565b61425f81614da9565b61425f81614db4565b61425f81614da3565b61425f81614dbf565b60006144b8600b83614d52565b6a21676f7665726e616e636560a81b815260200192915050565b60006144df600b83614d52565b6a10b1b7b73a3937b63632b960a91b815260200192915050565b6000614506601b83614d52565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061453f602083614d52565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000614578600483614d52565b631dd85b9d60e21b815260200192915050565b6000614598602183614d52565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006145db600683614d52565b65085d985d5b1d60d21b815260200192915050565b60006145fd603d83614d52565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547281527f616e73616374696f6e20657865637574696f6e2072657665727465642e000000602082015260400192915050565b600061465c600783614d52565b666e6f7420656f6160c81b815260200192915050565b600061467f600b83614d52565b6a08585d5d1a1bdc9a5e995960aa1b815260200192915050565b60006146a6602a83614d52565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b60006146f2603683614d52565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f81527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b602082015260400192915050565b600061474a601f83614d52565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b805160808084526000919084019061478e82826142be565b915050602083015184820360208601526147a882826143af565b915050604083015184820360408601526147c28282614420565b91505060608301516147d760608601826143fd565b509392505050565b805160808301906147f08482614256565b50602082015161480360208501826143fd565b5060408201516148166040850182614256565b5060608201516110cb60608501826143fd565b805160009060c084019061483d8582614406565b5060208301516148506020860182614490565b5060408301516148636040860182614256565b5060608301516148766060860182614256565b5060808301516148896080860182614406565b5060a083015184820360a08601526148a18282614420565b95945050505050565b60006148b6828561440f565b600482019150610e348284614458565b600061264f8284614458565b6020810161206c8284614256565b604081016148ee8285614256565b61264f6020830184614256565b606081016149098286614256565b6149166020830185614256565b610e346040830184614256565b608081016149318287614256565b61493e6020830186614256565b61494b6040830185614256565b6148a16060830184614256565b60a081016149668288614256565b6149736020830187614256565b61498060408301866143fd565b61498d6060830185614499565b61499a6080830184614499565b9695505050505050565b606081016149b28286614256565b6149bf6020830185614256565b610e346040830184614499565b60e081016149da828a614256565b6149e76020830189614256565b6149f46040830188614406565b614a0160608301876144a2565b614a0e60808301866144a2565b614a1b60a0830185614256565b614a2860c0830184614406565b98975050505050505050565b60408101614a428285614256565b61264f6020830184614406565b60208082528101612069818461430c565b60608082528101614a71818661430c565b90508181036020830152614a858185614361565b9050610e346040830184614256565b6020810161206c8284614406565b60808101614ab08287614406565b614abd6020830186614256565b614aca6040830185614256565b818103606083015261499a8184614776565b602080825281016120698184614420565b60608101614afb8286614487565b614b086020830185614406565b610e346040830184614406565b60808101614b238287614499565b614b306020830186614499565b614b3d6040830185614406565b6148a160608301846144a2565b6020808252810161206c816144ab565b6020808252810161206c816144d2565b6020808252810161206c816144f9565b6020808252810161206c81614532565b6020808252810161206c8161456b565b6020808252810161206c8161458b565b6020808252810161206c816145ce565b6020808252810161206c816145f0565b6020808252810161206c8161464f565b6020808252810161206c81614672565b6020808252810161206c81614699565b6020808252810161206c816146e5565b6020808252810161206c8161473d565b60e08082528101614c2b8187614829565b9050614c3a60208301866147df565b614c4760a08301856144a2565b6148a160c0830184614406565b60608101614c628286614406565b614c6f6020830185614499565b610e3460408301846144a2565b60a08101614c8a8288614406565b614c976020830187614406565b8181036040830152614ca98186614265565b9050614cb86060830185614256565b61499a6080830184614406565b6040518181016001600160401b0381118282101715614ce357600080fd5b604052919050565b60006001600160401b03821115614d0157600080fd5b5060209081020190565b60006001600160401b03821115614d2157600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b5490565b60010190565b90815260200190565b6001600160a01b031690565b600061206c82614d5b565b151590565b6001600160e01b03191690565b600061206c82614d67565b806114d281614e2b565b806114d281614e35565b600f0b90565b600061206c82614d8f565b600061206c82614d99565b600061206c82610c80565b82818337506000910152565b60005b83811015614df1578181015183820152602001614dd9565b838111156110cb5750506000910152565b600061206c614e1083610c80565b614d5b565b600061206c8254614e02565b601f01601f191690565b6003811061261a57fe5b6002811061261a57fe5b614e4881614d67565b811461261a57600080fd5b614e4881614d72565b614e4881610c80565b614e4881614d84565b614e4881614da356fea365627a7a72315820cb8eca6e517e958125a2ee4263d8e9568f9a1682666e26e24af91855f705e15b6c6578706572696d656e74616cf564736f6c63430005110040000000000000000000000000816278bbbcc529f8cdee8cc72c226fb01def6e6c0000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce82000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d5600000000000000000000000047bead2563dcbf3bf2c9407fea4dc236faba485a0000000000000000000000004197c6ef3879a08cd51e5560da5064b773aa1d2900000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e0000000000000000000000009c65ab58d8d978db963e63f2bfb7121627e3a7390000000000000000000000002170ed0880ac9a755fd29b2688956bd959f933f800000000000000000000000055d398326f99059ff775485246999027b31979550000000000000000000000007dae51bd3e3376b8c7c4900e9107f12be3af1ba80000000000000000000000007130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c00000000000000000000000005ff2b0db69458a0750badebc4f9e13add608c7f000000000000000000000000d95b9c08285045393862607d6e5fc2d95b9ce129000000000000000000000000fd6e996c8960d521e3d2624cc4c6648cfa1217b7

Deployed Bytecode

0x60806040526004361061031a5760003560e01c8063853828b6116101ab578063c7ad7ac0116100f7578063dfa62c4e11610095578063f0aae1141161006f578063f0aae114146108a5578063f341a0d6146108d4578063f77c4791146108f4578063fd6dbe2f146109095761031a565b8063dfa62c4e14610837578063e18f57c614610857578063e39c8b0a146108775761031a565b8063cccd8960116100d1578063cccd8960146107d8578063d0e30db0146107ed578063d376043614610802578063d73792a9146108225761031a565b8063c7ad7ac01461078e578063c7b9d530146107a3578063cc10b18a146107c35761031a565b8063a300e64411610164578063b80b39861161013e578063b80b398614610713578063bdf52ca614610728578063c190927c14610759578063c1a3d44c146107795761031a565b8063a300e644146106b3578063ab033ea9146106d3578063ac1e5025146106f35761031a565b8063853828b61461061f5780638a2a5c2f146106345780638bc7e8c41461064957806392eefe9b1461065e578063968e74ee1461067e578063a26b398e1461069e5761031a565b80632e1a7d4d1161026a5780635aa6e67511610223578063722713f7116101fd578063722713f7146105a65780637787f6c3146105bb578063778fe9d8146105d05780638155601d146105ff5761031a565b80635aa6e675146105515780635b7e0292146105665780636985c833146105865761031a565b80632e1a7d4d146104a55780633087b124146104c557806331e778b0146104da5780633b468a11146104ef5780634641257d1461050f57806351cff8d9146105315761031a565b80631e752fcf116102d7578063204653a4116102b1578063204653a4146104485780632224fa251461045d578063234a25fb14610470578063258b7035146104905761031a565b80631e752fcf146103fc5780631f1fcd51146104115780631fe4a686146104335761031a565b8063015d04c91461031f57806305560cf4146103415780630811d3c3146103615780630de0e9801461039a57806313852f3c146103ba57806317d7de7c146103da575b600080fd5b34801561032b57600080fd5b5061033f61033a3660046140e8565b610929565b005b34801561034d57600080fd5b5061033f61035c36600461404c565b610a4c565b34801561036d57600080fd5b5061038161037c3660046141de565b610b16565b6040516103919493929190614923565b60405180910390f35b3480156103a657600080fd5b5061033f6103b5366004613f5d565b610b5d565b3480156103c657600080fd5b5061033f6103d53660046141de565b610c07565b3480156103e657600080fd5b506103ef610c4b565b6040516103919190614adc565b34801561040857600080fd5b5061033f610c83565b34801561041d57600080fd5b50610426610cd0565b60405161039191906148d2565b34801561043f57600080fd5b50610426610ce8565b34801561045457600080fd5b5061033f610cf7565b6103ef61046b366004613ece565b610d42565b34801561047c57600080fd5b5061033f61048b366004613e92565b610e3c565b34801561049c57600080fd5b5061033f610e9d565b3480156104b157600080fd5b5061033f6104c03660046141de565b610ee8565b3480156104d157600080fd5b5061033f6110d1565b3480156104e657600080fd5b5061033f61111c565b3480156104fb57600080fd5b5061033f61050a366004614018565b611167565b34801561051b57600080fd5b5061052461121d565b6040516103919190614a94565b34801561053d57600080fd5b5061052461054c3660046141c0565b6113c9565b34801561055d57600080fd5b506104266114d7565b34801561057257600080fd5b5061033f61058136600461411c565b6114e6565b34801561059257600080fd5b5061033f6105a136600461404c565b6115b0565b3480156105b257600080fd5b5061052461167a565b3480156105c757600080fd5b5061033f611689565b3480156105dc57600080fd5b506105f06105eb3660046141de565b6116d4565b604051610391939291906148fb565b34801561060b57600080fd5b5061033f61061a3660046140b4565b611713565b34801561062b57600080fd5b506105246117f5565b34801561064057600080fd5b506104266119be565b34801561065557600080fd5b506105246119cd565b34801561066a57600080fd5b5061033f610679366004613e92565b6119d3565b34801561068a57600080fd5b506104266106993660046141de565b611a1f565b3480156106aa57600080fd5b5061033f611a46565b3480156106bf57600080fd5b5061033f6106ce366004614080565b611a91565b3480156106df57600080fd5b5061033f6106ee366004613e92565b611b71565b3480156106ff57600080fd5b5061033f61070e3660046141de565b611bbd565b34801561071f57600080fd5b5061033f611bec565b34801561073457600080fd5b506107486107433660046141de565b611c37565b604051610391959493929190614958565b34801561076557600080fd5b506105f06107743660046141de565b611c8f565b34801561078557600080fd5b50610524611c9c565b34801561079a57600080fd5b5061033f611d26565b3480156107af57600080fd5b5061033f6107be366004613e92565b611d71565b3480156107cf57600080fd5b5061033f611dbd565b3480156107e457600080fd5b50610524611e08565b3480156107f957600080fd5b5061033f610cce565b34801561080e57600080fd5b506105f061081d3660046141de565b611e0e565b34801561082e57600080fd5b50610524611e1b565b34801561084357600080fd5b506104266108523660046141de565b611e21565b34801561086357600080fd5b5061033f610872366004613f5d565b611e2e565b34801561088357600080fd5b506108976108923660046141de565b611ed3565b6040516103919291906148e0565b3480156108b157600080fd5b506108c56108c03660046141de565b611f09565b604051610391939291906149a4565b3480156108e057600080fd5b506105f06108ef3660046141de565b611f49565b34801561090057600080fd5b50610426611f56565b34801561091557600080fd5b5061033f61092436600461411c565b611f65565b600d546001600160a01b031633148061094c5750600b546001600160a01b031633145b6109715760405162461bcd60e51b815260040161096890614bda565b60405180910390fd5b60005b8151811015610a4857600682828151811061098b57fe5b602090810291909101810151825460018181018555600094855293839020825160039092020180546001600160a01b039283166001600160a01b031991821617825593830151818601805460408601511515600160a01b0260ff60a01b19939095169616959095171691909117909255606081015160029092018054608090920151600f90810b6001600160801b03908116600160801b029490910b81166001600160801b03199093169290921790911691909117905501610974565b5050565b600d546001600160a01b0316331480610a6f5750600b546001600160a01b031633145b610a8b5760405162461bcd60e51b815260040161096890614bda565b60005b8151811015610a48576009828281518110610aa557fe5b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b03938416178255938301518186018054861691841691909117905560409092015160029092018054909316911617905501610a8e565b60058181548110610b2357fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039283169450908216928216911684565b600d546001600160a01b0316331480610b805750600b546001600160a01b031633145b610b9c5760405162461bcd60e51b815260040161096890614bda565b60005b81811015610c02576002838383818110610bb557fe5b9050602002016020610bca9190810190613e92565b815460018082018455600093845260209093200180546001600160a01b0319166001600160a01b039290921691909117905501610b9f565b505050565b600d546001600160a01b0316331480610c2a5750600b546001600160a01b031633145b610c465760405162461bcd60e51b815260040161096890614bda565b600f55565b60408051808201909152601781527f53747261746567794143727970746f533056365f41435300000000000000000060208201525b90565b600d546001600160a01b0316331480610ca65750600b546001600160a01b031633145b610cc25760405162461bcd60e51b815260040161096890614bda565b610cce60096000613617565b565b734197c6ef3879a08cd51e5560da5064b773aa1d2981565b600d546001600160a01b031681565b600d546001600160a01b0316331480610d1a5750600b546001600160a01b031633145b610d365760405162461bcd60e51b815260040161096890614bda565b610cce600a6000613617565b600b546060906001600160a01b03163314610d6f5760405162461bcd60e51b815260040161096890614b4a565b6060835160001415610d82575081610dae565b838051906020012083604051602001610d9c9291906148aa565b60405160208183030381529060405290505b60006060876001600160a01b03168784604051610dcb91906148c6565b60006040518083038185875af1925050503d8060008114610e08576040519150601f19603f3d011682016040523d82523d6000602084013e610e0d565b606091505b509150915081610e2f5760405162461bcd60e51b815260040161096890614bba565b925050505b949350505050565b600d546001600160a01b0316331480610e5f5750600b546001600160a01b031633145b610e7b5760405162461bcd60e51b815260040161096890614bda565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b0316331480610ec05750600b546001600160a01b031633145b610edc5760405162461bcd60e51b815260040161096890614bda565b610cce60036000613638565b600c546001600160a01b03163314610f125760405162461bcd60e51b815260040161096890614b5a565b6040516370a0823160e01b8152600090734197c6ef3879a08cd51e5560da5064b773aa1d29906370a0823190610f4c9030906004016148d2565b60206040518083038186803b158015610f6457600080fd5b505afa158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f9c91908101906141a2565b905081811015610faa578091505b6000610fd3612710610fc7600e548661202f90919063ffffffff16565b9063ffffffff61207216565b600c54604051632988bb9f60e21b81529192506000916001600160a01b039091169063a622ee7c9061101d90734197c6ef3879a08cd51e5560da5064b773aa1d29906004016148d2565b60206040518083038186803b15801561103557600080fd5b505afa158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061106d9190810190613eb0565b90506001600160a01b0381166110955760405162461bcd60e51b815260040161096890614baa565b6110cb816110a9868563ffffffff6120b416565b734197c6ef3879a08cd51e5560da5064b773aa1d29919063ffffffff6120f616565b50505050565b600d546001600160a01b03163314806110f45750600b546001600160a01b031633145b6111105760405162461bcd60e51b815260040161096890614bda565b610cce60026000613659565b600d546001600160a01b031633148061113f5750600b546001600160a01b031633145b61115b5760405162461bcd60e51b815260040161096890614bda565b610cce60016000613659565b600d546001600160a01b031633148061118a5750600b546001600160a01b031633145b6111a65760405162461bcd60e51b815260040161096890614bda565b60005b8151811015610a485760038282815181106111c057fe5b602090810291909101810151825460018082018555600094855293839020825160029092020180546001600160a01b03199081166001600160a01b03938416178255929093015192840180549092169216919091179055016111a9565b600033321461123e5760405162461bcd60e51b815260040161096890614bca565b6040516370a0823160e01b8152600090734197c6ef3879a08cd51e5560da5064b773aa1d29906370a08231906112789030906004016148d2565b60206040518083038186803b15801561129057600080fd5b505afa1580156112a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112c891908101906141a2565b90506112d261214f565b6040516370a0823160e01b815260009061136e908390734197c6ef3879a08cd51e5560da5064b773aa1d29906370a08231906113129030906004016148d2565b60206040518083038186803b15801561132a57600080fd5b505afa15801561133e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061136291908101906141a2565b9063ffffffff6120b416565b905080156113c4576000611393612710610fc7600f548561202f90919063ffffffff16565b90506113ba734197c6ef3879a08cd51e5560da5064b773aa1d29338363ffffffff6120f616565b9250610c80915050565b505090565b600c546000906001600160a01b031633146113f65760405162461bcd60e51b815260040161096890614b5a565b734197c6ef3879a08cd51e5560da5064b773aa1d296001600160a01b03831614156114335760405162461bcd60e51b815260040161096890614b8a565b6040516370a0823160e01b81526001600160a01b038316906370a082319061145f9030906004016148d2565b60206040518083038186803b15801561147757600080fd5b505afa15801561148b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114af91908101906141a2565b600c549091506114d2906001600160a01b0384811691168363ffffffff6120f616565b919050565b600b546001600160a01b031681565b600d546001600160a01b03163314806115095750600b546001600160a01b031633145b6115255760405162461bcd60e51b815260040161096890614bda565b60005b8151811015610a4857600882828151811061153f57fe5b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b03938416178255938301518186018054861691841691909117905560409092015160029092018054909316911617905501611528565b600d546001600160a01b03163314806115d35750600b546001600160a01b031633145b6115ef5760405162461bcd60e51b815260040161096890614bda565b60005b8151811015610a4857600a82828151811061160957fe5b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b039384161782559383015181860180548616918416919091179055604090920151600290920180549093169116179055016115f2565b6000611684611c9c565b905090565b600d546001600160a01b03163314806116ac5750600b546001600160a01b031633145b6116c85760405162461bcd60e51b815260040161096890614bda565b610cce60066000613677565b600781815481106116e157fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b039182169350918116911683565b600d546001600160a01b03163314806117365750600b546001600160a01b031633145b6117525760405162461bcd60e51b815260040161096890614bda565b60005b8151811015610a4857600482828151811061176c57fe5b602090810291909101810151825460018181018555600094855293839020825160039092020180546001600160a01b039283166001600160a01b03199182161782559383015181860180549190931694169390931790556040015160029091018054600f9290920b6001600160801b03166001600160801b031990921691909117905501611755565b600c546000906001600160a01b031633148061181b5750600d546001600160a01b031633145b806118305750600b546001600160a01b031633145b61184c5760405162461bcd60e51b815260040161096890614bda565b6040516370a0823160e01b8152734197c6ef3879a08cd51e5560da5064b773aa1d29906370a08231906118839030906004016148d2565b60206040518083038186803b15801561189b57600080fd5b505afa1580156118af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118d391908101906141a2565b600c54604051632988bb9f60e21b81529192506000916001600160a01b039091169063a622ee7c9061191d90734197c6ef3879a08cd51e5560da5064b773aa1d29906004016148d2565b60206040518083038186803b15801561193557600080fd5b505afa158015611949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061196d9190810190613eb0565b90506001600160a01b0381166119955760405162461bcd60e51b815260040161096890614baa565b6119ba734197c6ef3879a08cd51e5560da5064b773aa1d29828463ffffffff6120f616565b5090565b6000546001600160a01b031681565b600e5481565b600b546001600160a01b031633146119fd5760405162461bcd60e51b815260040161096890614b4a565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60018181548110611a2c57fe5b6000918252602090912001546001600160a01b0316905081565b600d546001600160a01b0316331480611a695750600b546001600160a01b031633145b611a855760405162461bcd60e51b815260040161096890614bda565b610cce60056000613698565b600d546001600160a01b0316331480611ab45750600b546001600160a01b031633145b611ad05760405162461bcd60e51b815260040161096890614bda565b60005b8151811015610a48576005828281518110611aea57fe5b602090810291909101810151825460018082018555600094855293839020825160049092020180546001600160a01b03199081166001600160a01b0393841617825593830151818601805486169184169190911790556040830151600282018054861691841691909117905560609092015160039092018054909316911617905501611ad3565b600b546001600160a01b03163314611b9b5760405162461bcd60e51b815260040161096890614b4a565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b03163314611be75760405162461bcd60e51b815260040161096890614b4a565b600e55565b600d546001600160a01b0316331480611c0f5750600b546001600160a01b031633145b611c2b5760405162461bcd60e51b815260040161096890614bda565b610cce60076000613617565b60068181548110611c4457fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b03918216935090821691600160a01b900460ff1690600f81810b91600160801b9004900b85565b600981815481106116e157fe5b6040516370a0823160e01b8152600090734197c6ef3879a08cd51e5560da5064b773aa1d29906370a0823190611cd69030906004016148d2565b60206040518083038186803b158015611cee57600080fd5b505afa158015611d02573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061168491908101906141a2565b600d546001600160a01b0316331480611d495750600b546001600160a01b031633145b611d655760405162461bcd60e51b815260040161096890614bda565b610cce600460006136b9565b600b546001600160a01b03163314611d9b5760405162461bcd60e51b815260040161096890614b4a565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b0316331480611de05750600b546001600160a01b031633145b611dfc5760405162461bcd60e51b815260040161096890614bda565b610cce60086000613617565b600f5481565b600881815481106116e157fe5b61271081565b60028181548110611a2c57fe5b600d546001600160a01b0316331480611e515750600b546001600160a01b031633145b611e6d5760405162461bcd60e51b815260040161096890614bda565b60005b81811015610c02576001838383818110611e8657fe5b9050602002016020611e9b9190810190613e92565b815460018082018455600093845260209093200180546001600160a01b0319166001600160a01b039290921691909117905501611e70565b60038181548110611ee057fe5b6000918252602090912060029091020180546001909101546001600160a01b0391821692501682565b60048181548110611f1657fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b039182169350911690600f0b83565b600a81815481106116e157fe5b600c546001600160a01b031681565b600d546001600160a01b0316331480611f885750600b546001600160a01b031633145b611fa45760405162461bcd60e51b815260040161096890614bda565b60005b8151811015610a48576007828281518110611fbe57fe5b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b03938416178255938301518186018054861691841691909117905560409092015160029092018054909316911617905501611fa7565b60008261203e5750600061206c565b8282028284828161204b57fe5b04146120695760405162461bcd60e51b815260040161096890614b9a565b90505b92915050565b600061206983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061261d565b600061206983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612656565b604051610c0290849063a9059cbb60e01b906121189086908690602401614a34565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612682565b6001541561215f5761215f612767565b6002545b80156121e6576002600182038154811061217957fe5b6000918252602082200154604080516330c5408560e01b815290516001600160a01b03909216926330c540859260048084019382900301818387803b1580156121c157600080fd5b505af11580156121d5573d6000803e3d6000fd5b505060001990920191506121639050565b506003545b801561224a576122416003600183038154811061220457fe5b60009182526020918290206040805180820190915260029092020180546001600160a01b0390811683526001909101541691810191909152612843565b600019016121eb565b506004545b80156122c5576122bc6004600183038154811061226857fe5b600091825260209182902060408051606081018252600390930290910180546001600160a01b03908116845260018201541693830193909352600290920154600f90810b810b900b91810191909152612bb0565b6000190161224f565b506005545b80156123a75761239e600560018303815481106122e357fe5b6000918252602090912060049091020154600580546001600160a01b0390921691600019850190811061231257fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b03166005600185038154811061234757fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b03166005600186038154811061237c57fe5b60009182526020909120600360049092020101546001600160a01b0316612cf0565b600019016122ca565b506006545b80156124475761243e600660018303815481106123c557fe5b60009182526020918290206040805160a08101825260039390930290910180546001600160a01b039081168452600182015490811694840194909452600160a01b90930460ff16151590820152600290910154600f81810b810b810b6060840152600160801b909104810b810b900b6080820152612e51565b600019016123ac565b506007545b80156124f4576124eb6007600183038154811061246557fe5b6000918252602090912060039091020154600780546001600160a01b0390921691600019850190811061249457fe5b906000526020600020906003020160010160009054906101000a90046001600160a01b0316600760018503815481106124c957fe5b60009182526020909120600260039092020101546001600160a01b0316613052565b6000190161244c565b506009545b80156125685761255f6009600183038154811061251257fe5b600091825260209182902060408051606081018252600390930290910180546001600160a01b03908116845260018201548116948401949094526002015490921691810191909152613214565b600019016124f9565b506008545b80156125f3576125ea6008600183038154811061258657fe5b6000918252602090912060039091020154600880546001600160a01b039092169160001985019081106125b557fe5b906000526020600020906003020160010160009054906101000a90046001600160a01b0316600860018503815481106124c957fe5b6000190161256d565b50600a545b801561261a57612611600a600183038154811061251257fe5b600019016125f8565b50565b6000818361263e5760405162461bcd60e51b81526004016109689190614adc565b50600083858161264a57fe5b049150505b9392505050565b6000818484111561267a5760405162461bcd60e51b81526004016109689190614adc565b505050900390565b612694826001600160a01b03166134f3565b6126b05760405162461bcd60e51b815260040161096890614c0a565b60006060836001600160a01b0316836040516126cc91906148c6565b6000604051808303816000865af19150503d8060008114612709576040519150601f19603f3d011682016040523d82523d6000602084013e61270e565b606091505b5091509150816127305760405162461bcd60e51b815260040161096890614b7a565b8051156110cb578080602001905161274b9190810190614184565b6110cb5760405162461bcd60e51b815260040161096890614bea565b60005460405163e42abf3560e01b81526001600160a01b0390911690636daefab690600190839063e42abf35906127a2908490600401614a4f565b60006040518083038186803b1580156127ba57600080fd5b505afa1580156127ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127f69190810190614150565b306040518463ffffffff1660e01b815260040161281593929190614a60565b600060405180830381600087803b15801561282f57600080fd5b505af11580156110cb573d6000803e3d6000fd5b80516040516370a0823160e01b81526000916001600160a01b0316906370a08231906128739030906004016148d2565b60206040518083038186803b15801561288b57600080fd5b505afa15801561289f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128c391908101906141a2565b90508015610a4857600082600001516001600160a01b0316638d928af86040518163ffffffff1660e01b815260040160206040518083038186803b15801561290a57600080fd5b505afa15801561291e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129429190810190613eb0565b8351909150612962906001600160a01b031682600063ffffffff61352c16565b825161297e906001600160a01b0316828463ffffffff61352c16565b600083600001516001600160a01b03166338fff2d06040518163ffffffff1660e01b815260040160206040518083038186803b1580156129bd57600080fd5b505afa1580156129d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129f591908101906141a2565b90506060826001600160a01b031663f94d4668836040518263ffffffff1660e01b8152600401612a259190614a94565b60006040518083038186803b158015612a3d57600080fd5b505afa158015612a51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a799190810190613f9e565b5050905060608151604051908082528060200260200182016040528015612aaa578160200160208202803883390190505b5090506000805b8351811015612afb5787602001516001600160a01b0316848281518110612ad457fe5b60200260200101516001600160a01b03161415612af357809150612afb565b600101612ab1565b50846001600160a01b0316638bdb3913853030604051806080016040528089815260200188815260200160008d89604051602001612b3b93929190614aed565b6040516020818303038152906040528152602001600015158152506040518563ffffffff1660e01b8152600401612b759493929190614aa2565b600060405180830381600087803b158015612b8f57600080fd5b505af1158015612ba3573d6000803e3d6000fd5b5050505050505050505050565b60208101516040516370a0823160e01b81526000916001600160a01b0316906370a0823190612be39030906004016148d2565b60206040518083038186803b158015612bfb57600080fd5b505afa158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c3391908101906141a2565b90508015610a485781516020830151612c5f916001600160a01b0390911690600063ffffffff61352c16565b81516020830151612c82916001600160a01b03909116908363ffffffff61352c16565b81516040808401519051630d2680e960e11b81526001600160a01b0390921691631a4d01d291612cba91859190600090600401614c54565b600060405180830381600087803b158015612cd457600080fd5b505af1158015612ce8573d6000803e3d6000fd5b505050505050565b6040516370a0823160e01b81526000906001600160a01b038616906370a0823190612d1f9030906004016148d2565b60206040518083038186803b158015612d3757600080fd5b505afa158015612d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d6f91908101906141a2565b90508015612e4a57612d926001600160a01b03861683600063ffffffff61352c16565b612dac6001600160a01b038616838363ffffffff61352c16565b6001600160a01b03821663baa2abde85858460008030612dd44261070863ffffffff6135f216565b6040518863ffffffff1660e01b8152600401612df697969594939291906149cc565b6040805180830381600087803b158015612e0f57600080fd5b505af1158015612e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e4791908101906141fc565b50505b5050505050565b80516040516370a0823160e01b81526000916001600160a01b0316906370a0823190612e819030906004016148d2565b60206040518083038186803b158015612e9957600080fd5b505afa158015612ead573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ed191908101906141a2565b90508015610a485760208201518251612efd916001600160a01b0390911690600063ffffffff61352c16565b60208201518251612f20916001600160a01b03909116908363ffffffff61352c16565b816040015115612fc15781602001516001600160a01b031663a6417ed6836060015184608001518460006040518563ffffffff1660e01b8152600401612f699493929190614b15565b602060405180830381600087803b158015612f8357600080fd5b505af1158015612f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612fbb91908101906141a2565b50610a48565b81602001516001600160a01b0316633df02124836060015184608001518460006040518563ffffffff1660e01b81526004016130009493929190614b15565b602060405180830381600087803b15801561301a57600080fd5b505af115801561302e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c0291908101906141a2565b6040516370a0823160e01b81526000906001600160a01b038516906370a08231906130819030906004016148d2565b60206040518083038186803b15801561309957600080fd5b505afa1580156130ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506130d191908101906141a2565b905080156110cb576130f46001600160a01b03851683600063ffffffff61352c16565b61310e6001600160a01b038516838363ffffffff61352c16565b6040805160028082526060808301845292602083019080388339019050509050848160008151811061313c57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050838160018151811061316a57fe5b6001600160a01b03928316602091820292909201015283166338ed1739836000843061319e4261070863ffffffff6135f216565b6040518663ffffffff1660e01b81526004016131be959493929190614c7c565b600060405180830381600087803b1580156131d857600080fd5b505af11580156131ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ce89190810190614150565b60208101516040516370a0823160e01b81526000916001600160a01b0316906370a08231906132479030906004016148d2565b60206040518083038186803b15801561325f57600080fd5b505afa158015613273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061329791908101906141a2565b90508015610a4857600082600001516001600160a01b0316638d928af86040518163ffffffff1660e01b815260040160206040518083038186803b1580156132de57600080fd5b505afa1580156132f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133169190810190613eb0565b6020840151909150613339906001600160a01b031682600063ffffffff61352c16565b6020830151613358906001600160a01b0316828463ffffffff61352c16565b806001600160a01b03166352bbbe296040518060c0016040528086600001516001600160a01b03166338fff2d06040518163ffffffff1660e01b815260040160206040518083038186803b1580156133af57600080fd5b505afa1580156133c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133e791908101906141a2565b81526020016000815260200186602001516001600160a01b0316815260200186604001516001600160a01b03168152602001858152602001604051806020016040528060008152508152506040518060800160405280306001600160a01b03168152602001600015158152602001306001600160a01b03168152602001600015158152506000613482610708426135f290919063ffffffff16565b6040518563ffffffff1660e01b81526004016134a19493929190614c1a565b602060405180830381600087803b1580156134bb57600080fd5b505af11580156134cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110cb91908101906141a2565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610e34575050151592915050565b8015806135b45750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e9061356290309086906004016148e0565b60206040518083038186803b15801561357a57600080fd5b505afa15801561358e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506135b291908101906141a2565b155b6135d05760405162461bcd60e51b815260040161096890614bfa565b604051610c0290849063095ea7b360e01b906121189086908690602401614a34565b6000828201838110156120695760405162461bcd60e51b815260040161096890614b6a565b508054600082556003029060005260206000209081019061261a91906136da565b508054600082556002029060005260206000209081019061261a9190613715565b508054600082559060005260206000209081019061261a9190613746565b508054600082556003029060005260206000209081019061261a9190613760565b508054600082556004029060005260206000209081019061261a919061379d565b508054600082556003029060005260206000209081019061261a91906137e2565b610c8091905b808211156119ba5780546001600160a01b031990811682556001820180548216905560028201805490911690556003016136e0565b610c8091905b808211156119ba5780546001600160a01b03199081168255600182018054909116905560020161371b565b610c8091905b808211156119ba576000815560010161374c565b610c8091905b808211156119ba5780546001600160a01b03191681556001810180546001600160a81b031916905560006002820155600301613766565b610c8091905b808211156119ba5780546001600160a01b03199081168255600182018054821690556002820180548216905560038201805490911690556004016137a3565b610c8091905b808211156119ba5780546001600160a01b0319908116825560018201805490911690556002810180546001600160801b03191690556003016137e8565b803561206c81614e3f565b805161206c81614e3f565b60008083601f84011261384d57600080fd5b5081356001600160401b0381111561386457600080fd5b60208301915083602082028301111561387c57600080fd5b9250929050565b600082601f83011261389457600080fd5b81516138a76138a282614ceb565b614cc5565b915081818352602084019350602081019050838560208402820111156138cc57600080fd5b60005b838110156138f857816138e28882613830565b84525060209283019291909101906001016138cf565b5050505092915050565b600082601f83011261391357600080fd5b81356139216138a282614ceb565b9150818183526020840193506020810190508385604084028201111561394657600080fd5b60005b838110156138f8578161395c8882613ca4565b84525060209092019160409190910190600101613949565b600082601f83011261398557600080fd5b81356139936138a282614ceb565b915081818352602084019350602081019050838560608402820111156139b857600080fd5b60005b838110156138f857816139ce8882613ceb565b845250602090920191606091909101906001016139bb565b600082601f8301126139f757600080fd5b8135613a056138a282614ceb565b91508181835260208401935060208101905083856080840282011115613a2a57600080fd5b60005b838110156138f85781613a408882613d46565b84525060209092019160809190910190600101613a2d565b600082601f830112613a6957600080fd5b8135613a776138a282614ceb565b91508181835260208401935060208101905083856060840282011115613a9c57600080fd5b60005b838110156138f85781613ab28882613db5565b84525060209092019160609190910190600101613a9f565b600082601f830112613adb57600080fd5b8135613ae96138a282614ceb565b915081818352602084019350602081019050838560a0840282011115613b0e57600080fd5b60005b838110156138f85781613b248882613e04565b84525060209092019160a09190910190600101613b11565b600082601f830112613b4d57600080fd5b8135613b5b6138a282614ceb565b91508181835260208401935060208101905083856060840282011115613b8057600080fd5b60005b838110156138f85781613b968882613ceb565b84525060209092019160609190910190600101613b83565b600082601f830112613bbf57600080fd5b8151613bcd6138a282614ceb565b91508181835260208401935060208101905083856020840282011115613bf257600080fd5b60005b838110156138f85781613c088882613c34565b8452506020928301929190910190600101613bf5565b803561206c81614e53565b805161206c81614e53565b805161206c81614e5c565b600082601f830112613c5057600080fd5b8135613c5e6138a282614d0b565b91508082526020830160208301858383011115613c7a57600080fd5b613c85838284614dca565b50505092915050565b803561206c81614e65565b803561206c81614e6e565b600060408284031215613cb657600080fd5b613cc06040614cc5565b90506000613cce8484613825565b8252506020613cdf84848301613825565b60208301525092915050565b600060608284031215613cfd57600080fd5b613d076060614cc5565b90506000613d158484613825565b8252506020613d2684848301613825565b6020830152506040613d3a84828501613825565b60408301525092915050565b600060808284031215613d5857600080fd5b613d626080614cc5565b90506000613d708484613825565b8252506020613d8184848301613825565b6020830152506040613d9584828501613825565b6040830152506060613da984828501613825565b60608301525092915050565b600060608284031215613dc757600080fd5b613dd16060614cc5565b90506000613ddf8484613825565b8252506020613df084848301613825565b6020830152506040613d3a84828501613c99565b600060a08284031215613e1657600080fd5b613e2060a0614cc5565b90506000613e2e8484613825565b8252506020613e3f84848301613825565b6020830152506040613e5384828501613c1e565b6040830152506060613e6784828501613c99565b6060830152506080613e7b84828501613c99565b60808301525092915050565b803561206c81614e5c565b600060208284031215613ea457600080fd5b6000610e348484613825565b600060208284031215613ec257600080fd5b6000610e348484613830565b60008060008060808587031215613ee457600080fd5b6000613ef08787613825565b9450506020613f0187828801613e87565b93505060408501356001600160401b03811115613f1d57600080fd5b613f2987828801613c3f565b92505060608501356001600160401b03811115613f4557600080fd5b613f5187828801613c3f565b91505092959194509250565b60008060208385031215613f7057600080fd5b82356001600160401b03811115613f8657600080fd5b613f928582860161383b565b92509250509250929050565b600080600060608486031215613fb357600080fd5b83516001600160401b03811115613fc957600080fd5b613fd586828701613883565b93505060208401516001600160401b03811115613ff157600080fd5b613ffd86828701613bae565b925050604061400e86828701613c34565b9150509250925092565b60006020828403121561402a57600080fd5b81356001600160401b0381111561404057600080fd5b610e3484828501613902565b60006020828403121561405e57600080fd5b81356001600160401b0381111561407457600080fd5b610e3484828501613974565b60006020828403121561409257600080fd5b81356001600160401b038111156140a857600080fd5b610e34848285016139e6565b6000602082840312156140c657600080fd5b81356001600160401b038111156140dc57600080fd5b610e3484828501613a58565b6000602082840312156140fa57600080fd5b81356001600160401b0381111561411057600080fd5b610e3484828501613aca565b60006020828403121561412e57600080fd5b81356001600160401b0381111561414457600080fd5b610e3484828501613b3c565b60006020828403121561416257600080fd5b81516001600160401b0381111561417857600080fd5b610e3484828501613bae565b60006020828403121561419657600080fd5b6000610e348484613c29565b6000602082840312156141b457600080fd5b6000610e348484613c34565b6000602082840312156141d257600080fd5b6000610e348484613c8e565b6000602082840312156141f057600080fd5b6000610e348484613e87565b6000806040838503121561420f57600080fd5b600061421b8585613c34565b925050602061422c85828601613c34565b9150509250929050565b60006142428383614256565b505060200190565b60006142428383614406565b61425f81614d67565b82525050565b600061427082614d44565b61427a8185614d52565b935061428583614d32565b8060005b838110156142b357815161429d8882614236565b97506142a883614d32565b925050600101614289565b509495945050505050565b60006142c982614d44565b6142d38185614d52565b93506142de83614d32565b8060005b838110156142b35781516142f68882614236565b975061430183614d32565b9250506001016142e2565b600061431782614d48565b6143218185614d52565b935061432c83614d38565b8060005b838110156142b35761434182614e15565b61434b8882614236565b975061435683614d4c565b925050600101614330565b600061436c82614d44565b6143768185614d52565b935061438183614d32565b8060005b838110156142b3578151614399888261424a565b97506143a483614d32565b925050600101614385565b60006143ba82614d44565b6143c48185614d52565b93506143cf83614d32565b8060005b838110156142b35781516143e7888261424a565b97506143f283614d32565b9250506001016143d3565b61425f81614d72565b61425f81610c80565b61425f61441b82614d77565b610c80565b600061442b82614d44565b6144358185614d52565b9350614445818560208601614dd6565b61444e81614e21565b9093019392505050565b600061446382614d44565b61446d81856114d2565b935061447d818560208601614dd6565b9290920192915050565b61425f81614da9565b61425f81614db4565b61425f81614da3565b61425f81614dbf565b60006144b8600b83614d52565b6a21676f7665726e616e636560a81b815260200192915050565b60006144df600b83614d52565b6a10b1b7b73a3937b63632b960a91b815260200192915050565b6000614506601b83614d52565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061453f602083614d52565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000614578600483614d52565b631dd85b9d60e21b815260200192915050565b6000614598602183614d52565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006145db600683614d52565b65085d985d5b1d60d21b815260200192915050565b60006145fd603d83614d52565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547281527f616e73616374696f6e20657865637574696f6e2072657665727465642e000000602082015260400192915050565b600061465c600783614d52565b666e6f7420656f6160c81b815260200192915050565b600061467f600b83614d52565b6a08585d5d1a1bdc9a5e995960aa1b815260200192915050565b60006146a6602a83614d52565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b60006146f2603683614d52565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f81527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b602082015260400192915050565b600061474a601f83614d52565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b805160808084526000919084019061478e82826142be565b915050602083015184820360208601526147a882826143af565b915050604083015184820360408601526147c28282614420565b91505060608301516147d760608601826143fd565b509392505050565b805160808301906147f08482614256565b50602082015161480360208501826143fd565b5060408201516148166040850182614256565b5060608201516110cb60608501826143fd565b805160009060c084019061483d8582614406565b5060208301516148506020860182614490565b5060408301516148636040860182614256565b5060608301516148766060860182614256565b5060808301516148896080860182614406565b5060a083015184820360a08601526148a18282614420565b95945050505050565b60006148b6828561440f565b600482019150610e348284614458565b600061264f8284614458565b6020810161206c8284614256565b604081016148ee8285614256565b61264f6020830184614256565b606081016149098286614256565b6149166020830185614256565b610e346040830184614256565b608081016149318287614256565b61493e6020830186614256565b61494b6040830185614256565b6148a16060830184614256565b60a081016149668288614256565b6149736020830187614256565b61498060408301866143fd565b61498d6060830185614499565b61499a6080830184614499565b9695505050505050565b606081016149b28286614256565b6149bf6020830185614256565b610e346040830184614499565b60e081016149da828a614256565b6149e76020830189614256565b6149f46040830188614406565b614a0160608301876144a2565b614a0e60808301866144a2565b614a1b60a0830185614256565b614a2860c0830184614406565b98975050505050505050565b60408101614a428285614256565b61264f6020830184614406565b60208082528101612069818461430c565b60608082528101614a71818661430c565b90508181036020830152614a858185614361565b9050610e346040830184614256565b6020810161206c8284614406565b60808101614ab08287614406565b614abd6020830186614256565b614aca6040830185614256565b818103606083015261499a8184614776565b602080825281016120698184614420565b60608101614afb8286614487565b614b086020830185614406565b610e346040830184614406565b60808101614b238287614499565b614b306020830186614499565b614b3d6040830185614406565b6148a160608301846144a2565b6020808252810161206c816144ab565b6020808252810161206c816144d2565b6020808252810161206c816144f9565b6020808252810161206c81614532565b6020808252810161206c8161456b565b6020808252810161206c8161458b565b6020808252810161206c816145ce565b6020808252810161206c816145f0565b6020808252810161206c8161464f565b6020808252810161206c81614672565b6020808252810161206c81614699565b6020808252810161206c816146e5565b6020808252810161206c8161473d565b60e08082528101614c2b8187614829565b9050614c3a60208301866147df565b614c4760a08301856144a2565b6148a160c0830184614406565b60608101614c628286614406565b614c6f6020830185614499565b610e3460408301846144a2565b60a08101614c8a8288614406565b614c976020830187614406565b8181036040830152614ca98186614265565b9050614cb86060830185614256565b61499a6080830184614406565b6040518181016001600160401b0381118282101715614ce357600080fd5b604052919050565b60006001600160401b03821115614d0157600080fd5b5060209081020190565b60006001600160401b03821115614d2157600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b5490565b60010190565b90815260200190565b6001600160a01b031690565b600061206c82614d5b565b151590565b6001600160e01b03191690565b600061206c82614d67565b806114d281614e2b565b806114d281614e35565b600f0b90565b600061206c82614d8f565b600061206c82614d99565b600061206c82610c80565b82818337506000910152565b60005b83811015614df1578181015183820152602001614dd9565b838111156110cb5750506000910152565b600061206c614e1083610c80565b614d5b565b600061206c8254614e02565b601f01601f191690565b6003811061261a57fe5b6002811061261a57fe5b614e4881614d67565b811461261a57600080fd5b614e4881614d72565b614e4881610c80565b614e4881614d84565b614e4881614da356fea365627a7a72315820cb8eca6e517e958125a2ee4263d8e9568f9a1682666e26e24af91855f705e15b6c6578706572696d656e74616cf564736f6c63430005110040

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

000000000000000000000000d95b9c08285045393862607d6e5fc2d95b9ce129000000000000000000000000fd6e996c8960d521e3d2624cc4c6648cfa1217b7

-----Decoded View---------------
Arg [0] : _controller (address): 0xD95B9C08285045393862607D6e5FC2D95b9CE129
Arg [1] : _governance (address): 0xfd6e996C8960D521E3D2624cc4c6648cFA1217b7

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000d95b9c08285045393862607d6e5fc2d95b9ce129
Arg [1] : 000000000000000000000000fd6e996c8960d521e3d2624cc4c6648cfa1217b7


Deployed Bytecode Sourcemap

16906:68372:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;80824:283;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;80824:283:0;;;;;;;;:::i;:::-;;81677:291;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;81677:291:0;;;;;;;;:::i;18153:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18153:41:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;79659:271;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;79659:271:0;;;;;;;;:::i;84190:203::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;84190:203:0;;;;;;;;:::i;69906:108::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;69906:108:0;;;:::i;:::-;;;;;;;;83663:168;;8:9:-1;5:2;;;30:1;27;20:12;5:2;83663:168:0;;;:::i;17075:82::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17075:82:0;;;:::i;:::-;;;;;;;;18487:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18487:25:0;;;:::i;83839:168::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;83839:168:0;;;:::i;84574:701::-;;;;;;;;;:::i;79119:203::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;79119:203:0;;;;;;;;:::i;82631:166::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;82631:166:0;;;:::i;70506:554::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;70506:554:0;;;;;;;;:::i;82463:160::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;82463:160:0;;;:::i;82275:180::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;82275:180:0;;;:::i;79938:289::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;79938:289:0;;;;;;;;:::i;71731:517::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;71731:517:0;;;:::i;:::-;;;;;;;;70139:289;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;70139:289:0;;;;;;;;:::i;18423:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18423:25:0;;;:::i;81396:273::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;81396:273:0;;;;;;;;:::i;81976:291::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;81976:291:0;;;;;;;;:::i;78532:90::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;78532:90:0;;;:::i;83151:164::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;83151:164:0;;;:::i;18245:34::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18245:34:0;;;;;;;;:::i;:::-;;;;;;;;;;80235:278;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;80235:278:0;;;;;;;;:::i;71136:461::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;71136:461:0;;;:::i;17897:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17897:31:0;;;:::i;18521:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18521:35:0;;;:::i;78793:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;78793:155:0;;;;;;;;:::i;17935:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17935:39:0;;;;;;;;:::i;82975:168::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;82975:168:0;;;:::i;80521:295::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;80521:295:0;;;;;;;;:::i;78630:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;78630:155:0;;;;;;;;:::i;84015:167::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;84015:167:0;;;;;;;;:::i;83323:162::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;83323:162:0;;;:::i;18201:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18201:37:0;;;;;;;;:::i;:::-;;;;;;;;;;;;18327:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18327:40:0;;;;;;;;:::i;71605:118::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;71605:118:0;;;:::i;82805:162::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;82805:162:0;;;:::i;78956:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;78956:155:0;;;;;;;;:::i;83493:162::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;83493:162:0;;;:::i;18569:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18569:35:0;;;:::i;70022:34::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;70022:34:0;;;:::i;18286:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18286:34:0;;;;;;;;:::i;18611:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18611:47:0;;;:::i;17981:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17981:29:0;;;;;;;;:::i;79330:321::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;79330:321:0;;;;;;;;:::i;18064:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18064:39:0;;;;;;;;:::i;:::-;;;;;;;;;18110:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18110:36:0;;;;;;;;:::i;:::-;;;;;;;;;;18374:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18374:40:0;;;;;;;;:::i;18455:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18455:25:0;;;:::i;81115:273::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;81115:273:0;;;;;;;;:::i;80824:283::-;80929:10;;-1:-1:-1;;;;;80929:10:0;80915;:24;;:52;;-1:-1:-1;80957:10:0;;-1:-1:-1;;;;;80957:10:0;80943;:24;80915:52;80907:76;;;;-1:-1:-1;;;80907:76:0;;;;;;;;;;;;;;;;;80997:6;80992:108;81011:15;:22;81007:1;:26;80992:108;;;81051:14;81071:15;81087:1;81071:18;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;81051:39:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;81051:39:0;;;-1:-1:-1;;;;;;81051:39:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;81051:39:0;-1:-1:-1;;;;81051:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;81051:39:0;;;-1:-1:-1;;;81051:39:0;;;;;;;-1:-1:-1;;;;;;81051:39:0;;;;;;;;;;;;;;;;81035:3;80992:108;;;;80824:283;:::o;81677:291::-;81786:10;;-1:-1:-1;;;;;81786:10:0;81772;:24;;:52;;-1:-1:-1;81814:10:0;;-1:-1:-1;;;;;81814:10:0;81800;:24;81772:52;81764:76;;;;-1:-1:-1;;;81764:76:0;;;;;;;;;81854:6;81849:112;81868:16;:23;81864:1;:27;81849:112;;;81909:16;81931;81948:1;81931:19;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;81909:42:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;81909:42:0;;;-1:-1:-1;;;;;81909:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;81893:3;81849:112;;18153:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18153:41:0;;;;-1:-1:-1;18153:41:0;;;;;;;;;:::o;79659:271::-;79758:10;;-1:-1:-1;;;;;79758:10:0;79744;:24;;:52;;-1:-1:-1;79786:10:0;;-1:-1:-1;;;;;79786:10:0;79772;:24;79744:52;79736:76;;;;-1:-1:-1;;;79736:76:0;;;;;;;;;79826:6;79821:102;79836:24;;;79821:102;;;79878:12;79896:13;;79910:1;79896:16;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;79878:35:0;;;;;;;;;;-1:-1:-1;;;;;;79878:35:0;-1:-1:-1;;;;;79878:35:0;;;;;;;;;;79862:3;79821:102;;;;79659:271;;:::o;84190:203::-;84286:10;;-1:-1:-1;;;;;84286:10:0;84272;:24;;:52;;-1:-1:-1;84314:10:0;;-1:-1:-1;;;;;84314:10:0;84300;:24;84272:52;84264:76;;;;-1:-1:-1;;;84264:76:0;;;;;;;;;84351:15;:34;84190:203::o;69906:108::-;69974:32;;;;;;;;;;;;;;;;;69906:108;;:::o;83663:168::-;83737:10;;-1:-1:-1;;;;;83737:10:0;83723;:24;;:52;;-1:-1:-1;83765:10:0;;-1:-1:-1;;;;;83765:10:0;83751;:24;83723:52;83715:76;;;;-1:-1:-1;;;83715:76:0;;;;;;;;;83800:23;83807:16;;83800:23;:::i;:::-;83663:168::o;17075:82::-;17114:42;17075:82;:::o;18487:25::-;;;-1:-1:-1;;;;;18487:25:0;;:::o;83839:168::-;83913:10;;-1:-1:-1;;;;;83913:10:0;83899;:24;;:52;;-1:-1:-1;83941:10:0;;-1:-1:-1;;;;;83941:10:0;83927;:24;83899:52;83891:76;;;;-1:-1:-1;;;83891:76:0;;;;;;;;;83976:23;83983:16;;83976:23;:::i;84574:701::-;84745:10;;84698:12;;-1:-1:-1;;;;;84745:10:0;84731;:24;84723:48;;;;-1:-1:-1;;;84723:48:0;;;;;;;;;84784:21;84828:9;84822:23;84849:1;84822:28;84818:179;;;-1:-1:-1;84878:4:0;84818:179;;;84966:9;84950:27;;;;;;84980:4;84926:59;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;84926:59:0;;;84915:70;;84818:179;85070:12;85084:23;85111:6;-1:-1:-1;;;;;85111:11:0;85129:5;85136:8;85111:34;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;85069:76:0;;;;85164:7;85156:81;;;;-1:-1:-1;;;85156:81:0;;;;;;;;;85257:10;-1:-1:-1;;;84574:701:0;;;;;;;:::o;79119:203::-;79215:10;;-1:-1:-1;;;;;79215:10:0;79201;:24;;:52;;-1:-1:-1;79243:10:0;;-1:-1:-1;;;;;79243:10:0;79229;:24;79201:52;79193:76;;;;-1:-1:-1;;;79193:76:0;;;;;;;;;79278:16;:36;;-1:-1:-1;;;;;;79278:36:0;-1:-1:-1;;;;;79278:36:0;;;;;;;;;;79119:203::o;82631:166::-;82704:10;;-1:-1:-1;;;;;82704:10:0;82690;:24;;:52;;-1:-1:-1;82732:10:0;;-1:-1:-1;;;;;82732:10:0;82718;:24;82690:52;82682:76;;;;-1:-1:-1;;;82682:76:0;;;;;;;;;82767:22;82774:15;;82767:22;:::i;70506:554::-;70581:10;;-1:-1:-1;;;;;70581:10:0;70567;:24;70559:48;;;;-1:-1:-1;;;70559:48:0;;;;;;;;;70635:37;;-1:-1:-1;;;70635:37:0;;70616:16;;17114:42;;70635:22;;:37;;70666:4;;70635:37;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;70635:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;70635:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;70635:37:0;;;;;;;;;70616:56;;70696:7;70685:8;:18;70681:65;;;70728:8;70718:18;;70681:65;70756:12;70771:47;18653:5;70771:26;70783:13;;70771:7;:11;;:26;;;;:::i;:::-;:30;:47;:30;:47;:::i;:::-;70858:10;;70846:45;;-1:-1:-1;;;70846:45:0;;70756:62;;-1:-1:-1;70829:14:0;;-1:-1:-1;;;;;70858:10:0;;;;70846:30;;:45;;17114:42;;70846:45;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;70846:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;70846:45:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;70846:45:0;;;;;;;;;70829:62;-1:-1:-1;;;;;;70908:20:0;;70900:39;;;;-1:-1:-1;;;70900:39:0;;;;;;;;;71000:52;71026:6;71034:17;:7;71046:4;71034:17;:11;:17;:::i;:::-;17114:42;;71000:52;;:25;:52;:::i;:::-;70506:554;;;;:::o;82463:160::-;82533:10;;-1:-1:-1;;;;;82533:10:0;82519;:24;;:52;;-1:-1:-1;82561:10:0;;-1:-1:-1;;;;;82561:10:0;82547;:24;82519:52;82511:76;;;;-1:-1:-1;;;82511:76:0;;;;;;;;;82596:19;82603:12;;82596:19;:::i;82275:180::-;82355:10;;-1:-1:-1;;;;;82355:10:0;82341;:24;;:52;;-1:-1:-1;82383:10:0;;-1:-1:-1;;;;;82383:10:0;82369;:24;82341:52;82333:76;;;;-1:-1:-1;;;82333:76:0;;;;;;;;;82418:29;82425:22;;82418:29;:::i;79938:289::-;80046:10;;-1:-1:-1;;;;;80046:10:0;80032;:24;;:52;;-1:-1:-1;80074:10:0;;-1:-1:-1;;;;;80074:10:0;80060;:24;80032:52;80024:76;;;;-1:-1:-1;;;80024:76:0;;;;;;;;;80114:6;80109:111;80128:16;:23;80124:1;:27;80109:111;;;80169:15;80190:16;80207:1;80190:19;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;80169:41:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;80169:41:0;;;-1:-1:-1;;;;;80169:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;80153:3;80109:111;;71731:517;71766:22;71807:10;71821:9;71807:23;71799:43;;;;-1:-1:-1;;;71799:43:0;;;;;;;;;71868:37;;-1:-1:-1;;;71868:37:0;;71853:12;;17114:42;;71868:22;;:37;;71899:4;;71868:37;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;71868:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;71868:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;71868:37:0;;;;;;;;;71853:52;;71914:19;:17;:19::i;:::-;71960:37;;-1:-1:-1;;;71960:37:0;;71942:15;;71960:50;;72002:7;;17114:42;;71960:22;;:37;;71991:4;;71960:37;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;71960:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;71960:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;71960:37:0;;;;;;;;;:41;:50;:41;:50;:::i;:::-;71942:68;-1:-1:-1;72025:14:0;;72021:220;;72052:24;72079:52;18653:5;72079:31;72094:15;;72079:10;:14;;:31;;;;:::i;:52::-;72052:79;-1:-1:-1;72142:55:0;17114:42;72168:10;72052:79;72142:55;:25;:55;:::i;:::-;72215:16;-1:-1:-1;72208:23:0;;-1:-1:-1;;72208:23:0;72021:220;71731:517;;;:::o;70139:289::-;70240:10;;70190:15;;-1:-1:-1;;;;;70240:10:0;70226;:24;70218:48;;;;-1:-1:-1;;;70218:48:0;;;;;;;;;17114:42;-1:-1:-1;;;;;70285:23:0;;;;70277:40;;;;-1:-1:-1;;;70277:40:0;;;;;;;;;70338:31;;-1:-1:-1;;;70338:31:0;;-1:-1:-1;;;;;70338:16:0;;;;;:31;;70363:4;;70338:31;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;70338:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;70338:31:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;70338:31:0;;;;;;;;;70400:10;;70328:41;;-1:-1:-1;70380:40:0;;-1:-1:-1;;;;;70380:19:0;;;;70400:10;70328:41;70380:40;:19;:40;:::i;:::-;70139:289;;;:::o;18423:25::-;;;-1:-1:-1;;;;;18423:25:0;;:::o;81396:273::-;81496:10;;-1:-1:-1;;;;;81496:10:0;81482;:24;;:52;;-1:-1:-1;81524:10:0;;-1:-1:-1;;;;;81524:10:0;81510;:24;81482:52;81474:76;;;;-1:-1:-1;;;81474:76:0;;;;;;;;;81564:6;81559:103;81578:13;:20;81574:1;:24;81559:103;;;81616:13;81635;81649:1;81635:16;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;81616:36:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;81616:36:0;;;-1:-1:-1;;;;;81616:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;81600:3;81559:103;;81976:291;82085:10;;-1:-1:-1;;;;;82085:10:0;82071;:24;;:52;;-1:-1:-1;82113:10:0;;-1:-1:-1;;;;;82113:10:0;82099;:24;82071:52;82063:76;;;;-1:-1:-1;;;82063:76:0;;;;;;;;;82153:6;82148:112;82167:16;:23;82163:1;:27;82148:112;;;82208:16;82230;82247:1;82230:19;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;82208:42:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;82208:42:0;;;-1:-1:-1;;;;;82208:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;82192:3;82148:112;;78532:90;78574:7;78599:15;:13;:15::i;:::-;78592:22;;78532:90;:::o;83151:164::-;83223:10;;-1:-1:-1;;;;;83223:10:0;83209;:24;;:52;;-1:-1:-1;83251:10:0;;-1:-1:-1;;;;;83251:10:0;83237;:24;83209:52;83201:76;;;;-1:-1:-1;;;83201:76:0;;;;;;;;;83286:21;83293:14;;83286:21;:::i;18245:34::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18245:34:0;;;;-1:-1:-1;18245:34:0;;;;;;:::o;80235:278::-;80338:10;;-1:-1:-1;;;;;80338:10:0;80324;:24;;:52;;-1:-1:-1;80366:10:0;;-1:-1:-1;;;;;80366:10:0;80352;:24;80324:52;80316:76;;;;-1:-1:-1;;;80316:76:0;;;;;;;;;80406:6;80401:105;80420:14;:21;80416:1;:25;80401:105;;;80459:13;80478:14;80493:1;80478:17;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;80459:37:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;80459:37:0;;;-1:-1:-1;;;;;;80459:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;80459:37:0;-1:-1:-1;;;;;;80459:37:0;;;;;;;;;80443:3;80401:105;;71136:461;71225:10;;71177:15;;-1:-1:-1;;;;;71225:10:0;71211;:24;;:52;;-1:-1:-1;71253:10:0;;-1:-1:-1;;;;;71253:10:0;71239;:24;71211:52;:80;;;-1:-1:-1;71281:10:0;;-1:-1:-1;;;;;71281:10:0;71267;:24;71211:80;71203:104;;;;-1:-1:-1;;;71203:104:0;;;;;;;;;71328:37;;-1:-1:-1;;;71328:37:0;;17114:42;;71328:22;;:37;;71359:4;;71328:37;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;71328:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;71328:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;71328:37:0;;;;;;;;;71405:10;;71393:45;;-1:-1:-1;;;71393:45:0;;71318:47;;-1:-1:-1;71376:14:0;;-1:-1:-1;;;;;71405:10:0;;;;71393:30;;:45;;17114:42;;71393:45;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;71393:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;71393:45:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;71393:45:0;;;;;;;;;71376:62;-1:-1:-1;;;;;;71455:20:0;;71447:39;;;;-1:-1:-1;;;71447:39:0;;;;;;;;;71547:42;17114;71573:6;71581:7;71547:42;:25;:42;:::i;:::-;71136:461;;:::o;17897:31::-;;;-1:-1:-1;;;;;17897:31:0;;:::o;18521:35::-;;;;:::o;78793:155::-;78879:10;;-1:-1:-1;;;;;78879:10:0;78865;:24;78857:48;;;;-1:-1:-1;;;78857:48:0;;;;;;;;;78916:10;:24;;-1:-1:-1;;;;;;78916:24:0;-1:-1:-1;;;;;78916:24:0;;;;;;;;;;78793:155::o;17935:39::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17935:39:0;;-1:-1:-1;17935:39:0;:::o;82975:168::-;83049:10;;-1:-1:-1;;;;;83049:10:0;83035;:24;;:52;;-1:-1:-1;83077:10:0;;-1:-1:-1;;;;;83077:10:0;83063;:24;83035:52;83027:76;;;;-1:-1:-1;;;83027:76:0;;;;;;;;;83112:23;83119:16;;83112:23;:::i;80521:295::-;80632:10;;-1:-1:-1;;;;;80632:10:0;80618;:24;;:52;;-1:-1:-1;80660:10:0;;-1:-1:-1;;;;;80660:10:0;80646;:24;80618:52;80610:76;;;;-1:-1:-1;;;80610:76:0;;;;;;;;;80700:6;80695:114;80714:17;:24;80710:1;:28;80695:114;;;80756:16;80778:17;80796:1;80778:20;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;80756:43:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;80756:43:0;;;-1:-1:-1;;;;;80756:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;80740:3;80695:114;;78630:155;78716:10;;-1:-1:-1;;;;;78716:10:0;78702;:24;78694:48;;;;-1:-1:-1;;;78694:48:0;;;;;;;;;78753:10;:24;;-1:-1:-1;;;;;;78753:24:0;-1:-1:-1;;;;;78753:24:0;;;;;;;;;;78630:155::o;84015:167::-;84107:10;;-1:-1:-1;;;;;84107:10:0;84093;:24;84085:48;;;;-1:-1:-1;;;84085:48:0;;;;;;;;;84144:13;:30;84015:167::o;83323:162::-;83394:10;;-1:-1:-1;;;;;83394:10:0;83380;:24;;:52;;-1:-1:-1;83422:10:0;;-1:-1:-1;;;;;83422:10:0;83408;:24;83380:52;83372:76;;;;-1:-1:-1;;;83372:76:0;;;;;;;;;83457:20;83464:13;;83457:20;:::i;18201:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18201:37:0;;;;-1:-1:-1;18201:37:0;;;;-1:-1:-1;;;18201:37:0;;;;;;;;;;-1:-1:-1;;;18201:37:0;;;;;:::o;18327:40::-;;;;;;;;;;71605:118;71678:37;;-1:-1:-1;;;71678:37:0;;71651:7;;17114:42;;71678:22;;:37;;71709:4;;71678:37;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;71678:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;71678:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;71678:37:0;;;;;;;;82805:162;82876:10;;-1:-1:-1;;;;;82876:10:0;82862;:24;;:52;;-1:-1:-1;82904:10:0;;-1:-1:-1;;;;;82904:10:0;82890;:24;82862:52;82854:76;;;;-1:-1:-1;;;82854:76:0;;;;;;;;;82939:20;82946:13;;82939:20;:::i;78956:155::-;79042:10;;-1:-1:-1;;;;;79042:10:0;79028;:24;79020:48;;;;-1:-1:-1;;;79020:48:0;;;;;;;;;79079:10;:24;;-1:-1:-1;;;;;;79079:24:0;-1:-1:-1;;;;;79079:24:0;;;;;;;;;;78956:155::o;83493:162::-;83564:10;;-1:-1:-1;;;;;83564:10:0;83550;:24;;:52;;-1:-1:-1;83592:10:0;;-1:-1:-1;;;;;83592:10:0;83578;:24;83550:52;83542:76;;;;-1:-1:-1;;;83542:76:0;;;;;;;;;83627:20;83634:13;;83627:20;:::i;18569:35::-;;;;:::o;18286:34::-;;;;;;;;;;18611:47;18653:5;18611:47;:::o;17981:29::-;;;;;;;;;;79330:321;79449:10;;-1:-1:-1;;;;;79449:10:0;79435;:24;;:52;;-1:-1:-1;79477:10:0;;-1:-1:-1;;;;;79477:10:0;79463;:24;79435:52;79427:76;;;;-1:-1:-1;;;79427:76:0;;;;;;;;;79517:6;79512:132;79527:34;;;79512:132;;;79579:22;79607:23;;79631:1;79607:26;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;79579:55:0;;;;;;;;;;-1:-1:-1;;;;;;79579:55:0;-1:-1:-1;;;;;79579:55:0;;;;;;;;;;79563:3;79512:132;;18064:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18064:39:0;;;;-1:-1:-1;18064:39:0;;:::o;18110:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18110:36:0;;;;-1:-1:-1;18110:36:0;;;;;;:::o;18374:40::-;;;;;;;;;;18455:25;;;-1:-1:-1;;;;;18455:25:0;;:::o;81115:273::-;81215:10;;-1:-1:-1;;;;;81215:10:0;81201;:24;;:52;;-1:-1:-1;81243:10:0;;-1:-1:-1;;;;;81243:10:0;81229;:24;81201:52;81193:76;;;;-1:-1:-1;;;81193:76:0;;;;;;;;;81283:6;81278:103;81297:13;:20;81293:1;:24;81278:103;;;81335:13;81354;81368:1;81354:16;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;81335:36:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;81335:36:0;;;-1:-1:-1;;;;;81335:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;81319:3;81278:103;;5195:471;5253:7;5498:6;5494:47;;-1:-1:-1;5528:1:0;5521:8;;5494:47;5565:5;;;5569:1;5565;:5;:1;5589:5;;;;;:10;5581:56;;;;-1:-1:-1;;;5581:56:0;;;;;;;;;5657:1;-1:-1:-1;5195:471:0;;;;;:::o;6134:132::-;6192:7;6219:39;6223:1;6226;6219:39;;;;;;;;;;;;;;;;;:3;:39::i;4279:136::-;4337:7;4364:43;4368:1;4371;4364:43;;;;;;;;;;;;;;;;;:3;:43::i;13048:176::-;13157:58;;13131:85;;13150:5;;-1:-1:-1;;;13180:23:0;13157:58;;13205:2;;13209:5;;13157:58;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;13157:58:0;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;13157:58:0;;;179:29:-1;;;;160:49;;;13131:18:0;:85::i;72258:1343::-;72308:22;:29;:33;72305:55;;72343:17;:15;:17::i;:::-;72383:12;:19;72371:116;72404:3;;72371:116;;72437:12;72452:1;72450;:3;72437:17;;;;;;;;;;;;;;;;;72425:52;;;-1:-1:-1;;;72425:52:0;;;;-1:-1:-1;;;;;72437:17:0;;;;72425:50;;:52;;;;;;;;;;72437:17;;72425:52;;;5:2:-1;;;;30:1;27;20:12;5:2;72425:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;72409:3:0;;;;-1:-1:-1;72371:116:0;;-1:-1:-1;72371:116:0;;-1:-1:-1;72509:15:0;:22;72497:102;72533:3;;72497:102;;72554:35;72568:15;72586:1;72584;:3;72568:20;;;;;;;;;;;;;;;;;72554:35;;;;;;;;;72568:20;;;;;72554:35;;-1:-1:-1;;;;;72554:35:0;;;;;;;;;;;;;;;;;;:13;:35::i;:::-;-1:-1:-1;;72538:3:0;72497:102;;;-1:-1:-1;72621:13:0;:20;72609:97;72643:3;;72609:97;;72664:32;72677:13;72693:1;72691;:3;72677:18;;;;;;;;;;;;;;;;;72664:32;;;;;;;;72677:18;;;;;;;72664:32;;-1:-1:-1;;;;;72664:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:32::i;:::-;-1:-1:-1;;72648:3:0;72609:97;;;-1:-1:-1;72728:16:0;:23;72716:200;72753:3;;72716:200;;72774:132;72789:16;72808:1;72806;:3;72789:21;;;;;;;;;;;;;;;;;;;;;:26;72817:16;:21;;-1:-1:-1;;;;;72789:26:0;;;;-1:-1:-1;;72834:3:0;;;72817:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;-1:-1:-1;;;;;72817:28:0;72847:16;72866:1;72864;:3;72847:21;;;;;;;;;;;;;;;;;;:28;;;;;;;;;;-1:-1:-1;;;;;72847:28:0;72877:16;72896:1;72894;:3;72877:21;;;;;;;;;;;;;;;;:28;:21;;;;;:28;;-1:-1:-1;;;;;72877:28:0;72774:14;:132::i;:::-;-1:-1:-1;;72758:3:0;72716:200;;;-1:-1:-1;72938:14:0;:21;72926:94;72961:3;;72926:94;;72982:28;72990:14;73007:1;73005;:3;72990:19;;;;;;;;;;;;;;;;;72982:28;;;;;;;;72990:19;;;;;;;;72982:28;;-1:-1:-1;;;;;72982:28:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;72982:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;72982:28:0;;;;;;;;;;;;;:7;:28::i;:::-;-1:-1:-1;;72966:3:0;72926:94;;;-1:-1:-1;73042:13:0;:20;73030:162;73064:3;;73030:162;;73085:97;73099:13;73115:1;73113;:3;73099:18;;;;;;;;;;;;;;;;;;;;;:26;73127:13;:18;;-1:-1:-1;;;;;73099:26:0;;;;-1:-1:-1;;73141:3:0;;;73127:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;;;;73127:27:0;73156:13;73172:1;73170;:3;73156:18;;;;;;;;;;;;;;;;:25;:18;;;;;:25;;-1:-1:-1;;;;;73156:25:0;73085:13;:97::i;:::-;-1:-1:-1;;73069:3:0;73030:162;;;-1:-1:-1;73214:16:0;:23;73202:104;73239:3;;73202:104;;73260:36;73274:16;73293:1;73291;:3;73274:21;;;;;;;;;;;;;;;;;73260:36;;;;;;;;73274:21;;;;;;;73260:36;;-1:-1:-1;;;;;73260:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:36::i;:::-;-1:-1:-1;;73244:3:0;73202:104;;;-1:-1:-1;73328:13:0;:20;73316:162;73350:3;;73316:162;;73371:97;73385:13;73401:1;73399;:3;73385:18;;;;;;;;;;;;;;;;;;;;;:26;73413:13;:18;;-1:-1:-1;;;;;73385:26:0;;;;-1:-1:-1;;73427:3:0;;;73413:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;;;;73413:27:0;73442:13;73458:1;73456;:3;73442:18;;;;;;;73371:97;-1:-1:-1;;73355:3:0;73316:162;;;-1:-1:-1;73500:16:0;:23;73488:104;73525:3;;73488:104;;73546:36;73560:16;73579:1;73577;:3;73560:21;;;;;;;73546:36;-1:-1:-1;;73530:3:0;73488:104;;;;72258:1343::o;6796:345::-;6882:7;6984:12;6977:5;6969:28;;;;-1:-1:-1;;;6969:28:0;;;;;;;;;;;7008:9;7024:1;7020;:5;;;;;;;-1:-1:-1;;6796:345:0;;;;;;:::o;4752:192::-;4838:7;4874:12;4866:6;;;;4858:29;;;;-1:-1:-1;;;4858:29:0;;;;;;;;;;-1:-1:-1;;;4910:5:0;;;4752:192::o;15087:1114::-;15691:27;15699:5;-1:-1:-1;;;;;15691:25:0;;:27::i;:::-;15683:71;;;;-1:-1:-1;;;15683:71:0;;;;;;;;;15828:12;15842:23;15877:5;-1:-1:-1;;;;;15869:19:0;15889:4;15869:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;15827:67:0;;;;15913:7;15905:52;;;;-1:-1:-1;;;15905:52:0;;;;;;;;;15974:17;;:21;15970:224;;16116:10;16105:30;;;;;;;;;;;;;;16097:85;;;;-1:-1:-1;;;16097:85:0;;;;;;;;75918:269;75981:16;;76064:82;;-1:-1:-1;;;76064:82:0;;-1:-1:-1;;;;;75981:16:0;;;;75963:57;;75981:16;;;;76064:58;;:82;;75981:16;;76064:82;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;76064:82:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;76064:82:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;76064:82:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;76064:82:0;;;;;;;;;76165:4;75963:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;75963:216:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;74668:1242:0;74773:20;;74766:53;;-1:-1:-1;;;74766:53:0;;74748:15;;-1:-1:-1;;;;;74766:38:0;;;;:53;;74813:4;;74766:53;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;74766:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;74766:53:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;74766:53:0;;;;;;;;;74748:71;-1:-1:-1;74831:11:0;;74828:1075;;74855:14;74881:15;:20;;;-1:-1:-1;;;;;74872:39:0;;:41;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;74872:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;74872:41:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;74872:41:0;;;;;;;;;74931:20;;74855:58;;-1:-1:-1;74924:51:0;;-1:-1:-1;;;;;74924:40:0;74855:58;74973:1;74924:51;:40;:51;:::i;:::-;74993:20;;74986:57;;-1:-1:-1;;;;;74986:40:0;75027:6;75035:7;74986:57;:40;:57;:::i;:::-;75056:14;75082:15;:20;;;-1:-1:-1;;;;;75073:40:0;;:42;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;75073:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;75073:42:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;75073:42:0;;;;;;;;;75056:59;;75127:23;75166:6;-1:-1:-1;;;;;75156:31:0;;75188:6;75156:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;75156:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;75156:39:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;75156:39:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;75156:39:0;;;;;;;;;75126:69;;;;75208:30;75255:6;:13;75241:28;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;75241:28:0;-1:-1:-1;75208:61:0;-1:-1:-1;75282:18:0;;75311:169;75331:6;:13;75327:1;:17;75311:169;;;75380:15;:24;;;-1:-1:-1;;;;;75367:37:0;:6;75374:1;75367:9;;;;;;;;;;;;;;-1:-1:-1;;;;;75367:37:0;;75364:105;;;75434:1;75421:14;;75450:5;;75364:105;75346:3;;75311:169;;;;75502:6;-1:-1:-1;;;;;75492:26:0;;75531:6;75558:4;75593;75623:259;;;;;;;;75672:6;75623:259;;;;75710:13;75623:259;;;;75759:48;75809:7;75818:10;75748:81;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;75748:81:0;;;75623:259;;;;75863:5;75623:259;;;;;75492:401;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;75492:401:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;75492:401:0;;;;74828:1075;;;;;74668:1242;;:::o;76195:451::-;76297:22;;;;76290:55;;-1:-1:-1;;;76290:55:0;;76272:15;;-1:-1:-1;;;;;76290:40:0;;;;:55;;76339:4;;76290:55;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;76290:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;76290:55:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;76290:55:0;;;;;;;;;76272:73;-1:-1:-1;76357:11:0;;76354:285;;76424:19;;76388:22;;;;76381:66;;-1:-1:-1;;;;;76381:42:0;;;;76424:19;76381:66;:42;:66;:::i;:::-;76501:19;;76465:22;;;;76458:72;;-1:-1:-1;;;;;76458:42:0;;;;76522:7;76458:72;:42;:72;:::i;:::-;76553:19;;76609:16;;;;;76541:88;;-1:-1:-1;;;76541:88:0;;-1:-1:-1;;;;;76541:58:0;;;;;;:88;;76600:7;;76609:16;76553:19;;76541:88;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;76541:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;76541:88:0;;;;76195:451;;:::o;77324:657::-;77450:38;;-1:-1:-1;;;77450:38:0;;77432:15;;-1:-1:-1;;;;;77450:23:0;;;;;:38;;77482:4;;77450:38;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;77450:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;77450:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;77450:38:0;;;;;;;;;77432:56;-1:-1:-1;77500:11:0;;77497:477;;77525:37;-1:-1:-1;;;;;77525:25:0;;77551:7;77560:1;77525:37;:25;:37;:::i;:::-;77573:43;-1:-1:-1;;;;;77573:25:0;;77599:7;77608;77573:43;:25;:43;:::i;:::-;-1:-1:-1;;;;;77629:39:0;;;77683:7;77724;77765;77806:1;;77886:4;77921:13;:3;77929:4;77921:13;:7;:13;:::i;:::-;77629:335;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;77629:335:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;77629:335:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;77629:335:0;;;;;;;;;;;77497:477;77324:657;;;;;:::o;76654:662::-;76751:22;;76744:55;;-1:-1:-1;;;76744:55:0;;76726:15;;-1:-1:-1;;;;;76744:40:0;;;;:55;;76793:4;;76744:55;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;76744:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;76744:55:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;76744:55:0;;;;;;;;;76726:73;-1:-1:-1;76811:11:0;;76808:495;;76878:19;;;;76842:22;;76835:66;;-1:-1:-1;;;;;76835:42:0;;;;76899:1;76835:66;:42;:66;:::i;:::-;76955:19;;;;76919:22;;76912:72;;-1:-1:-1;;;;;76912:42:0;;;;76976:7;76912:72;:42;:72;:::i;:::-;76998:14;:25;;;76995:299;;;77050:14;:19;;;-1:-1:-1;;;;;77038:52:0;;77091:14;:16;;;77109:14;:16;;;77127:7;77136:1;77038:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;77038:100:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;77038:100:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;77038:100:0;;;;;;;;;;76995:299;;;77193:14;:19;;;-1:-1:-1;;;;;77181:41:0;;77223:14;:16;;;77241:14;:16;;;77259:7;77268:1;77181:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;77181:89:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;77181:89:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;77181:89:0;;;;;;;;77989:535;78102:41;;-1:-1:-1;;;78102:41:0;;78084:15;;-1:-1:-1;;;;;78102:26:0;;;;;:41;;78137:4;;78102:41;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;78102:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;78102:41:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;78102:41:0;;;;;;;;;78084:59;-1:-1:-1;78155:11:0;;78152:365;;78180:40;-1:-1:-1;;;;;78180:28:0;;78209:7;78218:1;78180:40;:28;:40;:::i;:::-;78231:46;-1:-1:-1;;;;;78231:28:0;;78260:7;78269;78231:46;:28;:46;:::i;:::-;78314:16;;;78328:1;78314:16;;;78290:21;78314:16;;;;;78290:21;78314:16;;;;;105:10:-1;78314:16:0;88:34:-1;136:17;;-1:-1;78314:16:0;78290:40;;78351:8;78341:4;78346:1;78341:7;;;;;;;;;;;;;:18;-1:-1:-1;;;;;78341:18:0;;;-1:-1:-1;;;;;78341:18:0;;;;;78380:9;78370:4;78375:1;78370:7;;;;;;;;-1:-1:-1;;;;;78370:19:0;;;:7;;;;;;;;;:19;78402:48;;;78451:7;78468:1;78472:4;78486;78493:13;:3;78501:4;78493:13;:7;:13;:::i;:::-;78402:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;78402:105:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;78402:105:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;78402:105:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;78402:105:0;;;;;;;;73609:1051;73714:23;;;;73707:56;;-1:-1:-1;;;73707:56:0;;73689:15;;-1:-1:-1;;;;;73707:41:0;;;;:56;;73757:4;;73707:56;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;73707:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;73707:56:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;73707:56:0;;;;;;;;;73689:74;-1:-1:-1;73775:11:0;;73772:875;;73799:14;73825:15;:20;;;-1:-1:-1;;;;;73816:39:0;;:41;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;73816:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;73816:41:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;73816:41:0;;;;;;;;;73875:23;;;;73799:58;;-1:-1:-1;73868:54:0;;-1:-1:-1;;;;;73868:43:0;73799:58;73920:1;73868:54;:43;:54;:::i;:::-;73940:23;;;;73933:60;;-1:-1:-1;;;;;73933:43:0;73977:6;73985:7;73933:60;:43;:60;:::i;:::-;74014:6;-1:-1:-1;;;;;74004:22:0;;74039:301;;;;;;;;74092:15;:20;;;-1:-1:-1;;;;;74083:40:0;;:42;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;74083:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;74083:42:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;74083:42:0;;;;;;;;;74039:301;;;;74146:27;74039:301;;;;74197:15;:23;;;-1:-1:-1;;;;;74039:301:0;;;;;74245:15;:24;;;-1:-1:-1;;;;;74039:301:0;;;;;74292:7;74039:301;;;;;;;;;;;;;;;;;;;74353:194;;;;;;;;74409:4;-1:-1:-1;;;;;74353:194:0;;;;;74450:5;74353:194;;;;;;74489:4;-1:-1:-1;;;;;74353:194:0;;;;;74528:5;74353:194;;;;;74560:1;74597:13;74605:4;74597:3;:7;;:13;;;;:::i;:::-;74004:633;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;74004:633:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;74004:633:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;74004:633:0;;;;;;;;10062:619;10122:4;10590:20;;10433:66;10630:23;;;;;;:42;;-1:-1:-1;;10657:15:0;;;10622:51;-1:-1:-1;;10062:619:0:o;13444:621::-;13814:10;;;13813:62;;-1:-1:-1;13830:39:0;;-1:-1:-1;;;13830:39:0;;-1:-1:-1;;;;;13830:15:0;;;;;:39;;13854:4;;13861:7;;13830:39;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13830:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13830:39:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13830:39:0;;;;;;;;;:44;13813:62;13805:152;;;;-1:-1:-1;;;13805:152:0;;;;;;;;;13994:62;;13968:89;;13987:5;;-1:-1:-1;;;14017:22:0;13994:62;;14041:7;;14050:5;;13994:62;;;;3823:181;3881:7;3913:5;;;3937:6;;;;3929:46;;;;-1:-1:-1;;;3929:46:0;;;;;;;;16906:68372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;16906:68372:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16906:68372:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16906:68372:0;;;;;;;;-1:-1:-1;;;;;;16906:68372:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16906:68372:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16906:68372:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16906:68372:0;;;;;;;5:130:-1;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;301:352;;;431:3;424:4;416:6;412:17;408:27;398:2;;449:1;446;439:12;398:2;-1:-1;469:20;;-1:-1;;;;;498:30;;495:2;;;541:1;538;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;618:4;610:6;606:17;596:8;592:32;589:41;586:2;;;643:1;640;633:12;586:2;391:262;;;;;;679:722;;807:3;800:4;792:6;788:17;784:27;774:2;;825:1;822;815:12;774:2;855:6;849:13;877:80;892:64;949:6;892:64;;;877:80;;;868:89;;974:5;999:6;992:5;985:21;1029:4;1021:6;1017:17;1007:27;;1051:4;1046:3;1042:14;1035:21;;1104:6;1151:3;1143:4;1135:6;1131:17;1126:3;1122:27;1119:36;1116:2;;;1168:1;1165;1158:12;1116:2;1193:1;1178:217;1203:6;1200:1;1197:13;1178:217;;;1261:3;1283:48;1327:3;1315:10;1283:48;;;1271:61;;-1:-1;1355:4;1346:14;;;;1374;;;;;1225:1;1218:9;1178:217;;;1182:14;767:634;;;;;;;;1465:788;;1609:3;1602:4;1594:6;1590:17;1586:27;1576:2;;1627:1;1624;1617:12;1576:2;1664:6;1651:20;1686:107;1701:91;1785:6;1701:91;;1686:107;1677:116;;1810:5;1835:6;1828:5;1821:21;1865:4;1857:6;1853:17;1843:27;;1887:4;1882:3;1878:14;1871:21;;1940:6;1987:3;1979:4;1971:6;1967:17;1962:3;1958:27;1955:36;1952:2;;;2004:1;2001;1994:12;1952:2;2029:1;2014:233;2039:6;2036:1;2033:13;2014:233;;;2097:3;2119:64;2179:3;2167:10;2119:64;;;2107:77;;-1:-1;2207:4;2198:14;;;;2235:4;2226:14;;;;;2061:1;2054:9;2014:233;;2317:788;;2461:3;2454:4;2446:6;2442:17;2438:27;2428:2;;2479:1;2476;2469:12;2428:2;2516:6;2503:20;2538:107;2553:91;2637:6;2553:91;;2538:107;2529:116;;2662:5;2687:6;2680:5;2673:21;2717:4;2709:6;2705:17;2695:27;;2739:4;2734:3;2730:14;2723:21;;2792:6;2839:3;2831:4;2823:6;2819:17;2814:3;2810:27;2807:36;2804:2;;;2856:1;2853;2846:12;2804:2;2881:1;2866:233;2891:6;2888:1;2885:13;2866:233;;;2949:3;2971:64;3031:3;3019:10;2971:64;;;2959:77;;-1:-1;3059:4;3050:14;;;;3087:4;3078:14;;;;;2913:1;2906:9;2866:233;;3170:791;;3315:3;3308:4;3300:6;3296:17;3292:27;3282:2;;3333:1;3330;3323:12;3282:2;3370:6;3357:20;3392:108;3407:92;3492:6;3407:92;;3392:108;3383:117;;3517:5;3542:6;3535:5;3528:21;3572:4;3564:6;3560:17;3550:27;;3594:4;3589:3;3585:14;3578:21;;3647:6;3694:3;3686:4;3678:6;3674:17;3669:3;3665:27;3662:36;3659:2;;;3711:1;3708;3701:12;3659:2;3736:1;3721:234;3746:6;3743:1;3740:13;3721:234;;;3804:3;3826:65;3887:3;3875:10;3826:65;;;3814:78;;-1:-1;3915:4;3906:14;;;;3943:4;3934:14;;;;;3768:1;3761:9;3721:234;;4024:785;;4167:3;4160:4;4152:6;4148:17;4144:27;4134:2;;4185:1;4182;4175:12;4134:2;4222:6;4209:20;4244:106;4259:90;4342:6;4259:90;;4244:106;4235:115;;4367:5;4392:6;4385:5;4378:21;4422:4;4414:6;4410:17;4400:27;;4444:4;4439:3;4435:14;4428:21;;4497:6;4544:3;4536:4;4528:6;4524:17;4519:3;4515:27;4512:36;4509:2;;;4561:1;4558;4551:12;4509:2;4586:1;4571:232;4596:6;4593:1;4590:13;4571:232;;;4654:3;4676:63;4735:3;4723:10;4676:63;;;4664:76;;-1:-1;4763:4;4754:14;;;;4791:4;4782:14;;;;;4618:1;4611:9;4571:232;;4872:785;;5015:3;5008:4;5000:6;4996:17;4992:27;4982:2;;5033:1;5030;5023:12;4982:2;5070:6;5057:20;5092:106;5107:90;5190:6;5107:90;;5092:106;5083:115;;5215:5;5240:6;5233:5;5226:21;5270:4;5262:6;5258:17;5248:27;;5292:4;5287:3;5283:14;5276:21;;5345:6;5392:3;5384:4;5376:6;5372:17;5367:3;5363:27;5360:36;5357:2;;;5409:1;5406;5399:12;5357:2;5434:1;5419:232;5444:6;5441:1;5438:13;5419:232;;;5502:3;5524:63;5583:3;5571:10;5524:63;;;5512:76;;-1:-1;5611:4;5602:14;;;;5639:4;5630:14;;;;;5466:1;5459:9;5419:232;;5718:779;;5859:3;5852:4;5844:6;5840:17;5836:27;5826:2;;5877:1;5874;5867:12;5826:2;5914:6;5901:20;5936:104;5951:88;6032:6;5951:88;;5936:104;5927:113;;6057:5;6082:6;6075:5;6068:21;6112:4;6104:6;6100:17;6090:27;;6134:4;6129:3;6125:14;6118:21;;6187:6;6234:3;6226:4;6218:6;6214:17;6209:3;6205:27;6202:36;6199:2;;;6251:1;6248;6241:12;6199:2;6276:1;6261:230;6286:6;6283:1;6280:13;6261:230;;;6344:3;6366:61;6423:3;6411:10;6366:61;;;6354:74;;-1:-1;6451:4;6442:14;;;;6479:4;6470:14;;;;;6308:1;6301:9;6261:230;;6523:722;;6651:3;6644:4;6636:6;6632:17;6628:27;6618:2;;6669:1;6666;6659:12;6618:2;6699:6;6693:13;6721:80;6736:64;6793:6;6736:64;;6721:80;6712:89;;6818:5;6843:6;6836:5;6829:21;6873:4;6865:6;6861:17;6851:27;;6895:4;6890:3;6886:14;6879:21;;6948:6;6995:3;6987:4;6979:6;6975:17;6970:3;6966:27;6963:36;6960:2;;;7012:1;7009;7002:12;6960:2;7037:1;7022:217;7047:6;7044:1;7041:13;7022:217;;;7105:3;7127:48;7171:3;7159:10;7127:48;;;7115:61;;-1:-1;7199:4;7190:14;;;;7218;;;;;7069:1;7062:9;7022:217;;7253:124;7317:20;;7342:30;7317:20;7342:30;;7384:128;7459:13;;7477:30;7459:13;7477:30;;7519:134;7597:13;;7615:33;7597:13;7615:33;;7661:440;;7762:3;7755:4;7747:6;7743:17;7739:27;7729:2;;7780:1;7777;7770:12;7729:2;7817:6;7804:20;7839:64;7854:48;7895:6;7854:48;;7839:64;7830:73;;7923:6;7916:5;7909:21;7959:4;7951:6;7947:17;7992:4;7985:5;7981:16;8027:3;8018:6;8013:3;8009:16;8006:25;8003:2;;;8044:1;8041;8034:12;8003:2;8054:41;8088:6;8083:3;8078;8054:41;;;7722:379;;;;;;;;8109:156;8189:20;;8214:46;8189:20;8214:46;;8272:128;8338:20;;8363:32;8338:20;8363:32;;8910:473;;9026:4;9014:9;9009:3;9005:19;9001:30;8998:2;;;9044:1;9041;9034:12;8998:2;9062:20;9077:4;9062:20;;;9053:29;-1:-1;9132:1;9164:49;9209:3;9189:9;9164:49;;;9139:75;;-1:-1;9279:2;9312:49;9357:3;9333:22;;;9312:49;;;9305:4;9298:5;9294:16;9287:75;9235:138;8992:391;;;;;9442:620;;9558:4;9546:9;9541:3;9537:19;9533:30;9530:2;;;9576:1;9573;9566:12;9530:2;9594:20;9609:4;9594:20;;;9585:29;-1:-1;9664:1;9696:49;9741:3;9721:9;9696:49;;;9671:75;;-1:-1;9810:2;9843:49;9888:3;9864:22;;;9843:49;;;9836:4;9829:5;9825:16;9818:75;9767:137;9958:2;9991:49;10036:3;10027:6;10016:9;10012:22;9991:49;;;9984:4;9977:5;9973:16;9966:75;9914:138;9524:538;;;;;10122:764;;10239:4;10227:9;10222:3;10218:19;10214:30;10211:2;;;10257:1;10254;10247:12;10211:2;10275:20;10290:4;10275:20;;;10266:29;-1:-1;10345:1;10377:49;10422:3;10402:9;10377:49;;;10352:75;;-1:-1;10490:2;10523:49;10568:3;10544:22;;;10523:49;;;10516:4;10509:5;10505:16;10498:75;10448:136;10636:2;10669:49;10714:3;10705:6;10694:9;10690:22;10669:49;;;10662:4;10655:5;10651:16;10644:75;10594:136;10782:2;10815:49;10860:3;10851:6;10840:9;10836:22;10815:49;;;10808:4;10801:5;10797:16;10790:75;10740:136;10205:681;;;;;10944:611;;11059:4;11047:9;11042:3;11038:19;11034:30;11031:2;;;11077:1;11074;11067:12;11031:2;11095:20;11110:4;11095:20;;;11086:29;-1:-1;11165:1;11197:49;11242:3;11222:9;11197:49;;;11172:75;;-1:-1;11311:2;11344:49;11389:3;11365:22;;;11344:49;;;11337:4;11330:5;11326:16;11319:75;11268:137;11452:2;11485:48;11529:3;11520:6;11509:9;11505:22;11485:48;;11613:899;;11728:4;11716:9;11711:3;11707:19;11703:30;11700:2;;;11746:1;11743;11736:12;11700:2;11764:20;11779:4;11764:20;;;11755:29;-1:-1;11837:1;11869:49;11914:3;11894:9;11869:49;;;11844:75;;-1:-1;11980:2;12013:49;12058:3;12034:22;;;12013:49;;;12006:4;11999:5;11995:16;11988:75;11940:134;12130:2;12163:46;12205:3;12196:6;12185:9;12181:22;12163:46;;;12156:4;12149:5;12145:16;12138:72;12084:137;12268:2;12301:48;12345:3;12336:6;12325:9;12321:22;12301:48;;;12294:4;12287:5;12283:16;12276:74;12231:130;12408:3;12442:48;12486:3;12477:6;12466:9;12462:22;12442:48;;;12435:4;12428:5;12424:16;12417:74;12371:131;11694:818;;;;;13194:130;13261:20;;13286:33;13261:20;13286:33;;13472:241;;13576:2;13564:9;13555:7;13551:23;13547:32;13544:2;;;13592:1;13589;13582:12;13544:2;13627:1;13644:53;13689:7;13669:9;13644:53;;13720:263;;13835:2;13823:9;13814:7;13810:23;13806:32;13803:2;;;13851:1;13848;13841:12;13803:2;13886:1;13903:64;13959:7;13939:9;13903:64;;13990:827;;;;;14164:3;14152:9;14143:7;14139:23;14135:33;14132:2;;;14181:1;14178;14171:12;14132:2;14216:1;14233:53;14278:7;14258:9;14233:53;;;14223:63;;14195:97;14323:2;14341:53;14386:7;14377:6;14366:9;14362:22;14341:53;;;14331:63;;14302:98;14459:2;14448:9;14444:18;14431:32;-1:-1;;;;;14475:6;14472:30;14469:2;;;14515:1;14512;14505:12;14469:2;14535:63;14590:7;14581:6;14570:9;14566:22;14535:63;;;14525:73;;14410:194;14663:2;14652:9;14648:18;14635:32;-1:-1;;;;;14679:6;14676:30;14673:2;;;14719:1;14716;14709:12;14673:2;14739:62;14793:7;14784:6;14773:9;14769:22;14739:62;;;14729:72;;14614:193;14126:691;;;;;;;;14824:397;;;14963:2;14951:9;14942:7;14938:23;14934:32;14931:2;;;14979:1;14976;14969:12;14931:2;15014:31;;-1:-1;;;;;15054:30;;15051:2;;;15097:1;15094;15087:12;15051:2;15125:80;15197:7;15188:6;15177:9;15173:22;15125:80;;;15115:90;;;;14993:218;14925:296;;;;;;15228:793;;;;15427:2;15415:9;15406:7;15402:23;15398:32;15395:2;;;15443:1;15440;15433:12;15395:2;15478:24;;-1:-1;;;;;15511:30;;15508:2;;;15554:1;15551;15544:12;15508:2;15574:89;15655:7;15646:6;15635:9;15631:22;15574:89;;;15564:99;;15457:212;15721:2;15710:9;15706:18;15700:25;-1:-1;;;;;15737:6;15734:30;15731:2;;;15777:1;15774;15767:12;15731:2;15797:89;15878:7;15869:6;15858:9;15854:22;15797:89;;;15787:99;;15679:213;15923:2;15941:64;15997:7;15988:6;15977:9;15973:22;15941:64;;;15931:74;;15902:109;15389:632;;;;;;16028:431;;16184:2;16172:9;16163:7;16159:23;16155:32;16152:2;;;16200:1;16197;16190:12;16152:2;16235:31;;-1:-1;;;;;16275:30;;16272:2;;;16318:1;16315;16308:12;16272:2;16338:105;16435:7;16426:6;16415:9;16411:22;16338:105;;16466:431;;16622:2;16610:9;16601:7;16597:23;16593:32;16590:2;;;16638:1;16635;16628:12;16590:2;16673:31;;-1:-1;;;;;16713:30;;16710:2;;;16756:1;16753;16746:12;16710:2;16776:105;16873:7;16864:6;16853:9;16849:22;16776:105;;16904:433;;17061:2;17049:9;17040:7;17036:23;17032:32;17029:2;;;17077:1;17074;17067:12;17029:2;17112:31;;-1:-1;;;;;17152:30;;17149:2;;;17195:1;17192;17185:12;17149:2;17215:106;17313:7;17304:6;17293:9;17289:22;17215:106;;17344:429;;17499:2;17487:9;17478:7;17474:23;17470:32;17467:2;;;17515:1;17512;17505:12;17467:2;17550:31;;-1:-1;;;;;17590:30;;17587:2;;;17633:1;17630;17623:12;17587:2;17653:104;17749:7;17740:6;17729:9;17725:22;17653:104;;17780:429;;17935:2;17923:9;17914:7;17910:23;17906:32;17903:2;;;17951:1;17948;17941:12;17903:2;17986:31;;-1:-1;;;;;18026:30;;18023:2;;;18069:1;18066;18059:12;18023:2;18089:104;18185:7;18176:6;18165:9;18161:22;18089:104;;18216:425;;18369:2;18357:9;18348:7;18344:23;18340:32;18337:2;;;18385:1;18382;18375:12;18337:2;18420:31;;-1:-1;;;;;18460:30;;18457:2;;;18503:1;18500;18493:12;18457:2;18523:102;18617:7;18608:6;18597:9;18593:22;18523:102;;18648:392;;18788:2;18776:9;18767:7;18763:23;18759:32;18756:2;;;18804:1;18801;18794:12;18756:2;18839:24;;-1:-1;;;;;18872:30;;18869:2;;;18915:1;18912;18905:12;18869:2;18935:89;19016:7;19007:6;18996:9;18992:22;18935:89;;19047:257;;19159:2;19147:9;19138:7;19134:23;19130:32;19127:2;;;19175:1;19172;19165:12;19127:2;19210:1;19227:61;19280:7;19260:9;19227:61;;19311:263;;19426:2;19414:9;19405:7;19401:23;19397:32;19394:2;;;19442:1;19439;19432:12;19394:2;19477:1;19494:64;19550:7;19530:9;19494:64;;19581:267;;19698:2;19686:9;19677:7;19673:23;19669:32;19666:2;;;19714:1;19711;19704:12;19666:2;19749:1;19766:66;19824:7;19804:9;19766:66;;19855:241;;19959:2;19947:9;19938:7;19934:23;19930:32;19927:2;;;19975:1;19972;19965:12;19927:2;20010:1;20027:53;20072:7;20052:9;20027:53;;20373:399;;;20505:2;20493:9;20484:7;20480:23;20476:32;20473:2;;;20521:1;20518;20511:12;20473:2;20556:1;20573:64;20629:7;20609:9;20573:64;;;20563:74;;20535:108;20674:2;20692:64;20748:7;20739:6;20728:9;20724:22;20692:64;;;20682:74;;20653:109;20467:305;;;;;;20780:173;;20867:46;20909:3;20901:6;20867:46;;;-1:-1;;20942:4;20933:14;;20860:93;20962:173;;21049:46;21091:3;21083:6;21049:46;;21143:103;21216:24;21234:5;21216:24;;;21211:3;21204:37;21198:48;;;21404:690;;21549:54;21597:5;21549:54;;;21616:86;21695:6;21690:3;21616:86;;;21609:93;;21723:56;21773:5;21723:56;;;21799:7;21827:1;21812:260;21837:6;21834:1;21831:13;21812:260;;;21904:6;21898:13;21925:63;21984:3;21969:13;21925:63;;;21918:70;;22005:60;22058:6;22005:60;;;21995:70;-1:-1;;21859:1;21852:9;21812:260;;;-1:-1;22085:3;;21528:566;-1:-1;;;;;21528:566;22133:654;;22264:50;22308:5;22264:50;;;22327:76;22396:6;22391:3;22327:76;;;22320:83;;22424:52;22470:5;22424:52;;;22496:7;22524:1;22509:256;22534:6;22531:1;22528:13;22509:256;;;22601:6;22595:13;22622:63;22681:3;22666:13;22622:63;;;22615:70;;22702:56;22751:6;22702:56;;;22692:66;-1:-1;;22556:1;22549:9;22509:256;;22826:709;;22968:51;23013:5;22968:51;;;23032:86;23111:6;23106:3;23032:86;;;23025:93;;23139:53;23186:5;23139:53;;;23212:7;23240:1;23225:288;23250:6;23247:1;23244:13;23225:288;;;23311:44;23348:6;23311:44;;;23369:63;23428:3;23413:13;23369:63;;;23362:70;;23449:57;23499:6;23449:57;;;23439:67;-1:-1;;23272:1;23265:9;23225:288;;23574:690;;23719:54;23767:5;23719:54;;;23786:86;23865:6;23860:3;23786:86;;;23779:93;;23893:56;23943:5;23893:56;;;23969:7;23997:1;23982:260;24007:6;24004:1;24001:13;23982:260;;;24074:6;24068:13;24095:63;24154:3;24139:13;24095:63;;;24088:70;;24175:60;24228:6;24175:60;;;24165:70;-1:-1;;24029:1;24022:9;23982:260;;24303:654;;24434:50;24478:5;24434:50;;;24497:76;24566:6;24561:3;24497:76;;;24490:83;;24594:52;24640:5;24594:52;;;24666:7;24694:1;24679:256;24704:6;24701:1;24698:13;24679:256;;;24771:6;24765:13;24792:63;24851:3;24836:13;24792:63;;;24785:70;;24872:56;24921:6;24872:56;;;24862:66;-1:-1;;24726:1;24719:9;24679:256;;24965:94;25032:21;25047:5;25032:21;;25177:103;25250:24;25268:5;25250:24;;25407:148;25506:43;25525:23;25542:5;25525:23;;;25506:43;;25562:343;;25672:38;25704:5;25672:38;;;25722:70;25785:6;25780:3;25722:70;;;25715:77;;25797:52;25842:6;25837:3;25830:4;25823:5;25819:16;25797:52;;;25870:29;25892:6;25870:29;;;25861:39;;;;25652:253;-1:-1;;;25652:253;25912:356;;26040:38;26072:5;26040:38;;;26090:88;26171:6;26166:3;26090:88;;;26083:95;;26183:52;26228:6;26223:3;26216:4;26209:5;26205:16;26183:52;;;26247:16;;;;;26020:248;-1:-1;;26020:248;26597:148;26691:48;26733:5;26691:48;;26752:138;26836:48;26878:5;26836:48;;26897:110;26978:23;26995:5;26978:23;;27014:142;27105:45;27144:5;27105:45;;27518:311;;27678:67;27742:2;27737:3;27678:67;;;-1:-1;;;27758:34;;27820:2;27811:12;;27664:165;-1:-1;;27664:165;27838:311;;27998:67;28062:2;28057:3;27998:67;;;-1:-1;;;28078:34;;28140:2;28131:12;;27984:165;-1:-1;;27984:165;28158:327;;28318:67;28382:2;28377:3;28318:67;;;28418:29;28398:50;;28476:2;28467:12;;28304:181;-1:-1;;28304:181;28494:332;;28654:67;28718:2;28713:3;28654:67;;;28754:34;28734:55;;28817:2;28808:12;;28640:186;-1:-1;;28640:186;28835:303;;28995:66;29059:1;29054:3;28995:66;;;-1:-1;;;29074:27;;29129:2;29120:12;;28981:157;-1:-1;;28981:157;29147:370;;29307:67;29371:2;29366:3;29307:67;;;29407:34;29387:55;;-1:-1;;;29471:2;29462:12;;29455:25;29508:2;29499:12;;29293:224;-1:-1;;29293:224;29526:305;;29686:66;29750:1;29745:3;29686:66;;;-1:-1;;;29765:29;;29822:2;29813:12;;29672:159;-1:-1;;29672:159;29840:398;;30000:67;30064:2;30059:3;30000:67;;;30100:34;30080:55;;30169:31;30164:2;30155:12;;30148:53;30229:2;30220:12;;29986:252;-1:-1;;29986:252;30247:306;;30407:66;30471:1;30466:3;30407:66;;;-1:-1;;;30486:30;;30544:2;30535:12;;30393:160;-1:-1;;30393:160;30562:311;;30722:67;30786:2;30781:3;30722:67;;;-1:-1;;;30802:34;;30864:2;30855:12;;30708:165;-1:-1;;30708:165;30882:379;;31042:67;31106:2;31101:3;31042:67;;;31142:34;31122:55;;-1:-1;;;31206:2;31197:12;;31190:34;31252:2;31243:12;;31028:233;-1:-1;;31028:233;31270:391;;31430:67;31494:2;31489:3;31430:67;;;31530:34;31510:55;;-1:-1;;;31594:2;31585:12;;31578:46;31652:2;31643:12;;31416:245;-1:-1;;31416:245;31670:331;;31830:67;31894:2;31889:3;31830:67;;;31930:33;31910:54;;31992:2;31983:12;;31816:185;-1:-1;;31816:185;32084:1111;32315:23;;32247:4;32351:38;;;32084:1111;;32238:14;;;;32404:99;32238:14;32315:23;32404:99;;;32396:107;;32267:248;32597:4;32590:5;32586:16;32580:23;32649:3;32643:4;32639:14;32632:4;32627:3;32623:14;32616:38;32669:99;32763:4;32749:12;32669:99;;;32661:107;;32525:255;32857:4;32850:5;32846:16;32840:23;32909:3;32903:4;32899:14;32892:4;32887:3;32883:14;32876:38;32929:67;32991:4;32977:12;32929:67;;;32921:75;;32790:218;33094:4;33087:5;33083:16;33077:23;33106:57;33157:4;33152:3;33148:14;33134:12;33106:57;;;-1:-1;33186:4;32220:975;-1:-1;;;32220:975;33275:817;33496:23;;33428:4;33419:14;;;33525:63;33423:3;33496:23;33525:63;;;33448:146;33682:4;33675:5;33671:16;33665:23;33694:57;33745:4;33740:3;33736:14;33722:12;33694:57;;;33604:153;33835:4;33828:5;33824:16;33818:23;33847:63;33904:4;33899:3;33895:14;33881:12;33847:63;;;33767:149;34002:4;33995:5;33991:16;33985:23;34014:57;34065:4;34060:3;34056:14;34042:12;34014:57;;34164:1209;34385:23;;34164:1209;;34317:4;34308:14;;;34414:63;34312:3;34385:23;34414:63;;;34337:146;34556:4;34549:5;34545:16;34539:23;34568:74;34636:4;34631:3;34627:14;34613:12;34568:74;;;34493:155;34724:4;34717:5;34713:16;34707:23;34736:63;34793:4;34788:3;34784:14;34770:12;34736:63;;;34658:147;34882:4;34875:5;34871:16;34865:23;34894:63;34951:4;34946:3;34942:14;34928:12;34894:63;;;34815:148;35038:4;35031:5;35027:16;35021:23;35050:63;35107:4;35102:3;35098:14;35084:12;35050:63;;;34973:146;35196:4;35189:5;35185:16;35179:23;35248:3;35242:4;35238:14;35231:4;35226:3;35222:14;35215:38;35268:67;35330:4;35316:12;35268:67;;;35260:75;34290:1083;-1:-1;;;;;34290:1083;35610:396;;35773:73;35842:3;35833:6;35773:73;;;35868:1;35863:3;35859:11;35852:18;;35888:93;35977:3;35968:6;35888:93;;36013:262;;36157:93;36246:3;36237:6;36157:93;;36282:213;36400:2;36385:18;;36414:71;36389:9;36458:6;36414:71;;36502:324;36648:2;36633:18;;36662:71;36637:9;36706:6;36662:71;;;36744:72;36812:2;36801:9;36797:18;36788:6;36744:72;;36833:435;37007:2;36992:18;;37021:71;36996:9;37065:6;37021:71;;;37103:72;37171:2;37160:9;37156:18;37147:6;37103:72;;;37186;37254:2;37243:9;37239:18;37230:6;37186:72;;37275:547;37477:3;37462:19;;37492:71;37466:9;37536:6;37492:71;;;37574:72;37642:2;37631:9;37627:18;37618:6;37574:72;;;37657;37725:2;37714:9;37710:18;37701:6;37657:72;;;37740;37808:2;37797:9;37793:18;37784:6;37740:72;;37829:639;38049:3;38034:19;;38064:71;38038:9;38108:6;38064:71;;;38146:72;38214:2;38203:9;38199:18;38190:6;38146:72;;;38229:66;38291:2;38280:9;38276:18;38267:6;38229:66;;;38306:70;38372:2;38361:9;38357:18;38348:6;38306:70;;;38387:71;38453:3;38442:9;38438:19;38429:6;38387:71;;;38020:448;;;;;;;;;38475:431;38647:2;38632:18;;38661:71;38636:9;38705:6;38661:71;;;38743:72;38811:2;38800:9;38796:18;38787:6;38743:72;;;38826:70;38892:2;38881:9;38877:18;38868:6;38826:70;;38913:915;39215:3;39200:19;;39230:71;39204:9;39274:6;39230:71;;;39312:72;39380:2;39369:9;39365:18;39356:6;39312:72;;;39395;39463:2;39452:9;39448:18;39439:6;39395:72;;;39478:80;39554:2;39543:9;39539:18;39530:6;39478:80;;;39569:81;39645:3;39634:9;39630:19;39621:6;39569:81;;;39661:73;39729:3;39718:9;39714:19;39705:6;39661:73;;;39745;39813:3;39802:9;39798:19;39789:6;39745:73;;;39186:642;;;;;;;;;;;39835:324;39981:2;39966:18;;39995:71;39970:9;40039:6;39995:71;;;40077:72;40145:2;40134:9;40130:18;40121:6;40077:72;;40166:355;40331:2;40345:47;;;40316:18;;40406:105;40316:18;40497:6;40406:105;;40528:725;40799:2;40813:47;;;40784:18;;40874:105;40784:18;40965:6;40874:105;;;40866:113;;41027:9;41021:4;41017:20;41012:2;41001:9;40997:18;40990:48;41052:108;41155:4;41146:6;41052:108;;;41044:116;;41171:72;41239:2;41228:9;41224:18;41215:6;41171:72;;41260:213;41378:2;41363:18;;41392:71;41367:9;41436:6;41392:71;;41480:719;41744:3;41729:19;;41759:71;41733:9;41803:6;41759:71;;;41841:72;41909:2;41898:9;41894:18;41885:6;41841:72;;;41924;41992:2;41981:9;41977:18;41968:6;41924:72;;;42044:9;42038:4;42034:20;42029:2;42018:9;42014:18;42007:48;42069:120;42184:4;42175:6;42069:120;;42206:297;42342:2;42356:47;;;42327:18;;42417:76;42327:18;42479:6;42417:76;;42510:457;42695:2;42680:18;;42709:82;42684:9;42764:6;42709:82;;;42802:72;42870:2;42859:9;42855:18;42846:6;42802:72;;;42885;42953:2;42942:9;42938:18;42929:6;42885:72;;42974:555;43180:3;43165:19;;43195:69;43169:9;43237:6;43195:69;;;43275:70;43341:2;43330:9;43326:18;43317:6;43275:70;;;43356:72;43424:2;43413:9;43409:18;43400:6;43356:72;;;43439:80;43515:2;43504:9;43500:18;43491:6;43439:80;;43844:407;44035:2;44049:47;;;44020:18;;44110:131;44020:18;44110:131;;44258:407;44449:2;44463:47;;;44434:18;;44524:131;44434:18;44524:131;;44672:407;44863:2;44877:47;;;44848:18;;44938:131;44848:18;44938:131;;45086:407;45277:2;45291:47;;;45262:18;;45352:131;45262:18;45352:131;;45500:407;45691:2;45705:47;;;45676:18;;45766:131;45676:18;45766:131;;45914:407;46105:2;46119:47;;;46090:18;;46180:131;46090:18;46180:131;;46328:407;46519:2;46533:47;;;46504:18;;46594:131;46504:18;46594:131;;46742:407;46933:2;46947:47;;;46918:18;;47008:131;46918:18;47008:131;;47156:407;47347:2;47361:47;;;47332:18;;47422:131;47332:18;47422:131;;47570:407;47761:2;47775:47;;;47746:18;;47836:131;47746:18;47836:131;;47984:407;48175:2;48189:47;;;48160:18;;48250:131;48160:18;48250:131;;48398:407;48589:2;48603:47;;;48574:18;;48664:131;48574:18;48664:131;;48812:407;49003:2;49017:47;;;48988:18;;49078:131;48988:18;49078:131;;49226:837;49548:3;49563:47;;;49533:19;;49624:110;49533:19;49720:6;49624:110;;;49616:118;;49745:132;49873:2;49862:9;49858:18;49849:6;49745:132;;;49888:81;49964:3;49953:9;49949:19;49940:6;49888:81;;;49980:73;50048:3;50037:9;50033:19;50024:6;49980:73;;50290:447;50470:2;50455:18;;50484:71;50459:9;50528:6;50484:71;;;50566:70;50632:2;50621:9;50617:18;50608:6;50566:70;;;50647:80;50723:2;50712:9;50708:18;50699:6;50647:80;;50744:807;51024:3;51009:19;;51039:71;51013:9;51083:6;51039:71;;;51121:72;51189:2;51178:9;51174:18;51165:6;51121:72;;;51241:9;51235:4;51231:20;51226:2;51215:9;51211:18;51204:48;51266:108;51369:4;51360:6;51266:108;;;51258:116;;51385:72;51453:2;51442:9;51438:18;51429:6;51385:72;;;51468:73;51536:3;51525:9;51521:19;51512:6;51468:73;;51558:256;51620:2;51614:9;51646:17;;;-1:-1;;;;;51706:34;;51742:22;;;51703:62;51700:2;;;51778:1;51775;51768:12;51700:2;51794;51787:22;51598:216;;-1:-1;51598:216;51821:304;;-1:-1;;;;;51972:6;51969:30;51966:2;;;52012:1;52009;52002:12;51966:2;-1:-1;52047:4;52035:17;;;52100:15;;51903:222;54467:321;;-1:-1;;;;;54602:6;54599:30;54596:2;;;54642:1;54639;54632:12;54596:2;-1:-1;54773:4;54709;54686:17;;;;-1:-1;;54682:33;54763:15;;54533:255;55124:147;55244:4;55235:14;;55192:79;55436:173;;55546:14;;;55588:4;55575:18;;;55505:104;55928:133;56027:12;;55998:63;56212:141;56318:12;;56283:70;57251:105;57346:4;57337:14;;57323:33;57590:168;57698:19;;;57747:4;57738:14;;57691:67;58974:134;-1:-1;;;;;59049:54;;59032:76;59115:91;;59177:24;59195:5;59177:24;;59213:85;59279:13;59272:21;;59255:43;59384:144;-1:-1;;;;;;59445:78;;59428:100;59535:104;;59610:24;59628:5;59610:24;;59646:132;59721:5;59727:46;59721:5;59727:46;;59785:132;59860:5;59866:46;59860:5;59866:46;;59924:87;59996:2;59985:21;;59968:43;60225:132;;60315:37;60346:5;60315:37;;60364:132;;60454:37;60485:5;60454:37;;60503:116;;60590:24;60608:5;60590:24;;60627:145;60708:6;60703:3;60698;60685:30;-1:-1;60764:1;60746:16;;60739:27;60678:94;60781:268;60846:1;60853:101;60867:6;60864:1;60861:13;60853:101;;;60934:11;;;60928:18;60915:11;;;60908:39;60889:2;60882:10;60853:101;;;60969:6;60966:1;60963:13;60960:2;;;-1:-1;;61034:1;61016:16;;61009:27;60830:219;61057:161;;61147:66;61178:34;61201:10;61178:34;;;61147:66;;61305:138;;61381:57;61432:4;61426:11;61381:57;;61450:97;61538:2;61518:14;-1:-1;;61514:28;;61498:49;61665:104;61747:1;61740:5;61737:12;61727:2;;61753:9;61776:104;61858:1;61851:5;61848:12;61838:2;;61864:9;61887:117;61956:24;61974:5;61956:24;;;61949:5;61946:35;61936:2;;61995:1;61992;61985:12;62011:111;62077:21;62092:5;62077:21;;62129:117;62198:24;62216:5;62198:24;;62253:143;62335:37;62366:5;62335:37;;62403:115;62471:23;62488:5;62471:23;

Swarm Source

bzzr://cb8eca6e517e958125a2ee4263d8e9568f9a1682666e26e24af91855f705e15b

Block Transaction Gas Used Reward
view all blocks produced
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
View All Validatorset

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Chain Token Portfolio % Price Amount Value
BSC34.25%$10.9596.7696$1,059.39
BSC18.24%$221.642.5456$564.21
BSC10.97%$717.360.4731$339.41
BSC8.10%$0.0853732,935.6211$250.62
BSC6.43%$1.23161.7212$198.92
BSC4.61%$2.4258.8062$142.47
BSC4.22%$50.032.6092$130.53
BSC2.79%$0.99890186.28$86.19
BSC2.24%$101,842.110.00068002$69.26
BSC1.40%$1.0740.2849$43.17
BSC1.35%$0.99981941.6351$41.63
BSC1.21%$3,884.390.00967364$37.58
BSC0.63%$119.4786$19.55
BSC0.54%$0.99924416.6926$16.68
BSC0.53%$0.00034847,535.947$16.54
BSC0.53%$29.360.5564$16.34
BSC0.47%$3.244.5125$14.62
BSC0.20%$0.9997086.1059$6.1
BSC0.19%$0.36224216.0803$5.82
BSC0.19%$3,878.940.00150061$5.82
BSC0.17%$8.610.6202$5.34
BSC0.15%$118.710.0399$4.73
BSC0.15%$0.00027317,008.6908$4.65
BSC0.13%$0.39873310.1461$4.05
BSC0.12%$0.012572304.479$3.83
BSC0.11%$378.340.00894809$3.39
BSC0.05%$0.6001932.6465$1.59
BSC0.02%$533.820.00121448$0.6483
BSC<0.01%$6.490.04$0.2599
[ 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.