Contract 0xc4a25f823582d9ccf5cf8c8bf5338073e7a51676 1

Contract Overview

Balance:
0 AVAX

AVAX Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x9cd1239a875c4abdadf3a9244e7d20e61d8f046f130e3e77fb5c7f665d91244cSet Approval For...150397692022-05-22 18:17:561 hr 7 mins ago0x105bacc75a406928c8110dd77b101bb9c6a3cbe7 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.00127204 27.5
0xfa971f7b561187e871e10700f684c357c9f7ea3ce75fd69500effb00e5c76a8aSet Approval For...150388282022-05-22 17:46:251 hr 38 mins ago0x87f70251b6e06845c7ec8da7ff3350b5c51ee073 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.0012682417 27.425
0xd768916bdfeefa1bb8dfa6e32ebb876e74921426a9275313099360ec81a1eaefSet Approval For...150385822022-05-22 17:38:171 hr 46 mins ago0x2fd71aa5e1906741b22ed561d04cb1a2a5aca72a IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
0xeac8723f60f7746317fac820e01316f551a605cd57194ee506057405b7b55c9bSet Approval For...150384412022-05-22 17:33:341 hr 51 mins ago0xb16c18554625bca57bd8d02794402aa240dba465 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.0012682417 27.425
0xa5aae762e6a915d0ce9e2836da67d6ad25b6c5d644a97c3c4e0edfdf55c27bb3Set Approval For...150276472022-05-22 11:34:037 hrs 51 mins ago0x6275a7051425133338c66bdb4c6948ad71fb2657 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
0x48766917cc5bc4794428a59428215593f038b7e78dcef20e0c9526e8a17e1868Set Approval For...150242652022-05-22 9:40:449 hrs 44 mins ago0x0a7aa8fc0ad4697fef8052359e6280888da4cf37 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
0x8ae5a54480912d71db8a3baaebb88d2f98e7330ea0f54bef497ffafeec1f8a0fSet Approval For...150237332022-05-22 9:22:5810 hrs 2 mins ago0xff44ed6c645b3f1d963300cf12d76d102cdeb2bf IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
0xaebc39395153e10f3b0bc8da9b581e4b6661cc9c4e1705bbd5122c4b5517b56cSet Approval For...150196542022-05-22 7:06:1812 hrs 18 mins ago0x596d7ebe1d47ddfbeacf8a1b627f760953a3bbf8 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.0012682417 27.425
0xde53e191d30d695f7804999aafd314be12147bfe1343a881cd1fde049c3744f4Set Approval For...150187402022-05-22 6:35:4812 hrs 49 mins ago0xdef89f468978d5f4e72375a6b42b2edb297fc818 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001228586855 26.567486718
0x84eac0fd05fa2d16ee8cd31a534af666859880e67a4fb20344f18cf447db94fbSet Approval For...150184462022-05-22 6:25:5712 hrs 59 mins ago0xe78bc37278e499002ac016943b3f604447cbcd28 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.000698116 26.5
0x5a3f793f65c3efa1aec494a029221b9bca11e9d078fdc1829df8c04db4432a92Set Approval For...150184272022-05-22 6:25:1912 hrs 59 mins ago0xe78bc37278e499002ac016943b3f604447cbcd28 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
0xa467a03e66dcc8aaed2a0f220bee2657dc5454cf8d3a8c5e2e40af08b83b4378Set Approval For...150182212022-05-22 6:18:2113 hrs 6 mins ago0x463bb4b6e7fe251d09a84baa5ed847902bb1e21f IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
0xe8906b6125b230de05c27f7ba8d90db3da17813265630308771665d3cff74d76Set Approval For...150108692022-05-22 2:11:5517 hrs 13 mins ago0x11d4e764c879525ad06735acced286e3aee726ce IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
0x0718a479341bf88a18293351a0768dfe3d1087a574c5252c8ad27404ff0abbd7Set Approval For...150095002022-05-22 1:26:0617 hrs 59 mins ago0x9b68fa5c9fdd771e3db651d78f80059fe6bcd529 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
0x17ebefeaf811f0facd9e300170a11538a63899825d4319e4846ba06567350021Set Approval For...150061942022-05-21 23:35:2019 hrs 49 mins ago0xa667d2b259ad7ccde804cdb19896196325d9559c IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
0xd7b05888b8ea896b2e90e3570276532efc14b9c5ba448cc53b1d9a1ff2734696Set Approval For...150048262022-05-21 22:49:2620 hrs 35 mins ago0xe5e456ab0361e6aba3325f84101f704add175216 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
0x6fbcc6262ffa003a5c02600b367bca6723b9adce45cb2712289fd827dea5ab6dSet Approval For...150044572022-05-21 22:36:5820 hrs 48 mins ago0x8be17243a31a5a89d1357aad6ce40702fabc305c IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.000698116 26.5
0xb46c16cf770c21e744a2ab24f59dd6a0abd7b9dc579580beea595afa8291427dSet Approval For...150044412022-05-21 22:36:2720 hrs 48 mins ago0x8be17243a31a5a89d1357aad6ce40702fabc305c IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
0x5b6ecf97da2d15f18f680048a564e17306bb50959132e4df10bdb0afa1794a8dSet Approval For...150035192022-05-21 22:05:1221 hrs 20 mins ago0x6f162707bc7498315360b8d83ca5d5cad8c7dd49 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225784 26.5
0x713cb6a7eb535c1d489b40f72ffd3a17a51eadf174bdac66bdf9e8e068d1e4fbSet Approval For...150000202022-05-21 20:08:0123 hrs 17 mins ago0xb6f90e39195711133b0362d7b3f8bd9f80e7bcc0 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
0x4b8d2a965b0699d785ee68642bde8a71fe9b4e25a824f04bb9cd1ab79904cff2Set Approval For...149992342022-05-21 19:41:3623 hrs 43 mins ago0xf3917dde275008eb3ff1e8538abe6ee91f75ff11 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.00127204 27.5
0x52702db6f9604d11bc324fae9fa0439fbc88c54e25065f7d6492257fc1e95732Set Approval For...149981692022-05-21 19:06:071 day 19 mins ago0x0594e6e67f23fc5b99f832399f7a4f56341c7406 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
0xc72bbfe4d502a235ce5a4485c041cb4caceeafb49a9356f65a7bf6851b8e1576Set Approval For...149945252022-05-21 17:04:061 day 2 hrs ago0x23301c68edb60b177e1a7238a340af6646df1cf4 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
0xa3188c9f11433ab0a1b17a1ddc90b75ed159aa9b01fb9b7f01350d10766dbd81Set Approval For...149943192022-05-21 16:57:151 day 2 hrs ago0xf5feb23dd9bf19e78792ba99c4774afdb3189636 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
0x48fcf18bf6ec5f9f3eb9d2998e2b4f24a30f82d2732a03510e976e38dff061b7Set Approval For...149931942022-05-21 16:19:421 day 3 hrs ago0x1bdd902f7fa83becc772db1bef81afcf0ae30bd2 IN  0xc4a25f823582d9ccf5cf8c8bf5338073e7a516760 AVAX0.001225466 26.5
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MansionManager

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2022-01-30
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

    /**
     * @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 a - b;
    }

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting 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.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @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].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

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

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

interface IMansionManager is IERC721 {
    function createNode(address account, string memory nodeName) external;
    function claim(address account, uint256 _id) external returns (uint); 
    function getNameOf(uint256 _id) external view returns (string memory);
    function getMintOf(uint256 _id) external view returns (uint64);
    function getClaimOf(uint256 _id) external view returns (uint64);
}

interface FoundersNFT is IERC721 {
    function balanceOf(address account, uint256 id) external view returns (uint256);
}

contract HelperOwnable is Context {
    address internal _contract;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = _msgSender();
        _contract = msgSender;
        emit ContractOwnershipTransferred(address(0), msgSender);
    }

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

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

contract MansionManager is Ownable, HelperOwnable, IERC721, IERC721Metadata, IMansionManager, FoundersNFT {
    using Address for address;
    using SafeMath for uint256;
    FoundersNFT public foundersNFT = FoundersNFT(0x3026c8Ce0Da81709A633e5a4A6745a188c255137);
    
    struct Mansion {
        string name;
        string metadata;
        uint256 id;
        uint64 mint;
        uint64 claim;
    }

    mapping(address => uint256) private _balances;
    mapping (uint256 => mapping(address => uint256)) private _balanceOfNFT;
    mapping(uint256 => address) private _owners;
    mapping(uint256 => Mansion) private _nodes;
    mapping(address => uint256[]) private _bags;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    mapping(address => bool) private _blacklist;

    address public deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public upgradeManager = 0x000000000000000000000000000000000000dEaD;
    
    uint32 public precision = 100000000;
    uint64 public reward = 1157;
    uint128 public claimTime = 86400;
    string public defaultUri = "";
    

    uint256 private nodeCounter = 1;

    uint64 public vbuy1 = 20;
    uint64 public vbuy2 = 25;
    uint64 public vbuy3 = 30;
    uint64 public vbuy4 = 35;
    uint64 public vbuy5 = 40;
    uint64 public vbuy6 = 45;

    uint256 public foundersMultiplier = 250;
    uint256 public districtMultiplier = 15;
    uint256 public cityMultiplier = 0;

    bool public transferIsEnabled = false;


    IERC721 FOUNDER = IERC721(0x3026c8Ce0Da81709A633e5a4A6745a188c255137);
    IERC721 DISTRICT = IERC721(0x000000000000000000000000000000000000dEaD);
    IERC721 CITY = IERC721(0x000000000000000000000000000000000000dEaD);

    modifier onlyIfExists(uint256 _id) {
        require(_exists(_id), "ERC721: operator query for nonexistent token");
        _;
    }

    function enableTransfer(bool _enable) external onlyOwner {
        transferIsEnabled = _enable;
    }

    function totalNodesCreated() view external returns (uint) {
        return nodeCounter - 1;
    }

    function isBlacklisted(address wallet) view external returns (bool) {
        return _blacklist[wallet];
    }

    function createNode(address account, string memory nodeName) onlyContract override external {
        require(keccak256(bytes(nodeName)) != keccak256(bytes("V1 NODE")), "MANAGER: V1 NODE is reserved name");
        uint256 nodeId = nodeCounter;
        _createMansion(nodeId, nodeName, uint64(block.timestamp), uint64(block.timestamp), "", account);
        nodeCounter += 1;
    }

    function claim(address account, uint256 _id) external onlyIfExists(_id) onlyContract override returns (uint) {
        require(ownerOf(_id) == account, "MANAGER: You are not the owner");
        Mansion storage _node = _nodes[_id];
        uint interval = (block.timestamp - _node.claim) / claimTime;
        require(interval > 1, "MANAGER: Not enough time has passed between claims");
        uint rewardNode = (interval * (reward + (getUpgradeNodeCount(account) * reward)) * 10 ** 18) / precision;
        require(rewardNode > 1, "MANAGER: You don't have enough reward");
	    uint userMultiplier = getUserMultiplier(account);
        if(rewardNode > 0 && userMultiplier > 0 ){
            rewardNode = rewardNode + (rewardNode * userMultiplier / 1000);
                _node.claim = uint64(block.timestamp);
                return rewardNode;
        }
        if(rewardNode > 0) {
            _node.claim = uint64(block.timestamp);
            return rewardNode;
        } else {
            return 0;
        }
    }

    function updateMansion(uint256 id, string calldata metadata) external {
        Mansion storage mansion = _nodes[id];
        mansion.metadata = metadata;
    }

    function getMansions(uint256 _id) public view onlyIfExists(_id) returns (Mansion memory) {
        return _nodes[_id];
    }

    function getRewardOf(uint256 _id) public view onlyIfExists(_id) returns (uint) {
        Mansion memory _node = _nodes[_id];
        uint interval = (block.timestamp - _node.claim) / claimTime;
        return (interval * reward * 10 ** 18) / precision;
    }

    function getAddressRewards(address account) external view returns (uint) {
        uint256 rewardAmount = 0;
        uint256[] memory userMansions;
        userMansions = getMansionsOf(account);
        for (uint256 i = 0; i < userMansions.length; i++) {
            rewardAmount = rewardAmount + getRewardOf(userMansions[i]);
        }
        
        return rewardAmount;
    }

    function getNameOf(uint256 _id) public view override onlyIfExists(_id) returns (string memory) {
        return _nodes[_id].name;
    }

    function getMintOf(uint256 _id) public view override onlyIfExists(_id) returns (uint64) {
        return _nodes[_id].mint;
    }

    function getClaimOf(uint256 _id) public view override onlyIfExists(_id) returns (uint64) {
        return _nodes[_id].claim;
    }

    function getMansionsOf(address _account) public view returns (uint256[] memory) {
        return _bags[_account];
    }

    function setMultipliers(uint256 _foundersMultiplier, uint256 _districtMultiplier, uint256 _cityMultiplier) onlyOwner external {
        foundersMultiplier = _foundersMultiplier;
	    districtMultiplier = _districtMultiplier;
	    cityMultiplier = _cityMultiplier;
    }

    function _changeRewardPerMansion(uint64 newReward) onlyOwner external {
        reward = newReward;
    }

    function _changeClaimTime(uint64 newTime) onlyOwner external {
        claimTime = newTime;
    }

    function _changeRewards(uint64 newReward, uint64 newTime, uint32 newPrecision) onlyOwner external {
        reward = newReward;
        claimTime = newTime;
        precision = newPrecision;
    }

    function _setTokenUriFor(uint256 nodeId, string memory uri) onlyOwner external {
        _nodes[nodeId].metadata = uri;
    }

    function _setDefaultTokenUri(string memory uri) onlyOwner external {
        defaultUri = uri;
    }

    function _setBlacklist(address malicious, bool value) onlyOwner external {
        _blacklist[malicious] = value;
    }

    function _addMansion(uint256 _id, string calldata _name, uint64 _mint, uint64 _claim, string calldata _metadata, address _to) onlyOwner external {
        _createMansion(_id, _name, _mint, _claim, _metadata, _to);
    }

    function _deleteMansion(uint256 _id) onlyOwner external {
        address owner = ownerOf(_id);
        _balances[owner] -= 1;
        delete _owners[_id];
        delete _nodes[_id];
        _remove(_id, owner); 
    }

    function _deleteMultipleMansion(uint256[] calldata _ids) onlyOwner external {
        for (uint256 i = 0; i < _ids.length; i++) {
            uint256 _id = _ids[i];
            address owner = ownerOf(_id);
            _balances[owner] -= 1;
            delete _owners[_id];
            delete _nodes[_id];
            _remove(_id, owner);
        }
    }

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

    function setvbuy(uint64 _vbuy1, uint64 _vbuy2, uint64 _vbuy3, uint64 _vbuy4, uint64 _vbuy5, uint64 _vbuy6) external onlyOwner {
        vbuy1 = _vbuy1;
        vbuy2 = _vbuy2;
        vbuy3 = _vbuy3;
        vbuy4 = _vbuy4;
        vbuy5 = _vbuy5;
        vbuy6 = _vbuy6;
    }

    function price(address from) external view returns(uint256)
    {
        if(balanceOf(from) < 10){ return vbuy1; }
        if(balanceOf(from) >= 10 && balanceOf(from) <20) {return vbuy2;}
        if(balanceOf(from) >= 20 && balanceOf(from) <40) {return vbuy3;}
        if(balanceOf(from) >= 40 && balanceOf(from) <80) {return vbuy4;}
        if(balanceOf(from) >= 80 && balanceOf(from) <100) {return vbuy5;}
        if(balanceOf(from) >= 100) {return vbuy6;}
        
        return vbuy1;
        
    }

    function balanceOf(address owner, uint256 id) public override view returns (uint256 balance){
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balanceOfNFT[id][owner];
    }

    function getFoundersMultiplier(address from) public view returns(uint256) {
        if(FOUNDER.balanceOf(from) >= 1){ return foundersMultiplier; 
        }

        else{
            return 0;
        }
    }

    

    function getDistrictMultiplier(address from) public view returns(uint256){
        if(DISTRICT.balanceOf(from) >= 1){ return DISTRICT.balanceOf(from).mul(districtMultiplier); 
        }

        else{
            return 0;
        }
    }

    function getCityMultiplier(address from) public view returns(uint256){
        if(CITY.balanceOf(from) >= 1){ 
            return CITY.balanceOf(from).mul(cityMultiplier); 
        }
        else{
            return 0;
        }
        
    }

    function getUpgradeNodeCount(address from) public view returns(uint256)
    {   
        uint256 upgradeNodeCount;
        upgradeNodeCount = DISTRICT.balanceOf(from).add(CITY.balanceOf(from));

        uint256 upgradePerNode;
        upgradePerNode = upgradeNodeCount.div(balanceOf(from));

        return upgradePerNode;
        
    }

    function getUserMultiplier(address from) public view returns (uint256) {
         return getFoundersMultiplier(from).add(getDistrictMultiplier(from)).add(getCityMultiplier(from));
    }

   function setNewNodes(address _founder, address _district, address _city) external onlyOwner {
        FOUNDER = IERC721(_founder);
        DISTRICT = IERC721(_district);
        CITY = IERC721(_city);
    }

    function updateUpgradeManager(address _upgradeManager) external onlyOwner{
        upgradeManager = _upgradeManager;
    }

    function _createMansion(uint256 _id, string memory _name, uint64 _mint, uint64 _claim, string memory _metadata, address _to) internal {
        require(!_exists(_id), "MANAGER: Mansion already exist");
        _nodes[_id] = Mansion({
            name: _name,
            mint: _mint,
            claim: _claim,
            id: _id,
            metadata: _metadata
        });
        _owners[_id] = _to;
        _balances[_to] += 1;
        _bags[_to].push(_id);

        emit Transfer(address(0), _to, _id);
    }

    function _remove(uint256 _id, address _account) internal {
        uint256[] storage _ownerNodes = _bags[_account];
        uint length = _ownerNodes.length;

        uint _index = length;
        
        for (uint256 i = 0; i < length; i++) {
            if(_ownerNodes[i] == _id) {
                _index = i;
            }
        }
        if (_index >= _ownerNodes.length) return;
        
        _ownerNodes[_index] = _ownerNodes[length - 1];
        _ownerNodes.pop();
    }

    function name() external override pure returns (string memory) {
        return "Mansions";
    }

    function symbol() external override pure returns (string memory) {
        return "MANSIONS";
    }

    function tokenURI(uint256 tokenId) external override view returns (string memory) {
        Mansion memory _node = _nodes[uint64(tokenId)];
        if(bytes(_node.metadata).length == 0) {
            return defaultUri;
        } else {
            return _node.metadata;
        }
    }

    function balanceOf(address owner) public override view returns (uint256 balance){
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    function ownerOf(uint256 tokenId) public override view onlyIfExists(uint64(tokenId)) returns (address owner) {
        address theOwner = _owners[uint64(tokenId)];
        return theOwner;
    }

    function safeTransferFrom(address from, address to, uint256 tokenId ) external override {
        if (transferIsEnabled == true){
            safeTransferFrom(from, to, tokenId, "");
            }

        else {
            require (_msgSender() == upgradeManager, "District Transfers are not allowed");
            safeTransferFrom(from, to, tokenId, "");

        }
        
    }

    function renameMansion(uint64 id, string memory newName) external {
        require(keccak256(bytes(newName)) != keccak256(bytes("V1 NODE")), "MANAGER: V1 NODE is reserved name");
        require(ownerOf(id) == msg.sender, "MANAGER: You are not the owner");
        Mansion storage mansion = _nodes[id];
        mansion.name = newName;
    }

    function transferFrom(address from, address to,uint256 tokenId) external override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        if (transferIsEnabled == true){
            _transfer(from, to, tokenId);
            }

        else {
            require (to == deadAddress, "Mansion Transfers are not allowed");
            
            _transfer(from, to, tokenId);
        }
    }

    function approve(address to, uint256 tokenId) external override {
        address owner = ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    function getApproved(uint256 tokenId) public override view onlyIfExists(uint64(tokenId)) returns (address operator){
        return _tokenApprovals[uint64(tokenId)];
    }

    function setApprovalForAll(address operator, bool _approved) external override {
        _setApprovalForAll(_msgSender(), operator, _approved);
    }

    function isApprovedForAll(address owner, address operator) public view override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        if (transferIsEnabled == true){
            _safeTransfer(from, to, tokenId, _data);
            }

        else {
            require (_msgSender() == upgradeManager, "Mansion Transfers are not allowed");
            
            _safeTransfer(from, to, tokenId, _data);

        }
    }

    function supportsInterface(bytes4 interfaceId) external override pure returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId;
    }

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal {
        uint64 _id = uint64(tokenId);
        require(ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
        require(!_blacklist[to], "MANAGER: You can't transfer to blacklisted user");
        require(!_blacklist[from], "MANAGER: You can't transfer as blacklisted user");

        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[_id] = to;

        _bags[to].push(_id);
        _remove(_id, from);

        emit Transfer(from, to, tokenId);
    }

    function _approve(address to, uint256 tokenId) internal {
        _tokenApprovals[uint64(tokenId)] = to;
        emit Approval(ownerOf(tokenId), to, tokenId);
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view onlyIfExists(uint64(tokenId)) returns (bool) {
        address owner = ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[uint64(tokenId)] != address(0);
    }

    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal {
        require(owner != operator, "ERC721: approve to caller");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    

    

    
}

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"ContractOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint64","name":"_mint","type":"uint64"},{"internalType":"uint64","name":"_claim","type":"uint64"},{"internalType":"string","name":"_metadata","type":"string"},{"internalType":"address","name":"_to","type":"address"}],"name":"_addMansion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newTime","type":"uint64"}],"name":"_changeClaimTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newReward","type":"uint64"}],"name":"_changeRewardPerMansion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newReward","type":"uint64"},{"internalType":"uint64","name":"newTime","type":"uint64"},{"internalType":"uint32","name":"newPrecision","type":"uint32"}],"name":"_changeRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"_deleteMansion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_ids","type":"uint256[]"}],"name":"_deleteMultipleMansion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"malicious","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"_setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"name":"_setDefaultTokenUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"string","name":"uri","type":"string"}],"name":"_setTokenUriFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cityMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"claim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTime","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"nodeName","type":"string"}],"name":"createNode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"districtMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"enableTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"foundersMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"foundersNFT","outputs":[{"internalType":"contract FoundersNFT","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAddressRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"getCityMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getClaimOf","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"getDistrictMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"getFoundersMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getMansions","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"metadata","type":"string"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint64","name":"mint","type":"uint64"},{"internalType":"uint64","name":"claim","type":"uint64"}],"internalType":"struct MansionManager.Mansion","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getMansionsOf","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getMintOf","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getNameOf","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getRewardOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"getUpgradeNodeCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"getUserMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"helperContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"precision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"id","type":"uint64"},{"internalType":"string","name":"newName","type":"string"}],"name":"renameMansion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_foundersMultiplier","type":"uint256"},{"internalType":"uint256","name":"_districtMultiplier","type":"uint256"},{"internalType":"uint256","name":"_cityMultiplier","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_founder","type":"address"},{"internalType":"address","name":"_district","type":"address"},{"internalType":"address","name":"_city","type":"address"}],"name":"setNewNodes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"_vbuy1","type":"uint64"},{"internalType":"uint64","name":"_vbuy2","type":"uint64"},{"internalType":"uint64","name":"_vbuy3","type":"uint64"},{"internalType":"uint64","name":"_vbuy4","type":"uint64"},{"internalType":"uint64","name":"_vbuy5","type":"uint64"},{"internalType":"uint64","name":"_vbuy6","type":"uint64"}],"name":"setvbuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalNodesCreated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferContractOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferIsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"metadata","type":"string"}],"name":"updateMansion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_upgradeManager","type":"address"}],"name":"updateUpgradeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upgradeManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vbuy1","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vbuy2","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vbuy3","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vbuy4","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vbuy5","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vbuy6","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"}]

600280546001600160a01b0319908116733026c8ce0da81709a633e5a4a6745a188c25513717909155600b805490911661dead17905579048505f5e100000000000000000000000000000000000000dead600c55600d80546001600160801b0319166201518017905560a06040819052600060808190526200008491600e91620001ce565b506001600f9081557823000000000000001e00000000000000190000000000000014601055601180546001600160801b031916682d000000000000002817905560fa6012556013556000601455601580546001600160a81b031916743026c8ce0da81709a633e5a4a6745a188c255137001790556016805461dead6001600160a01b031991821681179092556017805490911690911790553480156200012957600080fd5b5062000135336200017e565b600180546001600160a01b0319163390811790915560405181906000907f2260a4d0c00902d7996e8f7d669d22564414d41be4d278a40387ddf58179d392908290a350620002b1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620001dc9062000274565b90600052602060002090601f0160209004810192826200020057600085556200024b565b82601f106200021b57805160ff19168380011785556200024b565b828001600101855582156200024b579182015b828111156200024b5782518255916020019190600101906200022e565b50620002599291506200025d565b5090565b5b808211156200025957600081556001016200025e565b600181811c908216806200028957607f821691505b60208210811415620002ab57634e487b7160e01b600052602260045260246000fd5b50919050565b6149ef80620002c16000396000f3fe608060405234801561001057600080fd5b50600436106104565760003560e01c806395d89b4111610250578063c6de84d311610150578063eeaa7d12116100c8578063f2fee2dc11610097578063fe575a871161007c578063fe575a8714610a60578063feb2696f14610a8c578063ff86a37314610a9f57600080fd5b8063f2fee2dc14610a3a578063f5945d0d14610a4d57600080fd5b8063eeaa7d12146109ee578063ef7ac0e514610a01578063f03637ca14610a14578063f2fde38b14610a2757600080fd5b8063d3b5dc3b1161011f578063e240c09c11610104578063e240c09c1461098b578063e4338aa31461099f578063e985e9c5146109b257600080fd5b8063d3b5dc3b1461094c578063de1547611461097857600080fd5b8063c6de84d3146108fe578063c85f22fe14610911578063c87b56dd14610931578063d2d99fec1461094457600080fd5b8063aad3ec96116101e3578063b8527aef116101b2578063bb33399d11610197578063bb33399d146108bd578063c5e22f3f146108d8578063c69533eb146108eb57600080fd5b8063b8527aef146108a2578063b88d4fde146108aa57600080fd5b8063aad3ec9614610856578063aea9107814610869578063b0d17f6f1461087c578063b2f62b961461088f57600080fd5b8063a22cb4651161021f578063a22cb46514610816578063a52c389514610829578063a5dc9e1b14610832578063a843c51f1461084357600080fd5b806395d89b411461079b578063963e0dc1146107d457806399e3b18d146107e85780639f654c74146107fb57600080fd5b8063371ffa641161035b5780636ce46bc3116102ee578063782f346c116102bd5780638da5cb5b116102a25780638da5cb5b146107575780638db7a464146107685780638e4bcb221461077b57600080fd5b8063782f346c146107315780637cba4e5e1461074457600080fd5b80636ce46bc3146106f057806370a0823114610703578063715018a6146107165780637318185a1461071e57600080fd5b806342842e0e1161032a57806342842e0e146106ae578063594d129f146106c15780636352211e146106d45780636ad70fb1146106e757600080fd5b8063371ffa641461066c57806337aad4ba1461067f5780633b0f4311146106925780633fc9850f1461069b57600080fd5b80630ca54f29116103ee578063228cb733116103bd57806327b3bf11116103a257806327b3bf111461060957806327c8f835146106465780632b3527151461065957600080fd5b8063228cb733146105db57806323b872dd146105f657600080fd5b80630ca54f291461058d5780631107aec5146105a857806312b8603f146105bb5780632282d9f2146105ce57600080fd5b806306fdde031161042a57806306fdde03146104cc578063081812fc1461050e578063095ea7b3146105395780630b0f69f21461054c57600080fd5b8062fdd58e1461045b57806301ffc9a714610481578063033e7878146104a45780630407c933146104b7575b600080fd5b61046e6104693660046140aa565b610ab2565b6040519081526020015b60405180910390f35b61049461048f366004614102565b610b5d565b6040519015158152602001610478565b61046e6104b236600461411f565b610bf6565b6104ca6104c5366004614138565b610e78565b005b60408051808201909152600881527f4d616e73696f6e7300000000000000000000000000000000000000000000000060208201525b60405161047891906141fa565b61052161051c36600461411f565b610fca565b6040516001600160a01b039091168152602001610478565b6104ca6105473660046140aa565b611078565b60105461057490700100000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610478565b60105461057490600160401b900467ffffffffffffffff1681565b61046e6105b636600461420d565b6111a5565b6104ca6105c93660046142d4565b6112a5565b6015546104949060ff1681565b600c5461057490600160c01b900467ffffffffffffffff1681565b6104ca610604366004614322565b611410565b600d54610625906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff9091168152602001610478565b600b54610521906001600160a01b031681565b6104ca6106673660046143bf565b611535565b6104ca61067a36600461446d565b611613565b6104ca61068d3660046144a2565b611684565b61046e60135481565b61046e6106a936600461420d565b611703565b6104ca6106bc366004614322565b61180d565b6105746106cf36600461411f565b6118dc565b6105216106e236600461411f565b611983565b61046e60125481565b6104ca6106fe3660046144d3565b611a31565b61046e61071136600461420d565b611a99565b6104ca611b33565b6104ca61072c3660046144ff565b611b99565b61046e61073f36600461420d565b611c99565b6104ca610752366004614573565b611d49565b6000546001600160a01b0316610521565b61057461077636600461411f565b611ddd565b61078e61078936600461420d565b611e8b565b604051610478919061458e565b60408051808201909152600881527f4d414e53494f4e530000000000000000000000000000000000000000000000006020820152610501565b6010546105749067ffffffffffffffff1681565b61046e6107f636600461420d565b611ef7565b60115461057490600160401b900467ffffffffffffffff1681565b6104ca6108243660046145e2565b611f5c565b61046e60145481565b6001546001600160a01b0316610521565b6104ca61085136600461420d565b611f67565b61046e6108643660046140aa565b6120a6565b61046e61087736600461420d565b612498565b6104ca61088a3660046145e2565b6125fa565b6104ca61089d366004614615565b61267f565b61046e612745565b6104ca6108b8366004614658565b61275b565b60105461057490600160c01b900467ffffffffffffffff1681565b61046e6108e636600461420d565b612893565b6104ca6108f936600461420d565b6128b6565b6104ca61090c366004614573565b61293f565b61092461091f36600461411f565b6129c4565b60405161047891906146d4565b61050161093f36600461411f565b612c09565b610501612e34565b600c5461096390600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610478565b600c54610521906001600160a01b031681565b6011546105749067ffffffffffffffff1681565b600254610521906001600160a01b031681565b6104946109c0366004614748565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b6104ca6109fc366004614772565b612ec2565b6104ca610a0f3660046147be565b612ee5565b610501610a2236600461411f565b612f52565b6104ca610a3536600461420d565b612ffa565b6104ca610a483660046147d9565b6130dc565b61046e610a5b36600461420d565b613244565b610494610a6e36600461420d565b6001600160a01b03166000908152600a602052604090205460ff1690565b6104ca610a9a36600461411f565b6132cb565b6104ca610aad3660046147f5565b6133db565b60006001600160a01b038316610b355760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602090815260408083206001600160a01b03949094168352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480610bf057507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b92915050565b67ffffffffffffffff811660009081526005602052604081205482906001600160a01b0316610c7c5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b2c565b600083815260066020526040808220815160a08101909252805482908290610ca390614845565b80601f0160208091040260200160405190810160405280929190818152602001828054610ccf90614845565b8015610d1c5780601f10610cf157610100808354040283529160200191610d1c565b820191906000526020600020905b815481529060010190602001808311610cff57829003601f168201915b50505050508152602001600182018054610d3590614845565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6190614845565b8015610dae5780601f10610d8357610100808354040283529160200191610dae565b820191906000526020600020905b815481529060010190602001808311610d9157829003601f168201915b50505091835250506002820154602082015260039091015467ffffffffffffffff8082166040840152600160401b9091048116606090920191909152600d5460808301519293506000926fffffffffffffffffffffffffffffffff90911691610e18911642614890565b610e2291906148a7565b600c54909150600160a01b810463ffffffff1690610e5190600160c01b900467ffffffffffffffff16836148c9565b610e6390670de0b6b3a76400006148c9565b610e6d91906148a7565b935050505b50919050565b6000546001600160a01b03163314610ed25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b60005b81811015610fc5576000838383818110610ef157610ef16148e8565b9050602002013590506000610f0582611983565b6001600160a01b03811660009081526003602052604081208054929350600192909190610f33908490614890565b90915550506000828152600560209081526040808320805473ffffffffffffffffffffffffffffffffffffffff191690556006909152812090610f768282613f4c565b610f84600183016000613f4c565b506000600282015560030180546fffffffffffffffffffffffffffffffff19169055610fb082826134b0565b50508080610fbd906148fe565b915050610ed5565b505050565b67ffffffffffffffff81166000818152600560205260408120549091906001600160a01b03166110515760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b2c565b505067ffffffffffffffff166000908152600860205260409020546001600160a01b031690565b600061108382611983565b9050806001600160a01b0316836001600160a01b0316141561110d5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610b2c565b336001600160a01b0382161480611129575061112981336109c0565b61119b5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610b2c565b610fc58383613595565b6016546040516370a0823160e01b81526001600160a01b0383811660048301526000926001929116906370a0823190602401602060405180830381865afa1580156111f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112189190614919565b10611298576013546016546040516370a0823160e01b81526001600160a01b038581166004830152610bf0939216906370a08231906024015b602060405180830381865afa15801561126e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112929190614919565b9061361b565b506000919050565b919050565b6001546001600160a01b031633146112ff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b60408051808201909152600781527f5631204e4f4445000000000000000000000000000000000000000000000000006020918201528151908201207f726ca9a11821b08e8b39a0c12fff38e2a582b4c38cfe7da1888136bad2ac4c4214156113cf5760405162461bcd60e51b815260206004820152602160248201527f4d414e414745523a205631204e4f4445206973207265736572766564206e616d60448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608401610b2c565b6000600f5490506113f381834242604051806020016040528060008152508861362e565b6001600f60008282546114069190614932565b9091555050505050565b61141a3382613817565b61148c5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610b2c565b60155460ff161515600114156114a757610fc583838361391d565b600b546001600160a01b0383811691161461152a5760405162461bcd60e51b815260206004820152602160248201527f4d616e73696f6e205472616e736665727320617265206e6f7420616c6c6f776560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610b2c565b610fc583838361391d565b6000546001600160a01b0316331461158f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b6116098888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528b93508a925090899089908190840183828082843760009201919091525089925061362e915050565b5050505050505050565b6000546001600160a01b0316331461166d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b805161168090600e906020840190613f86565b5050565b6000546001600160a01b031633146116de5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b60008281526006602090815260409091208251610fc592600190920191840190613f86565b6017546040516370a0823160e01b81526001600160a01b03838116600483015260009283926117ee92909116906370a0823190602401602060405180830381865afa158015611756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177a9190614919565b6016546040516370a0823160e01b81526001600160a01b038781166004830152909116906370a0823190602401602060405180830381865afa1580156117c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e89190614919565b90613be1565b905060006118056117fe85611a99565b8390613bed565b949350505050565b60155460ff1615156001141561183857610fc58383836040518060200160405280600081525061275b565b600c546001600160a01b0316336001600160a01b0316146118c15760405162461bcd60e51b815260206004820152602260248201527f4469737472696374205472616e736665727320617265206e6f7420616c6c6f7760448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610b2c565b610fc58383836040518060200160405280600081525061275b565b67ffffffffffffffff811660009081526005602052604081205482906001600160a01b03166119625760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b2c565b505060009081526006602052604090206003015467ffffffffffffffff1690565b67ffffffffffffffff81166000818152600560205260408120549091906001600160a01b0316611a0a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b2c565b505067ffffffffffffffff166000908152600560205260409020546001600160a01b031690565b6000546001600160a01b03163314611a8b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b601292909255601355601455565b60006001600160a01b038216611b175760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610b2c565b506001600160a01b031660009081526003602052604090205490565b6000546001600160a01b03163314611b8d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b611b976000613bf9565b565b6000546001600160a01b03163314611bf35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b6010805467ffffffffffffffff9788166fffffffffffffffffffffffffffffffff1991821617600160401b9789168802176fffffffffffffffffffffffffffffffff167001000000000000000000000000000000009689169690960277ffffffffffffffffffffffffffffffffffffffffffffffff1695909517600160c01b94881694909402939093179092556011805491861691909316179316909102919091179055565b6017546040516370a0823160e01b81526001600160a01b0383811660048301526000926001929116906370a0823190602401602060405180830381865afa158015611ce8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0c9190614919565b10611298576014546017546040516370a0823160e01b81526001600160a01b038581166004830152610bf0939216906370a0823190602401611251565b6000546001600160a01b03163314611da35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b600c805467ffffffffffffffff909216600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b67ffffffffffffffff811660009081526005602052604081205482906001600160a01b0316611e635760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b2c565b5050600090815260066020526040902060030154600160401b900467ffffffffffffffff1690565b6001600160a01b038116600090815260076020908152604091829020805483518184028101840190945280845260609392830182828015611eeb57602002820191906000526020600020905b815481526020019060010190808311611ed7575b50505050509050919050565b6000806060611f0584611e8b565b905060005b8151811015611f5357611f35828281518110611f2857611f286148e8565b6020026020010151610bf6565b611f3f9084614932565b925080611f4b816148fe565b915050611f0a565b50909392505050565b611680338383613c56565b6000546001600160a01b03163314611fc15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b6001600160a01b03811661203d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610b2c565b6001546040516001600160a01b038084169216907f2260a4d0c00902d7996e8f7d669d22564414d41be4d278a40387ddf58179d39290600090a36001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b67ffffffffffffffff811660009081526005602052604081205482906001600160a01b031661212c5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b2c565b6001546001600160a01b031633146121865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b836001600160a01b031661219984611983565b6001600160a01b0316146121ef5760405162461bcd60e51b815260206004820152601e60248201527f4d414e414745523a20596f7520617265206e6f7420746865206f776e657200006044820152606401610b2c565b6000838152600660205260408120600d5460038201549192916fffffffffffffffffffffffffffffffff9091169061223890600160401b900467ffffffffffffffff1642614890565b61224291906148a7565b9050600181116122ba5760405162461bcd60e51b815260206004820152603260248201527f4d414e414745523a204e6f7420656e6f7567682074696d65206861732070617360448201527f736564206265747765656e20636c61696d7300000000000000000000000000006064820152608401610b2c565b600c54600090600160a01b810463ffffffff1690600160c01b900467ffffffffffffffff166122e889611703565b6122f291906148c9565b600c546123109190600160c01b900467ffffffffffffffff16614932565b61231a90846148c9565b61232c90670de0b6b3a76400006148c9565b61233691906148a7565b9050600181116123ae5760405162461bcd60e51b815260206004820152602560248201527f4d414e414745523a20596f7520646f6e2774206861766520656e6f756768207260448201527f65776172640000000000000000000000000000000000000000000000000000006064820152608401610b2c565b60006123b988612893565b90506000821180156123cb5750600081115b1561243b576103e86123dd82846148c9565b6123e791906148a7565b6123f19083614932565b60039490940180547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16600160401b4267ffffffffffffffff160217905550919350612491915050565b8115612488575060039290920180547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16600160401b4267ffffffffffffffff1602179055509150612491565b60009550505050505b5092915050565b6000600a6124a583611a99565b10156124bd57505060105467ffffffffffffffff1690565b600a6124c883611a99565b101580156124de575060146124dc83611a99565b105b156124fc575050601054600160401b900467ffffffffffffffff1690565b601461250783611a99565b1015801561251d5750602861251b83611a99565b105b15612548575050601054700100000000000000000000000000000000900467ffffffffffffffff1690565b602861255383611a99565b101580156125695750605061256783611a99565b105b15612587575050601054600160c01b900467ffffffffffffffff1690565b605061259283611a99565b101580156125a8575060646125a683611a99565b105b156125bf57505060115467ffffffffffffffff1690565b60646125ca83611a99565b106125e8575050601154600160401b900467ffffffffffffffff1690565b505060105467ffffffffffffffff1690565b6000546001600160a01b031633146126545760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146126d95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b601580546001600160a01b03948516610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff9091161790556016805492841673ffffffffffffffffffffffffffffffffffffffff1993841617905560178054919093169116179055565b60006001600f546127569190614890565b905090565b6127653383613817565b6127d75760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610b2c565b60155460ff161515600114156127f8576127f384848484613d25565b61288d565b600c546001600160a01b0316336001600160a01b0316146128815760405162461bcd60e51b815260206004820152602160248201527f4d616e73696f6e205472616e736665727320617265206e6f7420616c6c6f776560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610b2c565b61288d84848484613d25565b50505050565b6000610bf06128a183611c99565b6117e86128ad856111a5565b6117e886613244565b6000546001600160a01b031633146129105760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146129995760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b600d80546fffffffffffffffffffffffffffffffff191667ffffffffffffffff909216919091179055565b612a0a6040518060a00160405280606081526020016060815260200160008152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b81612a368167ffffffffffffffff166000908152600560205260409020546001600160a01b0316151590565b612a975760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b2c565b60008381526006602052604090819020815160a08101909252805482908290612abf90614845565b80601f0160208091040260200160405190810160405280929190818152602001828054612aeb90614845565b8015612b385780601f10612b0d57610100808354040283529160200191612b38565b820191906000526020600020905b815481529060010190602001808311612b1b57829003601f168201915b50505050508152602001600182018054612b5190614845565b80601f0160208091040260200160405190810160405280929190818152602001828054612b7d90614845565b8015612bca5780601f10612b9f57610100808354040283529160200191612bca565b820191906000526020600020905b815481529060010190602001808311612bad57829003601f168201915b50505091835250506002820154602082015260039091015467ffffffffffffffff8082166040840152600160401b909104166060909101529392505050565b60606000600660008467ffffffffffffffff1681526020019081526020016000206040518060a0016040529081600082018054612c4590614845565b80601f0160208091040260200160405190810160405280929190818152602001828054612c7190614845565b8015612cbe5780601f10612c9357610100808354040283529160200191612cbe565b820191906000526020600020905b815481529060010190602001808311612ca157829003601f168201915b50505050508152602001600182018054612cd790614845565b80601f0160208091040260200160405190810160405280929190818152602001828054612d0390614845565b8015612d505780601f10612d2557610100808354040283529160200191612d50565b820191906000526020600020905b815481529060010190602001808311612d3357829003601f168201915b5050509183525050600282015460208083019190915260039092015467ffffffffffffffff8082166040840152600160401b9091041660609091015281015151909150612e2a57600e8054612da490614845565b80601f0160208091040260200160405190810160405280929190818152602001828054612dd090614845565b8015612e1d5780601f10612df257610100808354040283529160200191612e1d565b820191906000526020600020905b815481529060010190602001808311612e0057829003601f168201915b5050505050915050919050565b6020015192915050565b600e8054612e4190614845565b80601f0160208091040260200160405190810160405280929190818152602001828054612e6d90614845565b8015612eba5780601f10612e8f57610100808354040283529160200191612eba565b820191906000526020600020905b815481529060010190602001808311612e9d57829003601f168201915b505050505081565b6000838152600660205260409020612ede60018201848461400a565b5050505050565b6000546001600160a01b03163314612f3f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b6015805460ff1916911515919091179055565b606081612f808167ffffffffffffffff166000908152600560205260409020546001600160a01b0316151590565b612fe15760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b2c565b60008381526006602052604090208054612da490614845565b6000546001600160a01b031633146130545760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b6001600160a01b0381166130d05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610b2c565b6130d981613bf9565b50565b60408051808201909152600781527f5631204e4f4445000000000000000000000000000000000000000000000000006020918201528151908201207f726ca9a11821b08e8b39a0c12fff38e2a582b4c38cfe7da1888136bad2ac4c4214156131ac5760405162461bcd60e51b815260206004820152602160248201527f4d414e414745523a205631204e4f4445206973207265736572766564206e616d60448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608401610b2c565b336131c067ffffffffffffffff8416611983565b6001600160a01b0316146132165760405162461bcd60e51b815260206004820152601e60248201527f4d414e414745523a20596f7520617265206e6f7420746865206f776e657200006044820152606401610b2c565b67ffffffffffffffff821660009081526006602090815260409091208251909161288d918391850190613f86565b6015546040516370a0823160e01b81526001600160a01b038381166004830152600092600192610100909104909116906370a0823190602401602060405180830381865afa15801561329a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132be9190614919565b1061129857505060125490565b6000546001600160a01b031633146133255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b600061333082611983565b6001600160a01b0381166000908152600360205260408120805492935060019290919061335e908490614890565b90915550506000828152600560209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1916905560069091528120906133a18282613f4c565b6133af600183016000613f4c565b506000600282015560030180546fffffffffffffffffffffffffffffffff1916905561168082826134b0565b6000546001600160a01b031633146134355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2c565b600c8054600d80546fffffffffffffffffffffffffffffffff191667ffffffffffffffff95861617905563ffffffff909216600160a01b027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff93909416600160c01b02929092166001600160a01b0390911617919091179055565b6001600160a01b03811660009081526007602052604081208054909181905b8281101561351157858482815481106134ea576134ea6148e8565b906000526020600020015414156134ff578091505b80613509816148fe565b9150506134cf565b5082548110613521575050505050565b8261352d600184614890565b8154811061353d5761353d6148e8565b906000526020600020015483828154811061355a5761355a6148e8565b9060005260206000200181905550828054806135785761357861494a565b600190038181906000526020600020016000905590555050505050565b67ffffffffffffffff81166000908152600860205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906135e282611983565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061362782846148c9565b9392505050565b67ffffffffffffffff86166000908152600560205260409020546001600160a01b03161561369e5760405162461bcd60e51b815260206004820152601e60248201527f4d414e414745523a204d616e73696f6e20616c726561647920657869737400006044820152606401610b2c565b6040805160a081018252868152602080820185905281830189905267ffffffffffffffff8088166060840152861660808301526000898152600682529290922081518051929391926136f39284920190613f86565b50602082810151805161370c9260018501920190613f86565b50604082810151600283015560608301516003928301805460809095015167ffffffffffffffff908116600160401b026fffffffffffffffffffffffffffffffff199096169216919091179390931790925560008881526005602090815283822080546001600160a01b03871673ffffffffffffffffffffffffffffffffffffffff1990911681179091558252919091529081208054600192906137b1908490614932565b90915550506001600160a01b0381166000818152600760209081526040808320805460018101825590845291832090910189905551889291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4505050505050565b67ffffffffffffffff81166000818152600560205260408120549091906001600160a01b031661389e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b2c565b60006138a984611983565b9050806001600160a01b0316856001600160a01b031614806138e45750846001600160a01b03166138d985610fca565b6001600160a01b0316145b8061391457506001600160a01b0380821660009081526009602090815260408083209389168352929052205460ff165b95945050505050565b806001600160a01b03841661393182611983565b6001600160a01b0316146139ad5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610b2c565b6001600160a01b0383166000908152600a602052604090205460ff1615613a3c5760405162461bcd60e51b815260206004820152602f60248201527f4d414e414745523a20596f752063616e2774207472616e7366657220746f206260448201527f6c61636b6c6973746564207573657200000000000000000000000000000000006064820152608401610b2c565b6001600160a01b0384166000908152600a602052604090205460ff1615613acb5760405162461bcd60e51b815260206004820152602f60248201527f4d414e414745523a20596f752063616e2774207472616e73666572206173206260448201527f6c61636b6c6973746564207573657200000000000000000000000000000000006064820152608401610b2c565b613ad6600083613595565b6001600160a01b0384166000908152600360205260408120805460019290613aff908490614890565b90915550506001600160a01b0383166000908152600360205260408120805460019290613b2d908490614932565b909155505067ffffffffffffffff81166000818152600560209081526040808320805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03891690811790915583526007825282208054600181018255908352912001819055613b9a90856134b0565b81836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b60006136278284614932565b600061362782846148a7565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b816001600160a01b0316836001600160a01b03161415613cb85760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b2c565b6001600160a01b03838116600081815260096020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b613d3084848461391d565b613d3c84848484613dae565b61288d5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610b2c565b60006001600160a01b0384163b15613f41576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290613e0b903390899088908890600401614960565b6020604051808303816000875af1925050508015613e46575060408051601f3d908101601f19168201909252613e439181019061499c565b60015b613ef6573d808015613e74576040519150601f19603f3d011682016040523d82523d6000602084013e613e79565b606091505b508051613eee5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610b2c565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611805565b506001949350505050565b508054613f5890614845565b6000825580601f10613f68575050565b601f0160209004906000526020600020908101906130d9919061407e565b828054613f9290614845565b90600052602060002090601f016020900481019282613fb45760008555613ffa565b82601f10613fcd57805160ff1916838001178555613ffa565b82800160010185558215613ffa579182015b82811115613ffa578251825591602001919060010190613fdf565b5061400692915061407e565b5090565b82805461401690614845565b90600052602060002090601f0160209004810192826140385760008555613ffa565b82601f106140515782800160ff19823516178555613ffa565b82800160010185558215613ffa579182015b82811115613ffa578235825591602001919060010190614063565b5b80821115614006576000815560010161407f565b80356001600160a01b03811681146112a057600080fd5b600080604083850312156140bd57600080fd5b6140c683614093565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146130d957600080fd5b60006020828403121561411457600080fd5b8135613627816140d4565b60006020828403121561413157600080fd5b5035919050565b6000806020838503121561414b57600080fd5b823567ffffffffffffffff8082111561416357600080fd5b818501915085601f83011261417757600080fd5b81358181111561418657600080fd5b8660208260051b850101111561419b57600080fd5b60209290920196919550909350505050565b6000815180845260005b818110156141d3576020818501810151868301820152016141b7565b818111156141e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061362760208301846141ad565b60006020828403121561421f57600080fd5b61362782614093565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561425957614259614228565b604051601f8501601f19908116603f0116810190828211818310171561428157614281614228565b8160405280935085815286868601111561429a57600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126142c557600080fd5b6136278383356020850161423e565b600080604083850312156142e757600080fd5b6142f083614093565b9150602083013567ffffffffffffffff81111561430c57600080fd5b614318858286016142b4565b9150509250929050565b60008060006060848603121561433757600080fd5b61434084614093565b925061434e60208501614093565b9150604084013590509250925092565b60008083601f84011261437057600080fd5b50813567ffffffffffffffff81111561438857600080fd5b6020830191508360208285010111156143a057600080fd5b9250929050565b803567ffffffffffffffff811681146112a057600080fd5b60008060008060008060008060c0898b0312156143db57600080fd5b88359750602089013567ffffffffffffffff808211156143fa57600080fd5b6144068c838d0161435e565b909950975087915061441a60408c016143a7565b965061442860608c016143a7565b955060808b013591508082111561443e57600080fd5b5061444b8b828c0161435e565b909450925061445e905060a08a01614093565b90509295985092959890939650565b60006020828403121561447f57600080fd5b813567ffffffffffffffff81111561449657600080fd5b611805848285016142b4565b600080604083850312156144b557600080fd5b82359150602083013567ffffffffffffffff81111561430c57600080fd5b6000806000606084860312156144e857600080fd5b505081359360208301359350604090920135919050565b60008060008060008060c0878903121561451857600080fd5b614521876143a7565b955061452f602088016143a7565b945061453d604088016143a7565b935061454b606088016143a7565b9250614559608088016143a7565b915061456760a088016143a7565b90509295509295509295565b60006020828403121561458557600080fd5b613627826143a7565b6020808252825182820181905260009190848201906040850190845b818110156145c6578351835292840192918401916001016145aa565b50909695505050505050565b803580151581146112a057600080fd5b600080604083850312156145f557600080fd5b6145fe83614093565b915061460c602084016145d2565b90509250929050565b60008060006060848603121561462a57600080fd5b61463384614093565b925061464160208501614093565b915061464f60408501614093565b90509250925092565b6000806000806080858703121561466e57600080fd5b61467785614093565b935061468560208601614093565b925060408501359150606085013567ffffffffffffffff8111156146a857600080fd5b8501601f810187136146b957600080fd5b6146c88782356020840161423e565b91505092959194509250565b602081526000825160a060208401526146f060c08401826141ad565b90506020840151601f1984830301604085015261470d82826141ad565b91505060408401516060840152606084015167ffffffffffffffff80821660808601528060808701511660a086015250508091505092915050565b6000806040838503121561475b57600080fd5b61476483614093565b915061460c60208401614093565b60008060006040848603121561478757600080fd5b83359250602084013567ffffffffffffffff8111156147a557600080fd5b6147b18682870161435e565b9497909650939450505050565b6000602082840312156147d057600080fd5b613627826145d2565b600080604083850312156147ec57600080fd5b6142f0836143a7565b60008060006060848603121561480a57600080fd5b614813846143a7565b9250614821602085016143a7565b9150604084013563ffffffff8116811461483a57600080fd5b809150509250925092565b600181811c9082168061485957607f821691505b60208210811415610e7257634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156148a2576148a261487a565b500390565b6000826148c457634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156148e3576148e361487a565b500290565b634e487b7160e01b600052603260045260246000fd5b60006000198214156149125761491261487a565b5060010190565b60006020828403121561492b57600080fd5b5051919050565b600082198211156149455761494561487a565b500190565b634e487b7160e01b600052603160045260246000fd5b60006001600160a01b0380871683528086166020840152508360408301526080606083015261499260808301846141ad565b9695505050505050565b6000602082840312156149ae57600080fd5b8151613627816140d456fea26469706673582212203a47577a6bc587ef134963e483cc7e18984bd7e72c60cd2c5188234a7dbe3a8564736f6c634300080b0033

Deployed ByteCode Sourcemap

24987:17712:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33296:227;;;;;;:::i;:::-;;:::i;:::-;;;620:25:1;;;608:2;593:18;33296:227:0;;;;;;;;39830:229;;;;;;:::i;:::-;;:::i;:::-;;;1253:14:1;;1246:22;1228:41;;1216:2;1201:18;39830:229:0;1088:187:1;29068:262:0;;;;;;:::i;:::-;;:::i;31834:364::-;;;;;;:::i;:::-;;:::i;:::-;;36215:99;36289:17;;;;;;;;;;;;;;;;;36215:99;;;;;;;:::i;38790:173::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3010:55:1;;;2992:74;;2980:2;2965:18;38790:173:0;2846:226:1;38384:398:0;;;;;;:::i;:::-;;:::i;26305:24::-;;;;;;;;;;;;;;;3251:18:1;3239:31;;;3221:50;;3209:2;3194:18;26305:24:0;3077:200:1;26274:24:0;;;;;-1:-1:-1;;;26274:24:0;;;;;;33762:245;;;;;;:::i;:::-;;:::i;27321:386::-;;;;;;:::i;:::-;;:::i;26564:37::-;;;;;;;;;26086:27;;;;;-1:-1:-1;;;26086:27:0;;;;;;37908:468;;;;;;:::i;:::-;;:::i;26120:32::-;;;;;;;;;;;;5495:34:1;5483:47;;;5465:66;;5453:2;5438:18;26120:32:0;5319:218:1;25879:71:0;;;;;-1:-1:-1;;;;;25879:71:0;;;31372:221;;;;;;:::i;:::-;;:::i;31133:102::-;;;;;;:::i;:::-;;:::i;30998:127::-;;;;;;:::i;:::-;;:::i;26477:38::-;;;;;;34274:347;;;;;;:::i;:::-;;:::i;37152:394::-;;;;;;:::i;:::-;;:::i;29880:130::-;;;;;;:::i;:::-;;:::i;36947:197::-;;;;;;:::i;:::-;;:::i;26431:39::-;;;;;;30287:273;;;;;;:::i;:::-;;:::i;36732:207::-;;;;;;:::i;:::-;;:::i;8275:103::-;;;:::i;32480:284::-;;;;;;:::i;:::-;;:::i;34015:251::-;;;;;;:::i;:::-;;:::i;30568:107::-;;;;;;:::i;:::-;;:::i;7624:87::-;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;7624:87;;30018:132;;;;;;:::i;:::-;;:::i;30158:121::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;36322:101::-;36398:17;;;;;;;;;;;;;;;;;36322:101;;26243:24;;;;;;;;;29338:389;;;;;;:::i;:::-;;:::i;26398:24::-;;;;;-1:-1:-1;;;26398:24:0;;;;;;38971:151;;;;;;:::i;:::-;;:::i;26522:33::-;;;;;;24671:91;24745:9;;-1:-1:-1;;;;;24745:9:0;24671:91;;32206:266;;;;;;:::i;:::-;;:::i;27715:1040::-;;;;;;:::i;:::-;;:::i;32772:516::-;;;;;;:::i;:::-;;:::i;31243:121::-;;;;;;:::i;:::-;;:::i;34823:210::-;;;;;;:::i;:::-;;:::i;27094:99::-;;;:::i;39294:528::-;;;;;;:::i;:::-;;:::i;26336:24::-;;;;;-1:-1:-1;;;26336:24:0;;;;;;34629:187;;;;;;:::i;:::-;;:::i;35041:124::-;;;;;;:::i;:::-;;:::i;30683:99::-;;;;;;:::i;:::-;;:::i;28934:126::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;36431:293::-;;;;;;:::i;:::-;;:::i;26159:29::-;;;:::i;26044:35::-;;;;;-1:-1:-1;;;26044:35:0;;;;;;;;;12020:10:1;12008:23;;;11990:42;;11978:2;11963:18;26044:35:0;11846:192:1;25957:74:0;;;;;-1:-1:-1;;;;;25957:74:0;;;26367:24;;;;;;;;;25165:88;;;;;-1:-1:-1;;;;;25165:88:0;;;39130:156;;;;;;:::i;:::-;-1:-1:-1;;;;;39243:25:0;;;39219:4;39243:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;39130:156;28763:163;;;;;;:::i;:::-;;:::i;26983:103::-;;;;;;:::i;:::-;;:::i;29735:137::-;;;;;;:::i;:::-;;:::i;8533:201::-;;;;;;:::i;:::-;;:::i;37554:346::-;;;;;;:::i;:::-;;:::i;33531:215::-;;;;;;:::i;:::-;;:::i;27201:112::-;;;;;;:::i;:::-;-1:-1:-1;;;;;27287:18:0;27263:4;27287:18;;;:10;:18;;;;;;;;;27201:112;31601:225;;;;;;:::i;:::-;;:::i;30790:200::-;;;;;;:::i;:::-;;:::i;33296:227::-;33372:15;-1:-1:-1;;;;;33407:19:0;;33399:74;;;;-1:-1:-1;;;33399:74:0;;14253:2:1;33399:74:0;;;14235:21:1;14292:2;14272:18;;;14265:30;14331:34;14311:18;;;14304:62;14402:12;14382:18;;;14375:40;14432:19;;33399:74:0;;;;;;;;;-1:-1:-1;33491:17:0;;;;:13;:17;;;;;;;;-1:-1:-1;;;;;33491:24:0;;;;;;;;;;;;33296:227::o;39830:229::-;39909:4;39946:40;;;39961:25;39946:40;;:105;;-1:-1:-1;40003:48:0;;;40018:33;40003:48;39946:105;39926:125;39830:229;-1:-1:-1;;39830:229:0:o;29068:262::-;41275:24;;;29141:4;41275:24;;;:7;:24;;;;;;29127:3;;-1:-1:-1;;;;;41275:24:0;26886:69;;;;-1:-1:-1;;;26886:69:0;;14664:2:1;26886:69:0;;;14646:21:1;14703:2;14683:18;;;14676:30;14742:34;14722:18;;;14715:62;-1:-1:-1;;;14793:18:1;;;14786:42;14845:19;;26886:69:0;14462:408:1;26886:69:0;29158:20:::1;29181:11:::0;;;:6:::1;:11;::::0;;;;;29158:34;;::::1;::::0;::::1;::::0;;;;;;;29181:11;;29158:34:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;29158:34:0;;;-1:-1:-1;;29158:34:0::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;29158:34:0;;::::1;::::0;::::1;::::0;;;;;;;;29253:9:::1;::::0;29238:11:::1;::::0;::::1;::::0;29158:34;;-1:-1:-1;;;29253:9:0::1;::::0;;::::1;::::0;29220:29:::1;::::0;::::1;:15;:29;:::i;:::-;29219:43;;;;:::i;:::-;29313:9;::::0;29203:59;;-1:-1:-1;;;;29313:9:0;::::1;;;::::0;29281:17:::1;::::0;-1:-1:-1;;;29292:6:0;::::1;;;29203:59:::0;29281:17:::1;:::i;:::-;:28;::::0;29301:8:::1;29281:28;:::i;:::-;29280:42;;;;:::i;:::-;29273:49;;;;26966:1;29068:262:::0;;;;:::o;31834:364::-;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;31926:9:::1;31921:270;31941:15:::0;;::::1;31921:270;;;31978:11;31992:4;;31997:1;31992:7;;;;;;;:::i;:::-;;;;;;;31978:21;;32014:13;32030:12;32038:3;32030:7;:12::i;:::-;-1:-1:-1::0;;;;;32057:16:0;::::1;;::::0;;;:9:::1;:16;::::0;;;;:21;;32014:28;;-1:-1:-1;32077:1:0::1;::::0;32057:16;;;:21:::1;::::0;32077:1;;32057:21:::1;:::i;:::-;::::0;;;-1:-1:-1;;32100:12:0::1;::::0;;;:7:::1;:12;::::0;;;;;;;32093:19;;-1:-1:-1;;32093:19:0::1;::::0;;32134:6:::1;:11:::0;;;;;;32127:18:::1;32134:11:::0;32100:12;32127:18:::1;:::i;:::-;;;::::0;::::1;;;:::i;:::-;-1:-1:-1::0;32127:18:0::1;;::::0;::::1;::::0;::::1;;::::0;;-1:-1:-1;;32127:18:0;;;32160:19:::1;32168:3:::0;32173:5;32160:7:::1;:19::i;:::-;31963:228;;31958:3;;;;;:::i;:::-;;;;31921:270;;;;31834:364:::0;;:::o;38790:173::-;26840:135;;;38888:16;41275:24;;;:7;:24;;;;;;38888:16;;26840:135;-1:-1:-1;;;;;41275:24:0;26886:69;;;;-1:-1:-1;;;26886:69:0;;14664:2:1;26886:69:0;;;14646:21:1;14703:2;14683:18;;;14676:30;14742:34;14722:18;;;14715:62;-1:-1:-1;;;14793:18:1;;;14786:42;14845:19;;26886:69:0;14462:408:1;26886:69:0;-1:-1:-1;;38923:32:0::1;;;::::0;;;:15:::1;:32;::::0;;;;;-1:-1:-1;;;;;38923:32:0::1;::::0;38790:173::o;38384:398::-;38459:13;38475:16;38483:7;38475;:16::i;:::-;38459:32;;38516:5;-1:-1:-1;;;;;38510:11:0;:2;-1:-1:-1;;;;;38510:11:0;;;38502:57;;;;-1:-1:-1;;;38502:57:0;;17100:2:1;38502:57:0;;;17082:21:1;17139:2;17119:18;;;17112:30;17178:34;17158:18;;;17151:62;17249:3;17229:18;;;17222:31;17270:19;;38502:57:0;16898:397:1;38502:57:0;175:10;-1:-1:-1;;;;;38594:21:0;;;;:62;;-1:-1:-1;38619:37:0;38636:5;175:10;39130:156;:::i;38619:37::-;38572:168;;;;-1:-1:-1;;;38572:168:0;;17502:2:1;38572:168:0;;;17484:21:1;17541:2;17521:18;;;17514:30;17580:34;17560:18;;;17553:62;17651:26;17631:18;;;17624:54;17695:19;;38572:168:0;17300:420:1;38572:168:0;38753:21;38762:2;38766:7;38753:8;:21::i;33762:245::-;33849:8;;:24;;-1:-1:-1;;;33849:24:0;;-1:-1:-1;;;;;3010:55:1;;;33849:24:0;;;2992:74:1;33827:7:0;;33877:1;;33849:8;;;:18;;2965::1;;33849:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;33846:154;;33917:18;;33888:8;;:24;;-1:-1:-1;;;33888:24:0;;-1:-1:-1;;;;;3010:55:1;;;33888:24:0;;;2992:74:1;33888:48:0;;33917:18;33888:8;;:18;;2965::1;;33888:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:28;;:48::i;33846:154::-;-1:-1:-1;33987:1:0;;33762:245;-1:-1:-1;33762:245:0:o;33846:154::-;33762:245;;;:::o;27321:386::-;24898:9;;-1:-1:-1;;;;;24898:9:0;175:10;24898:25;24890:70;;;;-1:-1:-1;;;24890:70:0;;16350:2:1;24890:70:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;24890:70:0;16148:356:1;24890:70:0;27472:16:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;::::1;;::::0;;::::1;::::0;27432:26;;;;::::1;::::0;27462:27;27432:57:::1;;27424:103;;;::::0;-1:-1:-1;;;27424:103:0;;18116:2:1;27424:103:0::1;::::0;::::1;18098:21:1::0;18155:2;18135:18;;;18128:30;18194:34;18174:18;;;18167:62;18265:3;18245:18;;;18238:31;18286:19;;27424:103:0::1;17914:397:1::0;27424:103:0::1;27538:14;27555:11;;27538:28;;27577:95;27592:6;27600:8;27617:15;27642;27577:95;;;;;;;;;;;::::0;27664:7:::1;27577:14;:95::i;:::-;27698:1;27683:11;;:16;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;27321:386:0:o;37908:468::-;38009:41;175:10;38042:7;38009:18;:41::i;:::-;38001:103;;;;-1:-1:-1;;;38001:103:0;;18651:2:1;38001:103:0;;;18633:21:1;18690:2;18670:18;;;18663:30;18729:34;18709:18;;;18702:62;18800:19;18780:18;;;18773:47;18837:19;;38001:103:0;18449:413:1;38001:103:0;38119:17;;;;:25;;:17;:25;38115:254;;;38160:28;38170:4;38176:2;38180:7;38160:9;:28::i;38115:254::-;38251:11;;-1:-1:-1;;;;;38245:17:0;;;38251:11;;38245:17;38236:64;;;;-1:-1:-1;;;38236:64:0;;19069:2:1;38236:64:0;;;19051:21:1;19108:2;19088:18;;;19081:30;19147:34;19127:18;;;19120:62;19218:3;19198:18;;;19191:31;19239:19;;38236:64:0;18867:397:1;38236:64:0;38329:28;38339:4;38345:2;38349:7;38329:9;:28::i;31372:221::-;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;31528:57:::1;31543:3;31548:5;;31528:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;31528:57:0::1;::::0;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;31555:5;;-1:-1:-1;31562:6:0;;-1:-1:-1;31528:57:0;31570:9;;;;;;31528:57;::::1;31570:9:::0;;;;31528:57;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;31581:3:0;;-1:-1:-1;31528:14:0::1;::::0;-1:-1:-1;;31528:57:0:i:1;:::-;31372:221:::0;;;;;;;;:::o;31133:102::-;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;31211:16;;::::1;::::0;:10:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;;31133:102:::0;:::o;30998:127::-;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;31088:14:::1;::::0;;;:6:::1;:14;::::0;;;;;;;:29;;::::1;::::0;:23:::1;::::0;;::::1;::::0;:29;::::1;::::0;::::1;:::i;34274:347::-:0;34448:4;;:20;;-1:-1:-1;;;34448:20:0;;-1:-1:-1;;;;;3010:55:1;;;34448:20:0;;;2992:74:1;34337:7:0;;;;34419:50;;34448:4;;;;:14;;2965:18:1;;34448:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34419:8;;:24;;-1:-1:-1;;;34419:24:0;;-1:-1:-1;;;;;3010:55:1;;;34419:24:0;;;2992:74:1;34419:8:0;;;;:18;;2965::1;;34419:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:28;;:50::i;:::-;34400:69;;34482:22;34532:37;34553:15;34563:4;34553:9;:15::i;:::-;34532:16;;:20;:37::i;:::-;34515:54;34274:347;-1:-1:-1;;;;34274:347:0:o;37152:394::-;37255:17;;;;:25;;:17;:25;37251:278;;;37296:39;37313:4;37319:2;37323:7;37296:39;;;;;;;;;;;;:16;:39::i;37251:278::-;37408:14;;-1:-1:-1;;;;;37408:14:0;175:10;-1:-1:-1;;;;;37392:30:0;;37383:78;;;;-1:-1:-1;;;37383:78:0;;19471:2:1;37383:78:0;;;19453:21:1;19510:2;19490:18;;;19483:30;19549:34;19529:18;;;19522:62;19620:4;19600:18;;;19593:32;19642:19;;37383:78:0;19269:398:1;37383:78:0;37476:39;37493:4;37499:2;37503:7;37476:39;;;;;;;;;;;;:16;:39::i;29880:130::-;41275:24;;;29960:6;41275:24;;;:7;:24;;;;;;29946:3;;-1:-1:-1;;;;;41275:24:0;26886:69;;;;-1:-1:-1;;;26886:69:0;;14664:2:1;26886:69:0;;;14646:21:1;14703:2;14683:18;;;14676:30;14742:34;14722:18;;;14715:62;-1:-1:-1;;;14793:18:1;;;14786:42;14845:19;;26886:69:0;14462:408:1;26886:69:0;-1:-1:-1;;29986:11:0::1;::::0;;;:6:::1;:11;::::0;;;;:16:::1;;::::0;::::1;;::::0;29880:130::o;36947:197::-;26840:135;;;37041:13;41275:24;;;:7;:24;;;;;;37041:13;;26840:135;-1:-1:-1;;;;;41275:24:0;26886:69;;;;-1:-1:-1;;;26886:69:0;;14664:2:1;26886:69:0;;;14646:21:1;14703:2;14683:18;;;14676:30;14742:34;14722:18;;;14715:62;-1:-1:-1;;;14793:18:1;;;14786:42;14845:19;;26886:69:0;14462:408:1;26886:69:0;-1:-1:-1;;37086:24:0::1;;37067:16;37086:24:::0;;;:7:::1;:24;::::0;;;;;-1:-1:-1;;;;;37086:24:0::1;::::0;36947:197::o;30287:273::-;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;30424:18:::1;:40:::0;;;;30472:18:::1;:40:::0;30520:14:::1;:32:::0;30287:273::o;36732:207::-;36796:15;-1:-1:-1;;;;;36831:19:0;;36823:74;;;;-1:-1:-1;;;36823:74:0;;14253:2:1;36823:74:0;;;14235:21:1;14292:2;14272:18;;;14265:30;14331:34;14311:18;;;14304:62;14402:12;14382:18;;;14375:40;14432:19;;36823:74:0;14051:406:1;36823:74:0;-1:-1:-1;;;;;;36915:16:0;;;;;:9;:16;;;;;;;36732:207::o;8275:103::-;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;8340:30:::1;8367:1;8340:18;:30::i;:::-;8275:103::o:0;32480:284::-;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;32617:5:::1;:14:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;32642:14:0;;;;-1:-1:-1;;;32642:14:0;;::::1;::::0;::::1;;32692::::0;;32667;;;::::1;::::0;;;::::1;32692::::0;;;;;;-1:-1:-1;;;32692:14:0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;32717:5:::1;:14:::0;;;;::::1;32742::::0;;;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;32480:284::o;34015:251::-;34098:4;;:20;;-1:-1:-1;;;34098:20:0;;-1:-1:-1;;;;;3010:55:1;;;34098:20:0;;;2992:74:1;34076:7:0;;34122:1;;34098:4;;;:14;;2965:18:1;;34098:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:25;34095:154;;34172:14;;34147:4;;:20;;-1:-1:-1;;;34147:20:0;;-1:-1:-1;;;;;3010:55:1;;;34147:20:0;;;2992:74:1;34147:40:0;;34172:14;34147:4;;:14;;2965:18:1;;34147:20:0;2846:226:1;30568:107:0;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;30649:6:::1;:18:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;30649:18:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;30568:107::o;30018:132::-;41275:24;;;30099:6;41275:24;;;:7;:24;;;;;;30085:3;;-1:-1:-1;;;;;41275:24:0;26886:69;;;;-1:-1:-1;;;26886:69:0;;14664:2:1;26886:69:0;;;14646:21:1;14703:2;14683:18;;;14676:30;14742:34;14722:18;;;14715:62;-1:-1:-1;;;14793:18:1;;;14786:42;14845:19;;26886:69:0;14462:408:1;26886:69:0;-1:-1:-1;;30125:11:0::1;::::0;;;:6:::1;:11;::::0;;;;:17:::1;;::::0;-1:-1:-1;;;30125:17:0;::::1;;;::::0;30018:132::o;30158:121::-;-1:-1:-1;;;;;30256:15:0;;;;;;:5;:15;;;;;;;;;30249:22;;;;;;;;;;;;;;;;;30220:16;;30249:22;;;30256:15;30249:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30158:121;;;:::o;29338:389::-;29405:4;;29457:29;29512:22;29526:7;29512:13;:22::i;:::-;29497:37;;29550:9;29545:135;29569:12;:19;29565:1;:23;29545:135;;;29640:28;29652:12;29665:1;29652:15;;;;;;;;:::i;:::-;;;;;;;29640:11;:28::i;:::-;29625:43;;:12;:43;:::i;:::-;29610:58;-1:-1:-1;29590:3:0;;;;:::i;:::-;;;;29545:135;;;-1:-1:-1;29707:12:0;;29338:389;-1:-1:-1;;;29338:389:0:o;38971:151::-;39061:53;175:10;39094:8;39104:9;39061:18;:53::i;32206:266::-;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;-1:-1:-1;;;;;32303:22:0;::::1;32295:73;;;::::0;-1:-1:-1;;;32295:73:0;;19874:2:1;32295:73:0::1;::::0;::::1;19856:21:1::0;19913:2;19893:18;;;19886:30;19952:34;19932:18;;;19925:62;20023:8;20003:18;;;19996:36;20049:19;;32295:73:0::1;19672:402:1::0;32295:73:0::1;32413:9;::::0;32384:49:::1;::::0;-1:-1:-1;;;;;32384:49:0;;::::1;::::0;32413:9:::1;::::0;32384:49:::1;::::0;32413:9:::1;::::0;32384:49:::1;32444:9;:20:::0;;-1:-1:-1;;32444:20:0::1;-1:-1:-1::0;;;;;32444:20:0;;;::::1;::::0;;;::::1;::::0;;32206:266::o;27715:1040::-;41275:24;;;27818:4;41275:24;;;:7;:24;;;;;;27782:3;;-1:-1:-1;;;;;41275:24:0;26886:69;;;;-1:-1:-1;;;26886:69:0;;14664:2:1;26886:69:0;;;14646:21:1;14703:2;14683:18;;;14676:30;14742:34;14722:18;;;14715:62;-1:-1:-1;;;14793:18:1;;;14786:42;14845:19;;26886:69:0;14462:408:1;26886:69:0;24898:9:::1;::::0;-1:-1:-1;;;;;24898:9:0::1;175:10:::0;24898:25:::1;24890:70;;;::::0;-1:-1:-1;;;24890:70:0;;16350:2:1;24890:70:0::1;::::0;::::1;16332:21:1::0;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;24890:70:0::1;16148:356:1::0;24890:70:0::1;27859:7:::2;-1:-1:-1::0;;;;;27843:23:0::2;:12;27851:3;27843:7;:12::i;:::-;-1:-1:-1::0;;;;;27843:23:0::2;;27835:66;;;::::0;-1:-1:-1;;;27835:66:0;;20281:2:1;27835:66:0::2;::::0;::::2;20263:21:1::0;20320:2;20300:18;;;20293:30;20359:32;20339:18;;;20332:60;20409:18;;27835:66:0::2;20079:354:1::0;27835:66:0::2;27912:21;27936:11:::0;;;:6:::2;:11;::::0;;;;28008:9:::2;::::0;27993:11:::2;::::0;::::2;::::0;27936;;27912:21;28008:9:::2;::::0;;::::2;::::0;27975:29:::2;::::0;-1:-1:-1;;;27993:11:0;::::2;;;27975:15;:29;:::i;:::-;27974:43;;;;:::i;:::-;27958:59;;28047:1;28036:8;:12;28028:75;;;::::0;-1:-1:-1;;;28028:75:0;;20640:2:1;28028:75:0::2;::::0;::::2;20622:21:1::0;20679:2;20659:18;;;20652:30;20718:34;20698:18;;;20691:62;20789:20;20769:18;;;20762:48;20827:19;;28028:75:0::2;20438:414:1::0;28028:75:0::2;28209:9;::::0;28114:15:::2;::::0;-1:-1:-1;;;28209:9:0;::::2;;;::::0;-1:-1:-1;;;28186:6:0;::::2;;;28155:28;28175:7:::0;28155:19:::2;:28::i;:::-;:37;;;;:::i;:::-;28145:6;::::0;:48:::2;::::0;;-1:-1:-1;;;28145:6:0;::::2;;;:48;:::i;:::-;28133:61;::::0;:8;:61:::2;:::i;:::-;:72;::::0;28197:8:::2;28133:72;:::i;:::-;28132:86;;;;:::i;:::-;28114:104;;28250:1;28237:10;:14;28229:64;;;::::0;-1:-1:-1;;;28229:64:0;;21059:2:1;28229:64:0::2;::::0;::::2;21041:21:1::0;21098:2;21078:18;;;21071:30;21137:34;21117:18;;;21110:62;21208:7;21188:18;;;21181:35;21233:19;;28229:64:0::2;20857:401:1::0;28229:64:0::2;28301:19;28323:26;28341:7;28323:17;:26::i;:::-;28301:48;;28376:1;28363:10;:14;:36;;;;;28398:1;28381:14;:18;28363:36;28360:222;;;28473:4;28443:27;28456:14:::0;28443:10;:27:::2;:::i;:::-;:34;;;;:::i;:::-;28429:49;::::0;:10;:49:::2;:::i;:::-;28497:11;::::0;;;::::2;:37:::0;;;::::2;-1:-1:-1::0;;;28518:15:0::2;28497:37;;;;::::0;;-1:-1:-1;28497:11:0;;-1:-1:-1;28553:17:0::2;::::0;-1:-1:-1;;28553:17:0::2;28360:222;28595:14:::0;;28592:156:::2;;-1:-1:-1::0;28626:11:0::2;::::0;;;::::2;:37:::0;;;::::2;-1:-1:-1::0;;;28647:15:0::2;28626:37;;;;::::0;;-1:-1:-1;28626:11:0;-1:-1:-1;28678:17:0::2;;28592:156;28735:1;28728:8;;;;;;24971:1;27715:1040:::0;;;;;:::o;32772:516::-;32823:7;32869:2;32851:15;32861:4;32851:9;:15::i;:::-;:20;32848:41;;;-1:-1:-1;;32881:5:0;;;;;32772:516::o;32848:41::-;32921:2;32902:15;32912:4;32902:9;:15::i;:::-;:21;;:44;;;;;32944:2;32927:15;32937:4;32927:9;:15::i;:::-;:19;32902:44;32899:64;;;-1:-1:-1;;32956:5:0;;-1:-1:-1;;;32956:5:0;;;;;32772:516::o;32899:64::-;32995:2;32976:15;32986:4;32976:9;:15::i;:::-;:21;;:44;;;;;33018:2;33001:15;33011:4;33001:9;:15::i;:::-;:19;32976:44;32973:64;;;-1:-1:-1;;33030:5:0;;;;;;;;32772:516::o;32973:64::-;33069:2;33050:15;33060:4;33050:9;:15::i;:::-;:21;;:44;;;;;33092:2;33075:15;33085:4;33075:9;:15::i;:::-;:19;33050:44;33047:64;;;-1:-1:-1;;33104:5:0;;-1:-1:-1;;;33104:5:0;;;;;32772:516::o;33047:64::-;33143:2;33124:15;33134:4;33124:9;:15::i;:::-;:21;;:45;;;;;33166:3;33149:15;33159:4;33149:9;:15::i;:::-;:20;33124:45;33121:65;;;-1:-1:-1;;33179:5:0;;;;;32772:516::o;33121:65::-;33218:3;33199:15;33209:4;33199:9;:15::i;:::-;:22;33196:42;;-1:-1:-1;;33231:5:0;;-1:-1:-1;;;33231:5:0;;;;;32772:516::o;33196:42::-;-1:-1:-1;;33265:5:0;;;;;32772:516::o;31243:121::-;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;-1:-1:-1;;;;;31327:21:0;;;::::1;;::::0;;;:10:::1;:21;::::0;;;;:29;;-1:-1:-1;;31327:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31243:121::o;34823:210::-;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;34926:7:::1;:27:::0;;-1:-1:-1;;;;;34926:27:0;;::::1;;;::::0;;;::::1;;::::0;;34964:8:::1;:29:::0;;;;::::1;-1:-1:-1::0;;34964:29:0;;::::1;;::::0;;35004:4:::1;:21:::0;;;;;::::1;::::0;::::1;;::::0;;34823:210::o;27094:99::-;27146:4;27184:1;27170:11;;:15;;;;:::i;:::-;27163:22;;27094:99;:::o;39294:528::-;39418:41;175:10;39451:7;39418:18;:41::i;:::-;39410:103;;;;-1:-1:-1;;;39410:103:0;;18651:2:1;39410:103:0;;;18633:21:1;18690:2;18670:18;;;18663:30;18729:34;18709:18;;;18702:62;18800:19;18780:18;;;18773:47;18837:19;;39410:103:0;18449:413:1;39410:103:0;39528:17;;;;:25;;:17;:25;39524:291;;;39569:39;39583:4;39589:2;39593:7;39602:5;39569:13;:39::i;:::-;39524:291;;;39681:14;;-1:-1:-1;;;;;39681:14:0;175:10;-1:-1:-1;;;;;39665:30:0;;39656:77;;;;-1:-1:-1;;;39656:77:0;;19069:2:1;39656:77:0;;;19051:21:1;19108:2;19088:18;;;19081:30;19147:34;19127:18;;;19120:62;19218:3;19198:18;;;19191:31;19239:19;;39656:77:0;18867:397:1;39656:77:0;39762:39;39776:4;39782:2;39786:7;39795:5;39762:13;:39::i;:::-;39294:528;;;;:::o;34629:187::-;34691:7;34719:89;34784:23;34802:4;34784:17;:23::i;:::-;34719:60;34751:27;34773:4;34751:21;:27::i;:::-;34719;34741:4;34719:21;:27::i;35041:124::-;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;35125:14:::1;:32:::0;;-1:-1:-1;;35125:32:0::1;-1:-1:-1::0;;;;;35125:32:0;;;::::1;::::0;;;::::1;::::0;;35041:124::o;30683:99::-;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;30755:9:::1;:19:::0;;-1:-1:-1;;30755:19:0::1;;::::0;;::::1;::::0;;;::::1;::::0;;30683:99::o;28934:126::-;29007:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29007:14:0;28993:3;26894:12;26902:3;41275:24;;41251:4;41275:24;;;:7;:24;;;;;;-1:-1:-1;;;;;41275:24:0;:38;;;41186:135;26894:12;26886:69;;;;-1:-1:-1;;;26886:69:0;;14664:2:1;26886:69:0;;;14646:21:1;14703:2;14683:18;;;14676:30;14742:34;14722:18;;;14715:62;-1:-1:-1;;;14793:18:1;;;14786:42;14845:19;;26886:69:0;14462:408:1;26886:69:0;29041:11:::1;::::0;;;:6:::1;:11;::::0;;;;;;29034:18;;::::1;::::0;::::1;::::0;;;;;;;29041:11;;29034:18:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;29034:18:0;;;-1:-1:-1;;29034:18:0::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;29034:18:0;;::::1;;::::0;;;;;;28934:126;-1:-1:-1;;;28934:126:0:o;36431:293::-;36498:13;36524:20;36547:6;:23;36561:7;36547:23;;;;;;;;;;;;;36524:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;36524:46:0;;;-1:-1:-1;;36524:46:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;36524:46:0;;;;;;;;;36590:14;;;36584:28;36524:46;;-1:-1:-1;36581:136:0;;36641:10;36634:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36431:293;;;:::o;36581:136::-;36691:14;;;;36431:293;-1:-1:-1;;36431:293:0:o;26159:29::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28763:163::-;28844:23;28870:10;;;:6;:10;;;;;28891:27;:16;;;28910:8;;28891:27;:::i;:::-;;28833:93;28763:163;;;:::o;26983:103::-;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;27051:17:::1;:27:::0;;-1:-1:-1;;27051:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26983:103::o;29735:137::-;29815:13;29801:3;26894:12;26902:3;41275:24;;41251:4;41275:24;;;:7;:24;;;;;;-1:-1:-1;;;;;41275:24:0;:38;;;41186:135;26894:12;26886:69;;;;-1:-1:-1;;;26886:69:0;;14664:2:1;26886:69:0;;;14646:21:1;14703:2;14683:18;;;14676:30;14742:34;14722:18;;;14715:62;-1:-1:-1;;;14793:18:1;;;14786:42;14845:19;;26886:69:0;14462:408:1;26886:69:0;29848:11:::1;::::0;;;:6:::1;:11;::::0;;;;29841:23;;::::1;::::0;::::1;:::i;8533:201::-:0;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;-1:-1:-1;;;;;8622:22:0;::::1;8614:73;;;::::0;-1:-1:-1;;;8614:73:0;;19874:2:1;8614:73:0::1;::::0;::::1;19856:21:1::0;19913:2;19893:18;;;19886:30;19952:34;19932:18;;;19925:62;20023:8;20003:18;;;19996:36;20049:19;;8614:73:0::1;19672:402:1::0;8614:73:0::1;8698:28;8717:8;8698:18;:28::i;:::-;8533:201:::0;:::o;37554:346::-;37678:16;;;;;;;;;;;;;;;;;;37639:25;;;;;;37668:27;37639:56;;37631:102;;;;-1:-1:-1;;;37631:102:0;;18116:2:1;37631:102:0;;;18098:21:1;18155:2;18135:18;;;18128:30;18194:34;18174:18;;;18167:62;18265:3;18245:18;;;18238:31;18286:19;;37631:102:0;17914:397:1;37631:102:0;37767:10;37752:11;;;;:7;:11::i;:::-;-1:-1:-1;;;;;37752:25:0;;37744:68;;;;-1:-1:-1;;;37744:68:0;;20281:2:1;37744:68:0;;;20263:21:1;20320:2;20300:18;;;20293:30;20359:32;20339:18;;;20332:60;20409:18;;37744:68:0;20079:354:1;37744:68:0;37849:10;;;37823:23;37849:10;;;:6;:10;;;;;;;;37870:22;;37849:10;;37870:22;;37849:10;;37870:22;;;;:::i;33531:215::-;33619:7;;:23;;-1:-1:-1;;;33619:23:0;;-1:-1:-1;;;;;3010:55:1;;;33619:23:0;;;2992:74:1;33596:7:0;;33646:1;;33619:7;;;;;;;;:17;;2965:18:1;;33619:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:28;33616:123;;-1:-1:-1;;33657:18:0;;;33531:215::o;31601:225::-;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;31668:13:::1;31684:12;31692:3;31684:7;:12::i;:::-;-1:-1:-1::0;;;;;31707:16:0;::::1;;::::0;;;:9:::1;:16;::::0;;;;:21;;31668:28;;-1:-1:-1;31727:1:0::1;::::0;31707:16;;;:21:::1;::::0;31727:1;;31707:21:::1;:::i;:::-;::::0;;;-1:-1:-1;;31746:12:0::1;::::0;;;:7:::1;:12;::::0;;;;;;;31739:19;;-1:-1:-1;;31739:19:0::1;::::0;;31776:6:::1;:11:::0;;;;;;31769:18:::1;31776:11:::0;31746:12;31769:18:::1;:::i;:::-;;;::::0;::::1;;;:::i;:::-;-1:-1:-1::0;31769:18:0::1;;::::0;::::1;::::0;::::1;;::::0;;-1:-1:-1;;31769:18:0;;;31798:19:::1;31806:3:::0;31811:5;31798:7:::1;:19::i;30790:200::-:0;7670:7;7697:6;-1:-1:-1;;;;;7697:6:0;175:10;7844:23;7836:68;;;;-1:-1:-1;;;7836:68:0;;16350:2:1;7836:68:0;;;16332:21:1;;;16369:18;;;16362:30;16428:34;16408:18;;;16401:62;16480:18;;7836:68:0;16148:356:1;7836:68:0;30899:6:::1;:18:::0;;30928:9:::1;:19:::0;;-1:-1:-1;;30928:19:0::1;30899:18;30928:19:::0;;::::1;;::::0;;30958:24:::1;::::0;;::::1;-1:-1:-1::0;;;30958:24:0::1;::::0;30899:18;;;::::1;-1:-1:-1::0;;;30899:18:0::1;30958:24:::0;;;;-1:-1:-1;;;;;30958:24:0;;;;;;;::::1;::::0;;30790:200::o;35709:498::-;-1:-1:-1;;;;;35809:15:0;;35777:29;35809:15;;;:5;:15;;;;;35849:18;;35809:15;;35849:18;;35921:134;35945:6;35941:1;:10;35921:134;;;35994:3;35976:11;35988:1;35976:14;;;;;;;;:::i;:::-;;;;;;;;;:21;35973:71;;;36027:1;36018:10;;35973:71;35953:3;;;;:::i;:::-;;;;35921:134;;;-1:-1:-1;36079:18:0;;36069:28;;36065:41;;36099:7;;;35709:498;;:::o;36065:41::-;36148:11;36160:10;36169:1;36160:6;:10;:::i;:::-;36148:23;;;;;;;;:::i;:::-;;;;;;;;;36126:11;36138:6;36126:19;;;;;;;;:::i;:::-;;;;;;;;:45;;;;36182:11;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;35766:441;;;35709:498;;:::o;40724:167::-;40791:32;;;;;;;:15;:32;;;;;:37;;-1:-1:-1;;40791:37:0;-1:-1:-1;;;;;40791:37:0;;;;;;;;:32;;40853:16;40791:32;40853:7;:16::i;:::-;-1:-1:-1;;;;;40844:39:0;;;;;;;;;;;40724:167;;:::o;3785:98::-;3843:7;3870:5;3874:1;3870;:5;:::i;:::-;3863:12;3785:98;-1:-1:-1;;;3785:98:0:o;35173:528::-;41275:24;;;41251:4;41275:24;;;:7;:24;;;;;;-1:-1:-1;;;;;41275:24:0;:38;35318:56;;;;-1:-1:-1;;;35318:56:0;;21654:2:1;35318:56:0;;;21636:21:1;21693:2;21673:18;;;21666:30;21732:32;21712:18;;;21705:60;21782:18;;35318:56:0;21452:354:1;35318:56:0;35399:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35385:11:0;;;:6;:11;;;;;;:170;;;;35399:156;;35385:11;;:170;;:11;;:170;;;:::i;:::-;-1:-1:-1;35385:170:0;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;35385:170:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;35385:170:0;-1:-1:-1;;35385:170:0;;;;;;;;;;;;;;;;;35566:12;;;:7;:12;;;;;;;:18;;-1:-1:-1;;;;;35566:18:0;;-1:-1:-1;;35566:18:0;;;;;;;;35595:14;;;;;;;;;:19;;35385:170;;;35595:19;;35385:170;;35595:19;:::i;:::-;;;;-1:-1:-1;;;;;;;35625:10:0;;;;;;:5;:10;;;;;;;;:20;;;;;;;;;;;;;;;;;;;35663:30;35641:3;;35625:10;;35663:30;;35625:10;;35663:30;35173:528;;;;;;:::o;40899:279::-;26840:135;;;41014:4;41275:24;;;:7;:24;;;;;;41014:4;;26840:135;-1:-1:-1;;;;;41275:24:0;26886:69;;;;-1:-1:-1;;;26886:69:0;;14664:2:1;26886:69:0;;;14646:21:1;14703:2;14683:18;;;14676:30;14742:34;14722:18;;;14715:62;-1:-1:-1;;;14793:18:1;;;14786:42;14845:19;;26886:69:0;14462:408:1;26886:69:0;41031:13:::1;41047:16;41055:7;41047;:16::i;:::-;41031:32;;41093:5;-1:-1:-1::0;;;;;41082:16:0::1;:7;-1:-1:-1::0;;;;;41082:16:0::1;;:51;;;;41126:7;-1:-1:-1::0;;;;;41102:31:0::1;:20;41114:7;41102:11;:20::i;:::-;-1:-1:-1::0;;;;;41102:31:0::1;;41082:51;:87;;;-1:-1:-1::0;;;;;;39243:25:0;;;39219:4;39243:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;41137:32:::1;41074:96:::0;40899:279;-1:-1:-1;;;;;40899:279:0:o;40067:649::-;40203:7;-1:-1:-1;;;;;40230:24:0;;:16;40203:7;40230;:16::i;:::-;-1:-1:-1;;;;;40230:24:0;;40222:74;;;;-1:-1:-1;;;40222:74:0;;22013:2:1;40222:74:0;;;21995:21:1;22052:2;22032:18;;;22025:30;22091:34;22071:18;;;22064:62;22162:7;22142:18;;;22135:35;22187:19;;40222:74:0;21811:401:1;40222:74:0;-1:-1:-1;;;;;40316:14:0;;;;;;:10;:14;;;;;;;;40315:15;40307:75;;;;-1:-1:-1;;;40307:75:0;;22419:2:1;40307:75:0;;;22401:21:1;22458:2;22438:18;;;22431:30;22497:34;22477:18;;;22470:62;22568:17;22548:18;;;22541:45;22603:19;;40307:75:0;22217:411:1;40307:75:0;-1:-1:-1;;;;;40402:16:0;;;;;;:10;:16;;;;;;;;40401:17;40393:77;;;;-1:-1:-1;;;40393:77:0;;22835:2:1;40393:77:0;;;22817:21:1;22874:2;22854:18;;;22847:30;22913:34;22893:18;;;22886:62;22984:17;22964:18;;;22957:45;23019:19;;40393:77:0;22633:411:1;40393:77:0;40483:29;40500:1;40504:7;40483:8;:29::i;:::-;-1:-1:-1;;;;;40525:15:0;;;;;;:9;:15;;;;;:20;;40544:1;;40525:15;:20;;40544:1;;40525:20;:::i;:::-;;;;-1:-1:-1;;;;;;;40556:13:0;;;;;;:9;:13;;;;;:18;;40573:1;;40556:13;:18;;40573:1;;40556:18;:::i;:::-;;;;-1:-1:-1;;40585:12:0;;;;;;;:7;:12;;;;;;;;:17;;-1:-1:-1;;40585:17:0;-1:-1:-1;;;;;40585:17:0;;;;;;;;40615:9;;:5;:9;;;;:19;;-1:-1:-1;40615:19:0;;;;;;;;;;;;;40645:18;;40658:4;40645:7;:18::i;:::-;40700:7;40696:2;-1:-1:-1;;;;;40681:27:0;40690:4;-1:-1:-1;;;;;40681:27:0;;;;;;;;;;;40172:544;40067:649;;;:::o;3047:98::-;3105:7;3132:5;3136:1;3132;:5;:::i;4184:98::-;4242:7;4269:5;4273:1;4269;:5;:::i;8894:191::-;8968:16;8987:6;;-1:-1:-1;;;;;9004:17:0;;;-1:-1:-1;;9004:17:0;;;;;;9037:40;;8987:6;;;;;;;9037:40;;8968:16;9037:40;8957:128;8894:191;:::o;41601:307::-;41748:8;-1:-1:-1;;;;;41739:17:0;:5;-1:-1:-1;;;;;41739:17:0;;;41731:55;;;;-1:-1:-1;;;41731:55:0;;23251:2:1;41731:55:0;;;23233:21:1;23290:2;23270:18;;;23263:30;23329:27;23309:18;;;23302:55;23374:18;;41731:55:0;23049:349:1;41731:55:0;-1:-1:-1;;;;;41797:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;41797:46:0;;;;;;;;;;41859:41;;1228::1;;;41859::0;;1201:18:1;41859:41:0;;;;;;;41601:307;;;:::o;41329:264::-;41435:28;41445:4;41451:2;41455:7;41435:9;:28::i;:::-;41482:48;41505:4;41511:2;41515:7;41524:5;41482:22;:48::i;:::-;41474:111;;;;-1:-1:-1;;;41474:111:0;;23605:2:1;41474:111:0;;;23587:21:1;23644:2;23624:18;;;23617:30;23683:34;23663:18;;;23656:62;23754:20;23734:18;;;23727:48;23792:19;;41474:111:0;23403:414:1;41916:756:0;42028:4;-1:-1:-1;;;;;42049:13:0;;10025:20;10073:8;42045:620;;42085:72;;;;;-1:-1:-1;;;;;42085:36:0;;;;;:72;;175:10;;42136:4;;42142:7;;42151:5;;42085:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42085:72:0;;;;;;;;-1:-1:-1;;42085:72:0;;;;;;;;;;;;:::i;:::-;;;42081:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42327:13:0;;42323:272;;42370:60;;-1:-1:-1;;;42370:60:0;;23605:2:1;42370:60:0;;;23587:21:1;23644:2;23624:18;;;23617:30;23683:34;23663:18;;;23656:62;23754:20;23734:18;;;23727:48;23792:19;;42370:60:0;23403:414:1;42323:272:0;42545:6;42539:13;42530:6;42526:2;42522:15;42515:38;42081:529;42208:51;;42218:41;42208:51;;-1:-1:-1;42201:58:0;;42045:620;-1:-1:-1;42649:4:0;41916:756;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:196:1;82:20;;-1:-1:-1;;;;;131:54:1;;121:65;;111:93;;200:1;197;190:12;215:254;283:6;291;344:2;332:9;323:7;319:23;315:32;312:52;;;360:1;357;350:12;312:52;383:29;402:9;383:29;:::i;:::-;373:39;459:2;444:18;;;;431:32;;-1:-1:-1;;;215:254:1:o;656:177::-;741:66;734:5;730:78;723:5;720:89;710:117;;823:1;820;813:12;838:245;896:6;949:2;937:9;928:7;924:23;920:32;917:52;;;965:1;962;955:12;917:52;1004:9;991:23;1023:30;1047:5;1023:30;:::i;1280:180::-;1339:6;1392:2;1380:9;1371:7;1367:23;1363:32;1360:52;;;1408:1;1405;1398:12;1360:52;-1:-1:-1;1431:23:1;;1280:180;-1:-1:-1;1280:180:1:o;1465:615::-;1551:6;1559;1612:2;1600:9;1591:7;1587:23;1583:32;1580:52;;;1628:1;1625;1618:12;1580:52;1668:9;1655:23;1697:18;1738:2;1730:6;1727:14;1724:34;;;1754:1;1751;1744:12;1724:34;1792:6;1781:9;1777:22;1767:32;;1837:7;1830:4;1826:2;1822:13;1818:27;1808:55;;1859:1;1856;1849:12;1808:55;1899:2;1886:16;1925:2;1917:6;1914:14;1911:34;;;1941:1;1938;1931:12;1911:34;1994:7;1989:2;1979:6;1976:1;1972:14;1968:2;1964:23;1960:32;1957:45;1954:65;;;2015:1;2012;2005:12;1954:65;2046:2;2038:11;;;;;2068:6;;-1:-1:-1;1465:615:1;;-1:-1:-1;;;;1465:615:1:o;2085:531::-;2127:3;2165:5;2159:12;2192:6;2187:3;2180:19;2217:1;2227:162;2241:6;2238:1;2235:13;2227:162;;;2303:4;2359:13;;;2355:22;;2349:29;2331:11;;;2327:20;;2320:59;2256:12;2227:162;;;2407:6;2404:1;2401:13;2398:87;;;2473:1;2466:4;2457:6;2452:3;2448:16;2444:27;2437:38;2398:87;-1:-1:-1;2530:2:1;2518:15;-1:-1:-1;;2514:88:1;2505:98;;;;2605:4;2501:109;;2085:531;-1:-1:-1;;2085:531:1:o;2621:220::-;2770:2;2759:9;2752:21;2733:4;2790:45;2831:2;2820:9;2816:18;2808:6;2790:45;:::i;3282:186::-;3341:6;3394:2;3382:9;3373:7;3369:23;3365:32;3362:52;;;3410:1;3407;3400:12;3362:52;3433:29;3452:9;3433:29;:::i;3473:184::-;-1:-1:-1;;;3522:1:1;3515:88;3622:4;3619:1;3612:15;3646:4;3643:1;3636:15;3662:691;3727:5;3757:18;3798:2;3790:6;3787:14;3784:40;;;3804:18;;:::i;:::-;3938:2;3932:9;4004:2;3992:15;;-1:-1:-1;;3988:24:1;;;4014:2;3984:33;3980:42;3968:55;;;4038:18;;;4058:22;;;4035:46;4032:72;;;4084:18;;:::i;:::-;4124:10;4120:2;4113:22;4153:6;4144:15;;4183:6;4175;4168:22;4223:3;4214:6;4209:3;4205:16;4202:25;4199:45;;;4240:1;4237;4230:12;4199:45;4290:6;4285:3;4278:4;4270:6;4266:17;4253:44;4345:1;4338:4;4329:6;4321;4317:19;4313:30;4306:41;;;;3662:691;;;;;:::o;4358:222::-;4401:5;4454:3;4447:4;4439:6;4435:17;4431:27;4421:55;;4472:1;4469;4462:12;4421:55;4494:80;4570:3;4561:6;4548:20;4541:4;4533:6;4529:17;4494:80;:::i;4585:396::-;4663:6;4671;4724:2;4712:9;4703:7;4699:23;4695:32;4692:52;;;4740:1;4737;4730:12;4692:52;4763:29;4782:9;4763:29;:::i;:::-;4753:39;;4843:2;4832:9;4828:18;4815:32;4870:18;4862:6;4859:30;4856:50;;;4902:1;4899;4892:12;4856:50;4925;4967:7;4958:6;4947:9;4943:22;4925:50;:::i;:::-;4915:60;;;4585:396;;;;;:::o;4986:328::-;5063:6;5071;5079;5132:2;5120:9;5111:7;5107:23;5103:32;5100:52;;;5148:1;5145;5138:12;5100:52;5171:29;5190:9;5171:29;:::i;:::-;5161:39;;5219:38;5253:2;5242:9;5238:18;5219:38;:::i;:::-;5209:48;;5304:2;5293:9;5289:18;5276:32;5266:42;;4986:328;;;;;:::o;5542:348::-;5594:8;5604:6;5658:3;5651:4;5643:6;5639:17;5635:27;5625:55;;5676:1;5673;5666:12;5625:55;-1:-1:-1;5699:20:1;;5742:18;5731:30;;5728:50;;;5774:1;5771;5764:12;5728:50;5811:4;5803:6;5799:17;5787:29;;5863:3;5856:4;5847:6;5839;5835:19;5831:30;5828:39;5825:59;;;5880:1;5877;5870:12;5825:59;5542:348;;;;;:::o;5895:171::-;5962:20;;6022:18;6011:30;;6001:41;;5991:69;;6056:1;6053;6046:12;6071:1010;6197:6;6205;6213;6221;6229;6237;6245;6253;6306:3;6294:9;6285:7;6281:23;6277:33;6274:53;;;6323:1;6320;6313:12;6274:53;6359:9;6346:23;6336:33;;6420:2;6409:9;6405:18;6392:32;6443:18;6484:2;6476:6;6473:14;6470:34;;;6500:1;6497;6490:12;6470:34;6539:59;6590:7;6581:6;6570:9;6566:22;6539:59;:::i;:::-;6617:8;;-1:-1:-1;6513:85:1;-1:-1:-1;6513:85:1;;-1:-1:-1;6671:37:1;6704:2;6689:18;;6671:37;:::i;:::-;6661:47;;6727:37;6760:2;6749:9;6745:18;6727:37;:::i;:::-;6717:47;;6817:3;6806:9;6802:19;6789:33;6773:49;;6847:2;6837:8;6834:16;6831:36;;;6863:1;6860;6853:12;6831:36;;6902:61;6955:7;6944:8;6933:9;6929:24;6902:61;:::i;:::-;6982:8;;-1:-1:-1;6876:87:1;-1:-1:-1;7036:39:1;;-1:-1:-1;7070:3:1;7055:19;;7036:39;:::i;:::-;7026:49;;6071:1010;;;;;;;;;;;:::o;7086:322::-;7155:6;7208:2;7196:9;7187:7;7183:23;7179:32;7176:52;;;7224:1;7221;7214:12;7176:52;7264:9;7251:23;7297:18;7289:6;7286:30;7283:50;;;7329:1;7326;7319:12;7283:50;7352;7394:7;7385:6;7374:9;7370:22;7352:50;:::i;7413:390::-;7491:6;7499;7552:2;7540:9;7531:7;7527:23;7523:32;7520:52;;;7568:1;7565;7558:12;7520:52;7604:9;7591:23;7581:33;;7665:2;7654:9;7650:18;7637:32;7692:18;7684:6;7681:30;7678:50;;;7724:1;7721;7714:12;7808:316;7885:6;7893;7901;7954:2;7942:9;7933:7;7929:23;7925:32;7922:52;;;7970:1;7967;7960:12;7922:52;-1:-1:-1;;7993:23:1;;;8063:2;8048:18;;8035:32;;-1:-1:-1;8114:2:1;8099:18;;;8086:32;;7808:316;-1:-1:-1;7808:316:1:o;8129:547::-;8227:6;8235;8243;8251;8259;8267;8320:3;8308:9;8299:7;8295:23;8291:33;8288:53;;;8337:1;8334;8327:12;8288:53;8360:28;8378:9;8360:28;:::i;:::-;8350:38;;8407:37;8440:2;8429:9;8425:18;8407:37;:::i;:::-;8397:47;;8463:37;8496:2;8485:9;8481:18;8463:37;:::i;:::-;8453:47;;8519:37;8552:2;8541:9;8537:18;8519:37;:::i;:::-;8509:47;;8575:38;8608:3;8597:9;8593:19;8575:38;:::i;:::-;8565:48;;8632:38;8665:3;8654:9;8650:19;8632:38;:::i;:::-;8622:48;;8129:547;;;;;;;;:::o;8681:184::-;8739:6;8792:2;8780:9;8771:7;8767:23;8763:32;8760:52;;;8808:1;8805;8798:12;8760:52;8831:28;8849:9;8831:28;:::i;8870:632::-;9041:2;9093:21;;;9163:13;;9066:18;;;9185:22;;;9012:4;;9041:2;9264:15;;;;9238:2;9223:18;;;9012:4;9307:169;9321:6;9318:1;9315:13;9307:169;;;9382:13;;9370:26;;9451:15;;;;9416:12;;;;9343:1;9336:9;9307:169;;;-1:-1:-1;9493:3:1;;8870:632;-1:-1:-1;;;;;;8870:632:1:o;9507:160::-;9572:20;;9628:13;;9621:21;9611:32;;9601:60;;9657:1;9654;9647:12;9672:254;9737:6;9745;9798:2;9786:9;9777:7;9773:23;9769:32;9766:52;;;9814:1;9811;9804:12;9766:52;9837:29;9856:9;9837:29;:::i;:::-;9827:39;;9885:35;9916:2;9905:9;9901:18;9885:35;:::i;:::-;9875:45;;9672:254;;;;;:::o;9931:334::-;10008:6;10016;10024;10077:2;10065:9;10056:7;10052:23;10048:32;10045:52;;;10093:1;10090;10083:12;10045:52;10116:29;10135:9;10116:29;:::i;:::-;10106:39;;10164:38;10198:2;10187:9;10183:18;10164:38;:::i;:::-;10154:48;;10221:38;10255:2;10244:9;10240:18;10221:38;:::i;:::-;10211:48;;9931:334;;;;;:::o;10270:667::-;10365:6;10373;10381;10389;10442:3;10430:9;10421:7;10417:23;10413:33;10410:53;;;10459:1;10456;10449:12;10410:53;10482:29;10501:9;10482:29;:::i;:::-;10472:39;;10530:38;10564:2;10553:9;10549:18;10530:38;:::i;:::-;10520:48;;10615:2;10604:9;10600:18;10587:32;10577:42;;10670:2;10659:9;10655:18;10642:32;10697:18;10689:6;10686:30;10683:50;;;10729:1;10726;10719:12;10683:50;10752:22;;10805:4;10797:13;;10793:27;-1:-1:-1;10783:55:1;;10834:1;10831;10824:12;10783:55;10857:74;10923:7;10918:2;10905:16;10900:2;10896;10892:11;10857:74;:::i;:::-;10847:84;;;10270:667;;;;;;;:::o;10942:899::-;11121:2;11110:9;11103:21;11084:4;11159:6;11153:13;11202:4;11197:2;11186:9;11182:18;11175:32;11230:52;11277:3;11266:9;11262:19;11248:12;11230:52;:::i;:::-;11216:66;;11331:2;11323:6;11319:15;11313:22;-1:-1:-1;;11387:9:1;11379:6;11375:22;11371:95;11366:2;11355:9;11351:18;11344:123;11490:41;11524:6;11508:14;11490:41;:::i;:::-;11476:55;;;11585:2;11577:6;11573:15;11567:22;11562:2;11551:9;11547:18;11540:50;11639:2;11631:6;11627:15;11621:22;11662:18;11737:2;11721:14;11717:23;11711:3;11700:9;11696:19;11689:52;11808:2;11801:3;11793:6;11789:16;11783:23;11779:32;11772:4;11761:9;11757:20;11750:62;;;11829:6;11821:14;;;10942:899;;;;:::o;12293:260::-;12361:6;12369;12422:2;12410:9;12401:7;12397:23;12393:32;12390:52;;;12438:1;12435;12428:12;12390:52;12461:29;12480:9;12461:29;:::i;:::-;12451:39;;12509:38;12543:2;12532:9;12528:18;12509:38;:::i;12558:479::-;12638:6;12646;12654;12707:2;12695:9;12686:7;12682:23;12678:32;12675:52;;;12723:1;12720;12713:12;12675:52;12759:9;12746:23;12736:33;;12820:2;12809:9;12805:18;12792:32;12847:18;12839:6;12836:30;12833:50;;;12879:1;12876;12869:12;12833:50;12918:59;12969:7;12960:6;12949:9;12945:22;12918:59;:::i;:::-;12558:479;;12996:8;;-1:-1:-1;12892:85:1;;-1:-1:-1;;;;12558:479:1:o;13042:180::-;13098:6;13151:2;13139:9;13130:7;13126:23;13122:32;13119:52;;;13167:1;13164;13157:12;13119:52;13190:26;13206:9;13190:26;:::i;13227:394::-;13304:6;13312;13365:2;13353:9;13344:7;13340:23;13336:32;13333:52;;;13381:1;13378;13371:12;13333:52;13404:28;13422:9;13404:28;:::i;13626:420::-;13700:6;13708;13716;13769:2;13757:9;13748:7;13744:23;13740:32;13737:52;;;13785:1;13782;13775:12;13737:52;13808:28;13826:9;13808:28;:::i;:::-;13798:38;;13855:37;13888:2;13877:9;13873:18;13855:37;:::i;:::-;13845:47;;13942:2;13931:9;13927:18;13914:32;13986:10;13979:5;13975:22;13968:5;13965:33;13955:61;;14012:1;14009;14002:12;13955:61;14035:5;14025:15;;;13626:420;;;;;:::o;14875:437::-;14954:1;14950:12;;;;14997;;;15018:61;;15072:4;15064:6;15060:17;15050:27;;15018:61;15125:2;15117:6;15114:14;15094:18;15091:38;15088:218;;;-1:-1:-1;;;15159:1:1;15152:88;15263:4;15260:1;15253:15;15291:4;15288:1;15281:15;15317:184;-1:-1:-1;;;15366:1:1;15359:88;15466:4;15463:1;15456:15;15490:4;15487:1;15480:15;15506:125;15546:4;15574:1;15571;15568:8;15565:34;;;15579:18;;:::i;:::-;-1:-1:-1;15616:9:1;;15506:125::o;15636:274::-;15676:1;15702;15692:189;;-1:-1:-1;;;15734:1:1;15727:88;15838:4;15835:1;15828:15;15866:4;15863:1;15856:15;15692:189;-1:-1:-1;15895:9:1;;15636:274::o;15915:228::-;15955:7;16081:1;-1:-1:-1;;16009:74:1;16006:1;16003:81;15998:1;15991:9;15984:17;15980:105;15977:131;;;16088:18;;:::i;:::-;-1:-1:-1;16128:9:1;;15915:228::o;16509:184::-;-1:-1:-1;;;16558:1:1;16551:88;16658:4;16655:1;16648:15;16682:4;16679:1;16672:15;16698:195;16737:3;-1:-1:-1;;16761:5:1;16758:77;16755:103;;;16838:18;;:::i;:::-;-1:-1:-1;16885:1:1;16874:13;;16698:195::o;17725:184::-;17795:6;17848:2;17836:9;17827:7;17823:23;17819:32;17816:52;;;17864:1;17861;17854:12;17816:52;-1:-1:-1;17887:16:1;;17725:184;-1:-1:-1;17725:184:1:o;18316:128::-;18356:3;18387:1;18383:6;18380:1;18377:13;18374:39;;;18393:18;;:::i;:::-;-1:-1:-1;18429:9:1;;18316:128::o;21263:184::-;-1:-1:-1;;;21312:1:1;21305:88;21412:4;21409:1;21402:15;21436:4;21433:1;21426:15;23822:512;24016:4;-1:-1:-1;;;;;24126:2:1;24118:6;24114:15;24103:9;24096:34;24178:2;24170:6;24166:15;24161:2;24150:9;24146:18;24139:43;;24218:6;24213:2;24202:9;24198:18;24191:34;24261:3;24256:2;24245:9;24241:18;24234:31;24282:46;24323:3;24312:9;24308:19;24300:6;24282:46;:::i;:::-;24274:54;23822:512;-1:-1:-1;;;;;;23822:512:1:o;24339:249::-;24408:6;24461:2;24449:9;24440:7;24436:23;24432:32;24429:52;;;24477:1;24474;24467:12;24429:52;24509:9;24503:16;24528:30;24552:5;24528:30;:::i

Swarm Source

ipfs://3a47577a6bc587ef134963e483cc7e18984bd7e72c60cd2c5188234a7dbe3a85
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.